可以从任何 IP 地址访问的 AWS RDS 实例上的 SQL DB 的安全性

可以从任何 IP 地址访问的 AWS RDS 实例上的 SQL DB 的安全性

我们在 aws 上的 RDS 实例上有 sql db。EC2 上托管了一个可以访问 sql db 的 Web 应用程序。我们也从我们的办公室访问这个数据库。由于我们的办公室没有自己的静态 IP,因此我们必须使 RDS 实例可以从任何 IP 地址访问,以便我们可以连接到此实例进行工作。如果我们有静态 IP,我们将只允许访问我们的 IP。

问题是如何确保这个数据库是安全的并且不会受到安全威胁?有没有办法可以确保它安全而无需为我们的办公室购买静态 IP?显然,任何可从世界任何地方访问的数据库都容易受到攻击。
我们花了一周时间尝试在 Google 上寻找解决方案,但尚未成功。

答案1

无论你做什么,都不要将生产数据库暴露给互联网“0.0.0.0/0”。这样只会让自己面临数据泄露、盗窃、滥用等风险。

最简单的方法是让您的 RDS 实例“公开可访问”,但只能从一个非常短的固定 IP 地址列表中访问。

如果这对你的情况不起作用,那么你可以使用 SSH 隧道来保护你的 SQL 连接。如果你必须从“0.0.0.0/0”访问,那么 SSH 比 SQL 更好。

请执行下列操作:

  1. 将您的 RDS 实例放在私人的您的 VPC 的子网。这会将您的 RDS 实例隐藏在互联网之外。在这种情况下,您的 RDS 实例是不是可公开访问。
  2. 您的 Web 应用程序将通过其 DNS 名称访问 RDS 实例(该名称应解析为其私人的IP地址)。
  3. 在运行的公共子网中启动堡垒 EC2 实例sshd
  4. 当您的用户需要从本地网络访问 SQL 数据库时,让他们通过 SSH 连接到堡垒 EC2 实例,并通过 SSH 连接将 SQL 连接隧道传输到 RDS 实例。

由于您的 Web 应用程序通过私有 IP 地址访问 SQL 服务器,因此您不会产生数据流量费用(如果您通过公共 IP 地址访问,则会产生费用)。

参考:

答案2

对于您的组织来说,最简单、最便宜的选择可能是看看您的 ISP 是否愿意向您提供静态 IP 地址(需额外收费),或者寻找能够提供此项服务的新 ISP。

否则,我建议在您的站点和 AWS VPC 之间设置 VPN,并通过 VPN 连接到 RDS 实例。此解决方案取决于您的组织是否具有一定的网络专业知识。不幸的是,这不是一个快速而简单的解决方案。这里是了解 AWS 提供的不同 VPN 选项的起点。

我见过的其他解决方案都是丑陋的变通方法。以下是两个:

  • 找出您的 ISP 的 CIDR 并允许整个范围的访问。(这样至少可以限制使用您的 ISP 的其他人的访问,而不是整个互联网的访问。)

  • 编写一个脚本来检测你的 IP 地址何时发生变化,并使用新的 IP 地址更新 RDS 安全组规则。

我假设您的 IP 地址经常更改。(否则,您只需在必要时手动更新安全组即可。虽然不方便,但比向全世界开放更安全。)

如果您想研究如何设置 VPN,可以从以下起点开始:AWS VPN 连接选项

相关内容