【问题标题】:Why do hostnames of connections to Aurora Serverless come from outside the VPC?为什么与 Aurora Serverless 的连接的主机名来自 VPC 外部?
【发布时间】:2020-10-16 18:01:26
【问题描述】:

我有一个在负载均衡器后面的 Beanstalk 中运行的 php 网站。

该网站正在连接到作为 Aurora Serverless 运行的 MySQL 兼容数据库。

弹性豆茎实例和 Aurora 都设置在同一个 VPC 中。

VPC CIDR 是 10.10.0.0/24
弹性 beanstalk 实例的本地 IP 为 10.10.0.18

无服务器 Aurora 集群在 VPC 的两个子网中使用 VPC 终端节点,其 IP 地址为 10.10.0.30 和 10.10.0.75。

尽管 Aurora Serverless 仅限于接受来自 VPC 内部的连接,但出于习惯,我仍然只授予来自 VPC 的用户权限。
因此,例如,我已授予 'user'@'10.10.0.%' 权限

当我的网站尝试连接到数据库时,它会因为主机不在 10.10.0.0/24 子网中而未授予权限的用户尝试访问它而被拒绝。

以下是我遇到的一些错误:

  • 用户 'user'@'10.1.17.79' 的访问被拒绝(使用密码:YES)
  • 用户 'user'@'10.1.18.17' 的访问被拒绝(使用密码:YES)
  • 用户 'user'@'10.1.19.1' 的访问被拒绝(使用密码:YES)
  • 用户 'user'@'10.1.19.177' 的访问被拒绝(使用密码:YES)

如您所见,这些主机都不在我的 VPC 中。

这是因为集群在自己的 VPC 中运行,通过私有链接链接到我的 VPC?

如果是这样,我唯一的选择是使用 % 作为我授予权限的用户的主机吗?

就我个人而言,我希望将其锁定在我的 VPC 中,以防万一 Serverless Aurora 将来打开互联网连接。

【问题讨论】:

    标签: amazon-web-services amazon-aurora aws-aurora-serverless


    【解决方案1】:

    不要将任何特定 IP 地址列入白名单,例如 RDS。尤其是使用 Aurora 无服务器时,节点 IP 可以随时更改,注意它会扩展,您会发现无法知道节点的真实 IP 地址。

    请记住,所有 RDS 数据库服务在技术上都在 AWS 托管 VPC 中运行,但是您确实会在您的 VPC 上附加一个 ENI,以允许您连接到实例。这使您可以像在 VPC 中实际创建资源一样进行通信。

    增强安全性的最佳方法是通过安全组和 NACL,结合使用 TLS 和静态加密。最后确保您的密码强度高且经常轮换。

    RDS Best Practices 应该可以帮助您深入了解您可以遵循的其他做法以增强您的安全性。

    【讨论】:

    • 该解释解决了来自 RDS 的连接,并且我已经基于其他 SG 或整个子网设置了安全组,因为我知道我们不能相信 IP 在 AWS 中保持不变,以防实例被替换.我的问题专门针对与 Aurora Serverless 集群的连接。为什么看起来客户端的主机名来自我的 VPC 外部?所以在上面的例子中,我在 10.10.0.18 上运行的网络服务器正在向 Aurora 发出请求,但是对于不是网络服务器 IP 的 'user'@'10.1.19.177' 的请求被拒绝了。
    • 我的猜测是在 ENI 和实际节点之间有一个代理,可以在节点之间切换流量,因为它可以扩展。这可能与亚马逊工程师实施 Aurora Serverless 有关
    猜你喜欢
    • 2019-04-05
    • 1970-01-01
    • 1970-01-01
    • 2019-03-20
    • 2012-05-30
    • 2021-02-05
    • 2020-02-21
    • 2019-05-13
    • 1970-01-01
    相关资源
    最近更新 更多