Amazon Aurora
Aurora 用户指南 (API 版本 2014-10-31)
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

使用 Amazon Aurora PostgreSQL 实现高安全性

Amazon Aurora PostgreSQL 的安全性在三个级别上进行管理:

  • 要控制可对 Aurora 数据库集群和数据库实例执行 Amazon RDS 托管操作的人员,请使用 AWS Identity and Access Management (IAM)。使用 IAM 凭证连接到 AWS 时,您的 IAM 账户必须具有授予执行 Amazon RDS 管理操作所需的权限的 IAM 策略。有关更多信息,请参阅身份验证和访问控制

    如果要使用 IAM 账户访问 Amazon RDS 控制台,则必须先使用您的 IAM 账户登录到 AWS 管理控制台,然后转至 https://console.amazonaws.cn/rds 上的 Amazon RDS 控制台。

  • Aurora 数据库集群必须在 Amazon Virtual Private Cloud (VPC) 中创建。要控制哪些设备和 Amazon EC2 实例能够建立与 VPC 中 Aurora 数据库集群的数据库实例的终端节点和端口的连接,请使用 VPC 安全组。可使用安全套接字层 (SSL) 建立这些终端节点和端口连接。此外,公司的防火墙规则也可以控制公司中运行的哪些设备可以建立与数据库实例的连接。有关 VPC 的更多信息,请参阅Amazon Virtual Private Cloud (VPC) 和 Amazon RDS

  • 要为 Amazon Aurora 数据库集群的登录名和权限进行身份验证,可采用与独立 PostgreSQL 实例相同的方式。

    CREATE ROLEALTER ROLEGRANTREVOKE 等命令的作用与它们在本地数据库中的作用相同,就像直接修改数据库架构表一样。有关更多信息,请参阅 PostgreSQL 文档中的客户端身份验证

    注意

    在 Aurora PostgreSQL 中不支持加盐质询响应身份验证机制 (SCRAM)。

当您创建 Amazon Aurora PostgreSQL 数据库实例时,主用户有以下默认权限:

  • LOGIN

  • NOSUPERUSER

  • INHERIT

  • CREATEDB

  • CREATEROLE

  • NOREPLICATION

  • VALID UNTIL 'infinity'

要为每个数据库集群提供管理服务,需要在创建数据库集群时创建 rdsadmin 用户。如果试图删掉、重命名、修改密码,或者修改 rdsadmin 账户的权限,会导致出错。

限制密码管理

您可以限制只有特殊角色的用户才能够管理数据用户密码。通过这样做,您可以在客户端更好地控制密码管理。

您可以通过静态参数 rds.restrict_password_commands 并使用名为 rds_password 的角色来启用受限制的密码管理。当参数 rds.restrict_password_commands 设置为 1 时,只有是 rds_password 角色成员的用户可以运行特定 SQL 命令。受限制的 SQL 命令包括修改数据库用户密码以及修改密码到期时间的命令。

要使用受限制的密码管理,PostgreSQL 10.6 或更高版本的,数据库集群必须运行 Amazon Aurora。由于 rds.restrict_password_commands 参数是静态参数,更改此参数后需要重新启动数据库。

在数据库启用了受限制的密码管理后,如果您尝试运行受限制 SQL 命令,则会收到以下错误:ERROR: must be a member of rds_password to alter passwords (错误:必须是 rds_password 成员才能变更密码)

以下是启用了受限制的密码管理时的一些受限制 SQL 命令示例。

postgres=> CREATE ROLE myrole WITH PASSWORD 'mypassword'; postgres=> CREATE ROLE myrole WITH PASSWORD 'mypassword' VALID UNTIL '2020-01-01'; postgres=> ALTER ROLE myrole WITH PASSWORD 'mypassword' VALID UNTIL '2020-01-01'; postgres=> ALTER ROLE myrole WITH PASSWORD 'mypassword'; postgres=> ALTER ROLE myrole VALID UNTIL '2020-01-01'; postgres=> ALTER ROLE myrole RENAME TO myrole2;

一些包含 RENAME TOALTER ROLE 命令也会受限制。因为重命名具有 MD5 密码的 PostgreSQL 角色会清除密码,因此这些命令会受限制。

默认情况下,rds_superuser 角色具有 rds_password 角色的成员资格,并且无法更改。您可以使用 GRANT SQL 命令向其他角色提供 rds_password 角色的成员资格。我们建议您仅将 rds_password 的成员资格提供给少数几个仅用于密码管理的角色。这些角色需要 CREATEROLE 属性以修改其角色。

请确保您验证了密码要求,例如客户端上的过期时间以及所需的复杂性。我们建议您使用自己的客户端实用程序来限制与密码相关的更改。此实用程序应具有作为 rds_password 成员的角色并具有 CREATEROLE 角色属性。

本页内容: