跳到主要内容
版本:3.10.x

密码策略

API7 企业版从 3.10.10 版本开始支持。

密码策略要求内置用户在设定的天数后修改密码,并禁止重复使用最近用过的密码。该策略默认关闭。

适用范围​

该策略适用于拥有本地密码的内置用户,包括默认的 admin 账户。

它不适用于通过 SSO 登录或通过 SCIM 预配的用户。使用 Token 认证的请求同样不受影响,即使 Token 所有者的密码已过期。

配置策略​

在控制台中启用该策略:

  1. 在 API7 控制台中,进入 组织 > 设置。
  2. 在 登录选项 标签页中找到 密码策略,然后点击 启用。
  3. 设置 密码有效期(天) 和 密码历史数量。表单预填 90 天和已保存的历史数量,历史数量默认为 5。
  4. 点击 启用。

策略开启后,卡片会显示这两个值,其操作菜单中提供 编辑 和 禁用。禁用 需要确认,之后密码不再过期,也不再检查重用。历史数量会保留,供下次启用时使用。

也可以通过 Admin API 配置相同的设置,在 PUT 请求中发送这两个字段。两个字段都是必需的。向同一路径发送 GET 请求可获取当前值。

curl -k "https://localhost:7443/api/system_settings/password_policy" -X PUT \
-H "X-API-KEY: ${API_KEY}" \
-H "Content-Type: application/json" \
-d '{
"password_max_age_days": 90,
"password_history_count": 5
}'
控制台字段API 字段取值默认值描述
密码有效期(天)password_max_age_days0,或 1 到 3650密码保持有效的天数。在 API 中,0 表示关闭该策略。控制台表单接受 1 到 365,并通过 禁用 关闭该策略。
密码历史数量password_history_count0 到 245除当前密码外,用户不能重复使用的历史密码个数。仅在 password_max_age_days 大于 0 时生效。设为 0 时,新密码只需与当前密码不同。
警告

密码有效期从密码上次设置的时间开始计算,而不是从启用策略的时间开始计算。如果密码已超过有效期,那么在启用策略或缩短有效期后,它会立即过期。

所需权限​

以下操作作用于 arn:api7:iam:organization/* 资源。在权限策略编辑器中,它们显示在 Password Policy 资源类型下。

操作允许的行为
iam:GetPasswordPolicy查看策略。没有此操作权限的用户看不到 密码策略 卡片。
iam:UpdatePasswordPolicy修改策略。

每次更新都会记录到审计日志中,事件类型为 UpdateSystemSettings。

密码过期后​

用户下次登录时,控制台会打开 修改已过期的密码 对话框,要求输入旧密码和新密码。如果用户已处于登录状态,其下一次操作或刷新页面时也会打开该对话框。在修改密码之前,用户只能修改密码或退出登录。

修改完成后,旧密码失效,该用户的所有会话都会结束。用户随后需要使用新密码重新登录。

如果用户已不记得旧密码,管理员可以重置其密码。用户在下次登录时设置新密码。

使用过期密码的 HTTP Basic Auth 请求会被拒绝,返回状态码 401,warning_msg 的值为 password expired。唯一的例外是修改密码的调用 PUT /api/password。自动化任务请使用 Token,避免受密码有效期影响。

密码重用​

策略开启时,用户修改自己的密码时不能使用当前密码,也不能使用最近 密码历史数量 个历史密码。这同样适用于管理员重置密码后用户必须进行的修改。管理员重置其他用户的密码时不做此检查。

即使策略处于关闭状态,API7 网关也会记录被替换的密码,每个用户最多保留 24 个。因此,之后启用策略或调大历史数量时,策略关闭期间或历史数量较小时被替换的密码同样会被检查。升级前被替换的密码不在历史记录中。

过期提醒​

从密码过期前 7 天起,控制台会显示一条横幅,其中包含剩余时间和 修改密码 链接。剩余时间向下取整,因此在 7 天有效期的策略下,刚修改的密码会显示 6 天。

API 客户端可以从 GET /api/me 的 password_expires_at 字段读取过期时间。该值是 RFC 3339 格式的 UTC 时间戳。如果密码不会过期,或请求不是通过会话或 Basic Auth 认证的,该值为 null。

升级行为​

该策略默认关闭,因此仅升级不会改变任何行为。升级前设置的密码从升级时刻开始计算有效期,因此升级后立即启用策略不会让这些密码立刻过期。

下一步​