使用 AMI 作为身份验证层,从 MySQL 客户端建立到 AWS RDS 的连接。

Set up a connection to AWS RDS from a MySQL client using AMI as authentication layer.

我想建立到我们的一个 AWS RDS 实例的连接,连接到想要使用 MySQL 客户端 (Toad) 的外部远程协作者。

我可以设置一个安全组并授予数据库访问权限,以便接受来自他们办公室 IP 的连接,但这有点太暴露了,而且没有用户责任。或者,我们可以创建一个 VPN 用户来连接到我们的办公室,但这在过去远非理想,我更愿意研究其他选择。

IAM 提供了一个很好的安全层,但在这种情况下是否可以将其用作身份验证层?

  1. 创建一个 Jump Host EC2 实例并授予该 EC2 实例访问权限 您的 RDS 数据库,因此您必须将 IP 地址列入白名单 EC2 实例而不是整个办公室。
  2. 为要访问数据库的人创建一个 SSH 用户 在 Jump Host EC2 实例上。
  3. 让此人使用“标准”连接到数据库 TCP/Ip 通过 SSH”使用 Toad。
  4. 这将实现您不将整个办公室列入白名单的用例 IP地址和使用SSH你可以实现用户责任。

从安全的角度来看,白名单 IP 和在 MySQL 内授予最低权限访问权限的唯一用户是这些实施的常见安全设置,非常安全并提供完整的用户级别问责制、跟踪和审计。您知道每个用户的访问权限,并且它只能来自一个 IP。你知道那个用户是谁。您可以控制他们在数据库中可以访问的内容。

我认为添加 IAM 层是不可能的,即便如此,它仍然是另一种形式的用户身份验证和授权,与 MySQL 登录所提供的相同。

归根结底,您需要信任该用户以您希望授予数据的方式访问您的数据。列入白名单的 IP 和唯一的登录名非常安全。通过 RDS 的 SSL 端点,数据在传输过程中也是安全的。我根本看不到任何不合理的安全风险。此设置在任何安全数据环境中都是标准和强制要求的,例如在 PCI 兼容应用程序中的支付处理。

恕我直言,除此之外的任何其他实现都会过度杀伤并增加管理负担而没有太多好处。

为了进一步提高安全性,让每个用户都签署一份安全政策,明确描述他们访问数据的限制和范围,他们保护其帐户密码的义务,而不是共享帐户等。信任是很好,但是强有力的政策声明会强制执行有关数据安全性的正确行为。