【问题标题】:AWS Security Group PuzzleAWS 安全组难题
【发布时间】:2021-11-03 21:23:00
【问题描述】:

我有一个用于我的 RDS 实例的 AWS 安全组。

我还有一个用于我的 EC2 实例的 AWS 安全组。

我已经设置好了,所以 EC2 实例的安全组用作我用于 RDS 实例的安全组的入口。

从我的 EC2 实例中,我可以使用 mysql 命令毫无问题地访问 RDS 实例。

但是,如果我尝试使用带有 MySQLi 的 PHP 脚本来访问 RDS 实例,它会无法连接。

如果我将 EC2 实例的实际 AWS IP 地址作为入口添加到 RDS 安全组,则使用 MySQLi 的 PHP 脚本可以正常工作。

知道为什么会这样吗?

更多细节:

  1. RDS 和 EC2 安全组位于同一个 VPC 上。
  2. 添加 EC2 私有地址且未进行其他更改时,软件连接正常。

这就是行为令人费解的原因

【问题讨论】:

  • 如果没有任何相反的证据,我会将其归结为配置错误。安全组是地址和端口级别的东西 - 他们不知道哪个程序正在建立连接。
  • 当您说“EC2 实例的实际 AWS IP 地址”时,您指的是公共 IP 还是私有 IP?
  • 我指的是私有IP地址(AWS)
  • EC2实例和RDS数据库是否在同一个VPC中?通过mysql和MySQLi连接数据库时,RDS数据库是如何被引用的(例如IP地址或DNS名称)?

标签: amazon-web-services aws-php-sdk


【解决方案1】:

典型的安全配置是:

  • Amazon EC2 实例 (App-SG) 上的安全组,具有所需的入站权限和默认的“全部允许”出站权限
  • Amazon RDS 数据库 (DB-SG) 上的一个安全组,允许从 App-SG 对端口 3306 (MySQL) 进行入站访问

也就是说,DB-SG 在其入站规则中专门引用了App-SG

EC2 实例上的软件应通过其 DNS 名称引用 RDS 数据库,该名称将解析为私有 IP 地址(假设 EC2 实例和 RDS 数据库位于同一 VPC 中)。

如果您的配置适用于 EC2 实例上的 mysql 命令,那么它也应该适用于 MySQLi 访问,因为它们都将连接到同一端口 (3306) 上的同一目标 DNS 名称。

【讨论】:

    猜你喜欢
    • 2020-09-02
    • 2018-03-05
    • 2011-04-01
    • 2018-01-07
    • 1970-01-01
    • 2021-04-06
    • 2016-12-04
    • 2016-02-14
    相关资源
    最近更新 更多