我有一个应用程序安全组和一个数据库安全组。这些实例位于不同的子网中。
如果我将两个安全组都设置为:
传入 - 所有流量 - 来源:0.0.0.0/0 传出 - 所有流量 - 来源:0.0.0.0/0
那么我就无法让流量流动。我试图排除安全组的问题。上述规则是否足够,还是我还必须明确授予安全组 ID 作为所有传入/传出的流量?
答案1
在 VPC 中,实例与其他实例通信时存在两个问题,听起来您混淆了这两个问题。
一个很常见的例子是将您的 Web 实例放在公共子网中,将数据库放在私有子网中。(场景 2:http://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/VPC_Scenario2.html)
您可以尝试使用路由规则来控制访问,但您可能不需要这样做。因此,请确保两个子网可以相互通信。(规则 1:切勿干扰默认路由)
对于您的 Web 实例,您可能想要打开端口 80 - 将此安全组称为 WebAccess,它允许每个人访问端口 80,并且 ssh 可能对您的 IP 开放。
对于数据库实例,您希望 Web 实例能够与其通信,但其他实例则无法与其通信。因此,创建另一个安全组,将其命名为 DBAccess,并打开端口 3306 (mysql)。授予 WebAccess 组的访问权限,现在您就可以开始了。
如果要使用 ping 进行测试,可以创建自定义 ICMP 规则来允许它。默认情况下,ping 未启用。