为啥数据库安全组中的 CIDR/IP 可能与实例弹性 IP 不同?
Posted
技术标签:
【中文标题】为啥数据库安全组中的 CIDR/IP 可能与实例弹性 IP 不同?【英文标题】:Why might the CIDR/IP in DB security group be different from instance elastic IP?为什么数据库安全组中的 CIDR/IP 可能与实例弹性 IP 不同? 【发布时间】:2012-05-13 03:05:23 【问题描述】:我有一个 EC2 实例,它能够连接到我的 RDS 实例,但它的弹性 IP 没有出现在白名单 IP 的数据库安全组中。
这怎么可能?
我问是因为我创建了一个新实例,我也想将其列入白名单,并且仅输入其弹性 IP 似乎不是做事的方式,因为其他服务器都没有列出其弹性 IP。
提前致谢,
【问题讨论】:
【参考方案1】:这里可能有两个原因:
流量来源
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 的回答。
公共与私有 IP 地址
您可能会看到 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 地址,从而相应地暗示相应的访问权限。
【讨论】:
在花了很长时间试图解决这个问题之后,我非常感谢这个答案。我会考虑给我的长子取名 Steffen。 由于某种原因,添加安全组和外部 IP 地址均无效。然而,设置 private ip 就成功了。以上是关于为啥数据库安全组中的 CIDR/IP 可能与实例弹性 IP 不同?的主要内容,如果未能解决你的问题,请参考以下文章
如何将 AWS RDS 安全组中的 Zapier IP 地址列入白名单