通过会话控制,您可以配置用户在获得访问权限后必须重新进行身份验证的频率,以及是否需要完整登录、仅密码或硬件安全密钥。
您可以应用会话控制来执行以下操作:
- 强制要求特权用户频繁重新进行身份验证:要求拥有较高权限的用户(例如项目所有者和结算管理员)更频繁地重新进行身份验证。
- 为特定应用配置更长的会话时长:允许某些应用(例如基于情境的 AI 应用 [如 Gemini])拥有更长的会话时长,以保留实现最佳性能所需的大型上下文窗口。
定义会话时长和重新验证方法
您可以在创建 Access Context Manager 绑定时定义会话控制。如需详细了解会话控制,请参阅使用访问权限绑定将政策应用于用户群组。
gcloud
-
使用
--session-length
标志设置会话时长,并使用--session-reauth-method
标志指定重新验证方法。例如,您可以将会话时长设置为 30 分钟 (30m),并将重新身份验证方法设置为LOGIN
、PASSWORD
或SECURITY_KEY
。此设置将应用于所有应用,除非被应用专用设置替换。
-
在 YAML 文件中定义
scopedAccessSettings
,以使用clientId
为特定应用指定会话控制。这样一来,您就可以替换这些应用的默认会话控制设置。然后,您可以使用--binding-file flag
传递 YAML 文件。
API
在 POST 请求的 JSON 正文中,于 sessionSettings object
内定义 sessionLength
和 sessionReauthMethod
字段,以创建或更新 GcpUserAccessBinding
绑定。使用 scopedAccessSettings
定义应用专用的会话控制变量。如需了解详情,请参阅为特定应用定义配置。
定义会话控制变量时的主要注意事项:
- 您无法使用
clientId
指定 Google Cloud 控制台。如需为 Google Cloud 控制台强制执行会话控制,请将其定义为默认值,然后为其他应用创建例外情况。 - 在解析会话控制设置时,系统只会使用与请求匹配的最新创建的访问权限绑定。
政策配置示例
以下示例演示了如何创建会话控制,该控制默认情况下要求每 18 小时使用 LOGIN
重新进行身份验证,而对于特定应用 (SENSITIVE_APP_ID
),则要求每 2 小时使用 SECURITY_KEY
重新进行身份验证。
默认设置
Google Cloud CLI 命令中的 --level
、--session-length
和 --session-reauth-method
标志(或 API 调用的 JSON 正文中的相应字段)会为 scopedAccessSettings
中未明确定义的所有应用设置默认行为。
应用专属设置
您可以使用 YAML 文件(或 JSON 正文)中的 scopedAccessSettings
部分替换特定应用的默认设置。在此示例中,我们使用 SECURITY_KEY
为客户端 ID 为 SENSITIVE_APP_ID
的应用设置了 2 小时的重新身份验证要求。
如需将某些应用从会话控制中排除,请将 sessionLength
字段设置为 0s
或 sessionLengthEnabled
到 false
。然后,系统会忽略 sessionReauthMethod
方法。
gcloud
设置配置:
scopedAccessSettings:
scope:
clientScope:
restrictedClientApplication:
clientId: SENSITIVE_APP_ID
activeSettings:
sessionSettings:
sessionLength: 7200s
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