【发布时间】:2012-05-13 03:05:23
【问题描述】:
我有一个 EC2 实例,它能够连接到我的 RDS 实例,但它的弹性 IP 没有出现在白名单 IP 的数据库安全组中。
这怎么可能?
我问是因为我创建了一个新实例,我也想将其列入白名单,并且仅输入其弹性 IP 似乎不是做事的方式,因为其他服务器都没有列出其弹性 IP。
提前致谢,
【问题讨论】:
标签: amazon-ec2 amazon-web-services amazon-rds
我有一个 EC2 实例,它能够连接到我的 RDS 实例,但它的弹性 IP 没有出现在白名单 IP 的数据库安全组中。
这怎么可能?
我问是因为我创建了一个新实例,我也想将其列入白名单,并且仅输入其弹性 IP 似乎不是做事的方式,因为其他服务器都没有列出其弹性 IP。
提前致谢,
【问题讨论】:
标签: amazon-ec2 amazon-web-services amazon-rds
这里可能有两个原因:
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 基础设施的一个鲜为人知但仍然很重要且非常有用的功能的效果,请参阅第 Using Instance IP Addresses 页上的 Public and Private 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 地址,从而相应地暗示相应的访问权限。
【讨论】: