委托和控制用户密码管理 - Amazon Relational Database Service

委托和控制用户密码管理

作为 DBA,您可能需要委托用户密码的管理。或者,您可能希望防止数据库用户更改其密码或重新配置密码限制,例如密码生命周期。要确保只有您选择的数据库用户才能更改密码设置,可以启用受限密码管理特征。激活此特征时,只有那些已被授予 rds_password 角色的数据库用户可以管理密码。

注意

要使用受限密码管理,您的 RDS for PostgreSQL 数据库实例必须运行 PostgreSQL 10.6 或更高版本。

默认情况下,此特征为 off,如下所示:

postgres=> SHOW rds.restrict_password_commands; rds.restrict_password_commands -------------------------------- off (1 row)

要启用此特征,请使用自定义参数组并将 rds.restrict_password_commands 的设置更改为 1。一定要重新启动 RDS for PostgreSQL 数据库实例,此设置才能生效。

激活此特征后,以下 SQL 命令需要 rds_password 权限:

CREATE ROLE myrole WITH PASSWORD 'mypassword'; CREATE ROLE myrole WITH PASSWORD 'mypassword' VALID UNTIL '2023-01-01'; ALTER ROLE myrole WITH PASSWORD 'mypassword' VALID UNTIL '2023-01-01'; ALTER ROLE myrole WITH PASSWORD 'mypassword'; ALTER ROLE myrole VALID UNTIL '2023-01-01'; ALTER ROLE myrole RENAME TO myrole2;

如果密码使用 MD5 哈希算法,重命名角色 (ALTER ROLE myrole RENAME TO newname) 也会受到限制。

激活此特征后,在没有 rds_password 角色权限的情况下尝试这些 SQL 命令中的任何一个都会生成以下错误:

ERROR: must be a member of rds_password to alter passwords

我们建议您仅将 rds_password 授予少数几个仅用于密码管理的角色。如果您将 rds_password 权限授予没有 rds_superuser 权限的数据库用户,则还需要授他们 CREATEROLE 属性。

请确保您验证了密码要求,例如客户端上的过期时间以及所需的复杂性。如果您使用自己的客户端实用程序进行与密码相关的更改,则该实用程序需要是 rds_password 的成员并具有 CREATE ROLE 权限。