0

我有一个 RDS 实例,我的客户坚持我不要碰它。他说创建一个副本并用它来测试新功能是可以的,所以我继续从原始副本创建了一个只读副本,完成后,我将只读副本提升为独立的实例。然后我创建了一个新的安全组(仅允许我的 IP),并在复制的实例上(仅,我已经确认)更改为使用该安全组。我的副本实例工作正常。

我的客户决定登录到原来的 MySQL RDS 实例(出于某种原因他想要这样做),并且向我抱怨说,这是 8 个月来第一次,他无法访问它。他连不上Error 60。他责备我,他这样做可能是对的。

那么首先,在这个过程中是否有任何事情看起来像是搞砸了原来的 RDS 的安全组,或者原来的安全组的入站允许设置?

其次,当我查看安全组设置时,我并不完全了解它是如何工作的。它的设置是这样的:

RDS uses Security Group sg-001  [real ids changed for readability]
sg-001: Inbound TCP 3306 Source: sg-002
sg-002: Inbound TCP 80   Source: sg-003
sg-003: Inbound TCP 80   Source: 0.0.0.0/0
        Inbound TCP 443  Source: 0.0.0.0/0

因此,当我读到它时,在我看来,RDS(使用 sg-001)根本无法接收任何传入流量,但 Web 服务(也在 AWS 上运行)仍然能够读取和写入到 RDS。有人可以帮助我更好地理解这一点吗?

4

1 回答 1

3

对于您的第一个问题,您描述的步骤不应该引起任何问题,导致您的客户突然无法连接到他的数据库。AWS 账户是否启用了 CloudTrail?如果是这样,您应该能够看到对 RDS 实例所做的每项更改,以便准确解释发生了什么。

对于您的第二个问题,以下是您的每个安全组规则的含义:

sg-001: Inbound TCP 3306 Source: sg-002

sg-001 中的服务器允许来自任何属于 sg-002 成员的服务器在端口 3306 上的传入流量。

sg-002: Inbound TCP 80   Source: sg-003

sg-002 中的服务器允许来自 sg-003 中任何服务器的端口 80 上的传入流量。

sg-003: Inbound TCP 80   Source: 0.0.0.0/0
        Inbound TCP 443  Source: 0.0.0.0/0

sg033g 中的服务器允许来自任何地方的端口 80 和 443 上的传入流量。

我假设 sg-001 是您的数据库,sg-002 是您的 Web 服务器,sg-003 是您的弹性负载均衡器。在这种情况下,互联网上的任何计算机都可以访问 ELB 上的端口 80 和 443。Web 服务器仅接受来自负载均衡器的流量(即您不能直接从服务器加载页面,您必须通过 ELB),并且数据库仅接受来自 Web 服务器的连接.

于 2016-05-14T01:20:45.557 回答