为重新身份验证配置会话控制

通过会话控制,您可以配置用户在获得访问权限后必须重新进行身份验证的频率,以及是需要完整登录、仅密码还是硬件安全密钥。

您可以应用会话控制来执行以下操作:

  • 强制要求特权用户频繁重新进行身份验证:要求拥有较高权限的用户(例如项目所有者和结算管理员)更频繁地重新进行身份验证。
  • 为特定应用配置更长的会话时长:允许受支持的应用(例如 Google Cloud 控制台、Google Cloud SDK 或特定 OAuth 应用)拥有更长的会话时长,以保留实现最佳性能所需的大型上下文窗口。

定义会话时长和重新进行身份验证的方法

您可以在创建 Access Context Manager 绑定时定义会话控制机制。如需详细了解会话控制,请参阅使用访问权限绑定将政策应用于用户群组

gcloud

  • 为所有应用设置默认会话控制

    使用 --session-length 标志设置会话时长。该值必须为 0s,或介于 1 小时和 24 小时之间。以小时为单位指定时长。 例如,使用“12h”可设置时长为 12 小时的会话。 使用 --session-reauth-method 标志指定重新身份验证方法。例如,您可以将会话时长设置为 3 小时 (3h),并将重新身份验证方法设置为 LOGINPASSWORDSECURITY_KEY

    此设置将应用于所有应用,除非被应用专用设置覆盖。

  • 设置应用专属会话控制功能

    在 YAML 文件中定义 scopedAccessSettings,以使用 clientId 为特定应用指定会话控制。这样一来,您就可以替换这些应用的默认会话控制设置。然后,您可以使用 --binding-file flag 传递 YAML 文件。

REST API

在 POST 请求的 JSON 正文中,定义 sessionSettings 对象内的 sessionLengthsessionReauthMethod 字段,以创建或更新 GcpUserAccessBinding 绑定。

  • sessionLength 是会话时长(以秒为单位),格式为秒数,后跟 s(例如 3600s)。该值必须为 0s 或介于 3600s(1 小时)到 86400s(24 小时)之间。如果设置为 0s,则 sessionLengthEnabled 必须设置为 false 或保持未设置状态。您无法将 sessionLength 设置为 0s,并将 sessionLengthEnabled 设置为 true
  • sessionReauthMethod 可以是 LOGINPASSWORDSECURITY_KEY
  • 使用 scopedAccessSettings 定义特定于应用的会话控制。 如需了解详情,请参阅为特定应用定义配置

Terraform

Terraform Google Cloud 用户访问权限绑定资源中,设置 session_settings 实参以配置适用于所有用户流量的一般会话时长控制:

  • session_length:会话时长(以秒为单位)。例如,3600s 将会话时长设置为 1 小时。末尾必须包含 s
  • session_length_enabled:设置为 false 可停用指定的会话设置。
  • session_reauth_method:用于刷新凭据的身份验证质询类型。选项包括 LOGINPASSWORDSECURITY_KEY
  • use_oidc_max_age:一个高级字段,用于配置会话是否遵循可选的 OIDC 最大期限参数(如果身份验证凭据是 OAuth 令牌,则指定此参数)。

定义会话控制时,在解析会话控制设置时,系统只会使用与请求匹配的最近创建的访问权限绑定。

政策配置示例

以下示例展示了如何创建会话控制,以要求每 18 小时使用 LOGIN 重新进行身份验证,并要求每 2 小时使用 SECURITY_KEY 针对特定应用 (SENSITIVE_APP_ID) 重新进行身份验证。

默认设置

Google Cloud CLI 命令中的 --level--session-length--session-reauth-method 标志(或 API 调用的 JSON 正文中的相应字段)会为 scopedAccessSettings 中未明确定义的所有应用设置默认行为。

应用专属设置

您可以在 YAML 文件(或 JSON 正文)的 scopedAccessSettings 部分中替换特定应用的默认设置。在此示例中,我们使用 SECURITY_KEY 为客户端 ID 为 SENSITIVE_APP_ID 的应用设置了 2 小时的重新身份验证要求。

scopedAccessSettings 中的应用专用设置会完全覆盖默认(全局)会话控制。如果为应用定义了范围限定的设置,则默认会话控制设置不适用于该应用。

如需在全局控制处于有效状态时将某些应用从会话控制中排除,您必须明确将这些应用添加到 scopedAccessSettings 中,并将 sessionLength 字段设置为 0s,将 sessionLengthEnabled 设置为 false

gcloud

以下示例展示了会话设置配置:

scopedAccessSettings:
- scope:
    clientScope:
      restrictedClientApplication:
        clientId: SENSITIVE_APP_ID
  activeSettings:
    sessionSettings:
      sessionLength: 7200s
      sessionReauthMethod: SECURITY_KEY
      sessionLengthEnabled: true

创建访问权限绑定:

gcloud