繁体   English   中英

添加带有 Internet 网关的公共子网和带有 NAT 的私有子网时,RDS 公共访问丢失

[英]RDS public access lost when adding public subnet with internet gateway and private subnets with NAT

任何帮助将非常感激!

最初,我们的 AWS VPC 中有 3 个子网。 VPC 有一个 IGW 和一个默认路由表,其中包含 2 条路由 - 1 条用于内部路由,0.0.0.0/0 用于 IGW。 标准的初始 VPC 设置。

在 VPC 中,我们有一个 RDS 实例,带有一个 RDS 代理,并且在我们开发解决方案时将数据库设置为公共访问。 DB 与默认 VPC SG 以及特定 SG 相关联,该特定 SG 将 IP 地址列入白名单以通过公共端点连接数据库。

同样在 VPC 中,我们有一个使用默认 VPC 安全组和上述 3 个子网的 Lambda。

Lambda 可以连接到 RDS 代理,我们可以通过列入白名单的 IP 连接到 RDS 公共端点 - 这符合预期。

问题:

现在我们需要为 Lambda 提供互联网访问(它需要与 RedisLabs 连接)。 为此,我们添加了:

  • 公共子网 (subnet-00245f33edbae3358)
  • 公有子网上的 NAT
  • 创建与现有 3 个私有子网(subnet-06d1124e、subnet-ba82bce1、subnet-3344b955)关联的路由表,路由为 0.0.0.0/0 -> NAT
  • 创建与新公共子网 (subnet-00245f33edbae3358) 关联的路由表,路由为 0.0.0.0/0 -> IGW

有了这个地方,Lambda 仍然可以通过 RDS 代理(预期)访问数据库,现在可以访问互联网(预期),但是我们通过面向公众的端点失去了与数据库的连接。

配置中是否缺少允许 Lambda 访问 RDS 和 Internet 并且还允许我们通过公共端点访问 RDS 的内容? 或者我们是否需要公共子网中的 SSH 隧道来执行此操作?

提前致谢!

附加信息:

RDS 当前具有以下 SG: - prod-auth-service-rds - 允许来自我列入白名单的 IP 的 TCP 3306 - sg-11cb746b(默认) - 所有流量,自引用源 (sg-11cb746b)

RDS 位于子网中: - subnet-06d1124e - 现有私有子网 - subnet-ba82bce1 - 现有私有子网 - subnet-3344b955 - 现有私有子网

NAT 在子网 00245f33edbae3358 上

编辑:重新阅读您的回复,如果您的 RDS 数据库位于私有子网上,那么无论您在数据库设置中设置为该选项的内容如何,​​它都无法公开访问。
————

查看附加信息后,我认为问题在于您的 RDS 安全组。 它只允许来自您默认安全组或您的个人白名单 IP 中的事物的流量。

即使 lambda 位于您的默认安全组中,RDS 也会将流量视为来自您的 Lambda,他们将其视为来自没有安全组的 NAT Gataway。

您可以通过将 NAT 网关的 EIP 作为额外的白名单 IP 添加到 RDS SG 的入站规则来解决此问题。

事实证明,我需要做的就是在与现有 RDS 子网分开的私有子网中创建 Lambda。 然后,单独的子网需要一个将 0.0.0.0/0 转发到 NAT 的路由。

Lambda 现在可以出站 Internet 访问和 RDS 访问,而 RDS 实例仍然可以通过其现有的公共端点访问。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM