我有一个EC2实例,可以连接到我的RDS实例,但其弹性IP不会出现在白名单IP的数据库安全组中。
这怎么可能?
我问,因为我创建了一个新实例,我也希望将其列入白名单,只是输入弹性IP似乎不是处理事情的方式,因为其他服务器都没有列出其弹性IP。
提前致谢,
答案 0 :(得分:13)
这里可能有两个原因:
Security Group Rules不一定仅将IP地址指定为流量来源,而是定期引用其他安全组:
源可以是单独的IP地址(203.0.113.1),范围是 地址(例如,203.0.113.0 / 24),或EC2安全组。该 安全组可以是您的AWS账户中的另一个组,一个组 另一个AWS账户或安全组本身。
通过指定安全组作为源,允许传入 来自属于源安全组的所有实例的流量。 [...]如果您正在创建帐户,则可以在帐户中指定其他安全组 三层Web服务(请参阅创建三层Web服务)。
[强调我的]
因此,Amazon RDS实例的数据库安全组可能会引用用于Amazon EC2实例的EC2安全组,这意味着已经存在相应的访问权限。有关此概念/方法的详细信息,请参阅我对AWS - Configuring access to EC2 instance from Beanstalk App的回答。
您可能会看到AWS DNS基础架构的一个鲜为人知但又重要但非常有用的功能的效果,请参阅第Public and Private Addresses页上的Using Instance IP Addresses部分:
Amazon EC2还提供内部DNS名称和公有DNS名称 分别映射到私有和公共IP地址。该 内部DNS名称只能在Amazon EC2中解析。 公众 DNS名称解析为Amazon EC2外部的公共IP地址 网络和Amazon EC2网络中的私有IP地址。 [强调我的]
也就是说,当您在Amazon EC2网络中使用公共DNS(例如ec2-xxx-xxx-xxx-xxx.compute-1.amazonaws.com)并将其解析为私有IP地址时在Amazon EC2网络外使用时的公共或弹性IP地址。
因此,由于各种原因,各种AWS产品通常通过其私有IP地址而非外部IP地址相互连接,最重要的是网络速度和成本(请参阅我对AWS EC2 Elastic IPs bandwidth usage and charges的回答)详情)。
因此,您的Amazon RDS实例的数据库安全组可能会引用您的Amazon EC2实例的私有IP地址,从而暗示相应的访问权限。