委托和控制用户密码管理
作为 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
权限。