使用密码政策管理内置身份验证

本页介绍了如何为 AlloyDB for PostgreSQL 实例的数据库用户设置和管理密码政策。

如需大致了解 AlloyDB 中提供的身份验证方法,请参阅身份验证

密码政策简介

如果应用的数据库用户使用内置的基于密码的方法对 AlloyDB 实例进行身份验证,您可以通过强制使用安全系数高的密码来提高身份验证的安全性。您可以通过在实例上设置密码政策来定义和启用密码强制执行。

密码政策的限制

AlloyDB 密码政策存在以下限制:

  • 密码政策仅适用于在您设置政策后创建的密码。密码政策的更改不会影响现有用户密码。

  • 密码政策仅适用于以纯文本形式输入的密码。密码政策不适用于以加密字符串形式输入的密码。

设置实例密码政策

您可以通过在实例上配置密码标志来为实例设置密码政策。

  • 禁止使用用户名:禁止在密码中使用用户名。

  • 密码复杂度:检查密码是否包含允许数量的小写字母、大写字母、数字和非字母数字字符。此外,请检查密码长度是否有效。

  • 密码过期:确保定期轮替密码。

如需查看 AlloyDB 支持的密码政策标志列表,请参阅密码政策标志

强制执行密码复杂度要求

如需强制执行密码复杂性政策,请执行以下操作:

  1. password.enforce_complexity 标志设置为 ON
  2. 使用密码政策标志定义密码政策。

例如,若要强制执行一项密码政策,声明密码必须包含至少一个大写字母、一个数字,且长度至少为 10 个字符,您必须设置以下标志:

  • password.enforce_complexityON
  • password.min_uppercase_letters 标志设置为 1
  • password.min_numerical_chars 标志设置为 1
  • password.min_pass_length 标志设置为 10

设置这些标志后,如果尝试设置不符合此密码政策的数据库用户密码,则会失败。例如,设置此政策后,以下 psql 客户端命令会失败,因为密码 foo 少于 10 个字符,且不包含数字或大写字符。

CREATE USER USERNAME WITH PASSWORD 'foo';

强制执行密码到期设置

如需强制执行密码过期政策,请执行以下操作:

  1. password.enforce_expiration 标志设置为 ON

  2. password.expiration_in_days 标志设置为密码设置后到期所需的天数。

  3. password.notify_expiration_in_days 标志设置为用户开始收到密码过期通知的天数。

例如,若要强制执行密码政策,其中规定密码会在 30 天后过期,并且会在密码到期前 15 天通知用户,您可以设置以下内容:

  • password.enforce_expirationON
  • password.expiration_in_days 标志设置为 30
  • password.notify_expiration_in_days 标志设置为 15

如果用户的密码过期,该用户将无法连接到 AlloyDB Omni 实例。如需重置用户的密码,请参阅更改数据库用户的密码

不允许在密码中使用用户名

如需强制执行禁止密码包含用户名的政策,请执行以下操作:

例如,若要确保密码不包含用户名作为子字符串,您可以设置以下内容:

  • password.enforce_password_does_not_contain_usernameON

如果设置此标志,则以下操作会失败,因为密码 alex-secret 包含用户名 Alex

CREATE USER Alex WITH PASSWORD 'alex-secret';

后续步骤