配置会话控制功能以进行重新身份验证

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

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

  • 强制要求特权用户更频繁地重新进行身份验证 要求拥有较高权限的用户(例如项目所有者和结算管理员)更频繁地重新进行身份验证。
  • 为某些应用配置更长的会话允许某些应用(例如 Gemini 等基于上下文的 AI 应用)具有更长的会话时长,以保留实现最佳性能所需的大型上下文窗口。

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

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

gcloud

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

    使用 --session-length 标志设置会话时长,使用 --session-reauth-method 标志指定重新身份验证方法。例如,您可以将会话时长设置为 30 分钟 (30m),并设置 LOGINPASSWORDSECURITY_KEY 重新身份验证方法。

    除非被应用专用设置替换,否则此设置将应用于所有应用。

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

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

API

在 POST 请求的 JSON 正文中,在 sessionSettings object 内定义 sessionLengthsessionReauthMethod 字段,以创建或更新 GcpUserAccessBinding 绑定。使用 scopedAccessSettings 定义应用专用会话控件。如需了解详情,请参阅为特定应用定义配置

定义会话控制时的主要注意事项:

  • 您无法使用 clientId 指定 Google Cloud 控制台。如需为 Google Cloud 控制台强制执行会话控制,请将其定义为默认控制台,然后为其他应用创建例外情况。
  • 在解析会话控制设置时,系统只会使用与请求匹配的最近创建的访问权限绑定。

政策配置示例

以下示例演示了如何创建会话控制,默认情况下,使用 LOGIN 时,每 18 小时需要重新进行身份验证一次;使用 SECURITY_KEY 时,对于特定应用 (SENSITIVE_APP_ID),每 2 小时需要重新进行身份验证一次。

默认设置

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

应用专用设置

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

gcloud

设置配置:

scopedAccessSettings:
  - scope:
      clientScope:
        restrictedClientApplication:
          clientId: SENSITIVE_APP_ID
    activeSettings:
      accessLevels:
        - accessPolicies/POLICY_ID/accessLevels/ACCESS_LEVEL_NAME
      sessionSettings:
        - sessionLength: 2h
          sessionReauthMethod: SECURITY_KEY
          sessionLengthEnabled: true

创建访问权限绑定:

gcloud access-context-manager cloud-bindings create \
    --organization ORG_ID \
    --group-key GROUP_ID \
    --binding-file BINDING_FILE_PATH \
    --level DEFAULT_ACCESS_LEVEL  
    --session-length 18h \
    --session-reauth-method LOGIN

API

JSON 正文:

{
  "groupKey": "GROUP_ID",
  "accessLevels": [
    "accessPolicies/POLICY_ID/accessLevels/DEFAULT_ACCESS_LEVEL"
  ],
  "scopedAccessSettings": [
    {
      "scope": {
        "clientScope": {
          "restrictedClientApplication": {
            "clientId": "SENSITIVE_APP_ID"
          }
        }
      },
      "activeSettings": {
        "accessLevels": [
          "accessPolicies/POLICY_ID/accessLevels/ACCESS_LEVEL_NAME"
        ],
        "sessionSettings": [
          {
            "sessionLength": "2h",
            "sessionReauthMethod": "SECURITY_KEY",
            "sessionLengthEnabled": true
          }
        ]
      }
    }
  ]

POST 请求:

POST https://accesscontextmanager.googleapis.com/v1/organizations/ORG_ID/gcpUserAccessBindings