7

我有一个 EC2 实例,它能够连接到我的 RDS 实例,但它的弹性 IP 没有出现在白名单 IP 的数据库安全组中。

这怎么可能?

我问是因为我创建了一个新实例,我也想将其列入白名单,并且仅输入其弹性 IP 似乎不是做事的方式,因为其他服务器都没有列出其弹性 IP。

提前致谢,

4

1 回答 1

14

这里可能有两个原因:

流量来源

安全组规则不一定将 IP 地址单独指定为流量来源,而是经常引用其他安全组:

源可以是单个 IP 地址 (203.0.113.1)、地址范围(例如 203.0.113.0/24)或 EC2 安全组。安全组可以是您的 AWS 账户中的另一个组、另一个 AWS 账户中的组或安全组本身。

通过将安全组指定为源,您允许来自属于源安全组的所有实例的传入流量。[...] 如果您正在创建三层 Web 服务,您可以在您的帐户中指定另一个安全组(请参阅创建三层 Web 服务)。

[强调我的]

因此,您的Amazon RDS实例的数据库安全组可能是指用于您的Amazon EC2实例的 EC2 安全组,这暗示了各自的访问权限。有关此概念/方法的更多详细信息,请参阅我对AWS - 配置从 Beanstalk 应用程序访问 EC2 实例的回答。

公共与私有 IP 地址

您可能会看到 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 地址,从而相应地暗示相应的访问权限。

于 2012-05-03T16:34:41.853 回答