我有一个 EC2 实例,它能够连接到我的 RDS 实例,但它的弹性 IP 没有出现在白名单 IP 的数据库安全组中。
这怎么可能?
我问是因为我创建了一个新实例,我也想将其列入白名单,并且仅输入其弹性 IP 似乎不是做事的方式,因为其他服务器都没有列出其弹性 IP。
提前致谢,
我有一个 EC2 实例,它能够连接到我的 RDS 实例,但它的弹性 IP 没有出现在白名单 IP 的数据库安全组中。
这怎么可能?
我问是因为我创建了一个新实例,我也想将其列入白名单,并且仅输入其弹性 IP 似乎不是做事的方式,因为其他服务器都没有列出其弹性 IP。
提前致谢,
这里可能有两个原因:
安全组规则不一定将 IP 地址单独指定为流量来源,而是经常引用其他安全组:
源可以是单个 IP 地址 (203.0.113.1)、地址范围(例如 203.0.113.0/24)或 EC2 安全组。安全组可以是您的 AWS 账户中的另一个组、另一个 AWS 账户中的组或安全组本身。
通过将安全组指定为源,您允许来自属于源安全组的所有实例的传入流量。[...] 如果您正在创建三层 Web 服务,您可以在您的帐户中指定另一个安全组(请参阅创建三层 Web 服务)。
[强调我的]
因此,您的Amazon RDS实例的数据库安全组可能是指用于您的Amazon EC2实例的 EC2 安全组,这暗示了各自的访问权限。有关此概念/方法的更多详细信息,请参阅我对AWS - 配置从 Beanstalk 应用程序访问 EC2 实例的回答。
您可能会看到 AWS DNS 基础设施的一个鲜为人知但仍然很重要且非常有用的功能的效果,请参阅使用实例 IP 地址页面上的公共和私有地址部分:
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 弹性 IP 带宽使用和收费的回答)细节)。
因此,您的 Amazon RDS 实例的数据库安全组可能会引用您的 Amazon EC2 实例的私有 IP 地址,从而相应地暗示相应的访问权限。