本页介绍了如何为 AlloyDB for PostgreSQL 实例的数据库用户设置和管理密码政策。
如需大致了解 AlloyDB 中提供的身份验证方法,请参阅身份验证。
密码政策简介
如果应用的数据库用户使用内置的基于密码的方法对 AlloyDB 实例进行身份验证,您可以通过强制使用安全系数高的密码来提高身份验证的安全性。您可以通过在实例上设置密码政策来定义和启用密码强制执行。
密码政策的限制
AlloyDB 密码政策存在以下限制:
密码政策仅适用于在您设置政策后创建的密码。密码政策的更改不会影响现有用户密码。
密码政策仅适用于以纯文本形式输入的密码。密码政策不适用于以加密字符串形式输入的密码。
设置实例密码政策
您可以通过在实例上配置密码标志来为实例设置密码政策。
禁止使用用户名:禁止在密码中使用用户名。
密码复杂度:检查密码是否包含允许数量的小写字母、大写字母、数字和非字母数字字符。此外,请检查密码长度是否有效。
密码过期:确保定期轮替密码。
如需查看 AlloyDB 支持的密码政策标志列表,请参阅密码政策标志。
强制执行密码复杂度要求
如需强制执行密码复杂性政策,请执行以下操作:
- 将
password.enforce_complexity
标志设置为ON
。 - 使用密码政策标志定义密码政策。
例如,若要强制执行一项密码政策,声明密码必须包含至少一个大写字母、一个数字,且长度至少为 10 个字符,您必须设置以下标志:
password.enforce_complexity
至ON
password.min_uppercase_letters
标志设置为1
password.min_numerical_chars
标志设置为1
password.min_pass_length
标志设置为10
设置这些标志后,如果尝试设置不符合此密码政策的数据库用户密码,则会失败。例如,设置此政策后,以下 psql
客户端命令会失败,因为密码 foo
少于 10 个字符,且不包含数字或大写字符。
CREATE USER USERNAME WITH PASSWORD 'foo';
强制执行密码到期设置
如需强制执行密码过期政策,请执行以下操作:
将
password.enforce_expiration
标志设置为ON
。将
password.expiration_in_days
标志设置为密码设置后到期所需的天数。将
password.notify_expiration_in_days
标志设置为用户开始收到密码过期通知的天数。
例如,若要强制执行密码政策,其中规定密码会在 30 天后过期,并且会在密码到期前 15 天通知用户,您可以设置以下内容:
password.enforce_expiration
至ON
password.expiration_in_days
标志设置为30
password.notify_expiration_in_days
标志设置为15
如果用户的密码过期,该用户将无法连接到 AlloyDB Omni 实例。如需重置用户的密码,请参阅更改数据库用户的密码。
不允许在密码中使用用户名
如需强制执行禁止密码包含用户名的政策,请执行以下操作:
例如,若要确保密码不包含用户名作为子字符串,您可以设置以下内容:
password.enforce_password_does_not_contain_username
至ON
如果设置此标志,则以下操作会失败,因为密码 alex-secret
包含用户名 Alex
:
CREATE USER Alex WITH PASSWORD 'alex-secret';