您可以透過工作階段控制項,設定使用者獲得存取權後必須重新驗證的頻率,以及是否需要完整登入、僅輸入密碼或使用硬體安全金鑰。
您可以套用工作階段控制項,執行下列動作:
- 強制權限較高的使用者頻繁重新驗證:要求權限較高的使用者 (例如專案擁有者和帳單管理員) 頻繁重新驗證。
- 為特定應用程式設定較長的工作階段:允許特定應用程式 (例如 Gemini 等以脈絡為基礎的 AI 應用程式) 延長工作階段時間,以保留最佳效能所需的大型脈絡窗口。
定義工作階段長度和重新驗證方式
建立 Access Context Manager 繫結時,您可以定義工作階段控制項。 如要進一步瞭解工作階段控制項,請參閱「使用存取權繫結將政策套用至使用者群組」。
gcloud
-
使用
--session-length旗標設定工作階段時間長度。這個值可以介於 0 到 24 小時之間。請使用 ISO 8601 時間長度格式指定時間長度。 舉例來說,如要將工作階段設為 12 小時 30 分鐘 5 秒,請使用「12H30M5S」。使用--session-reauth-method旗標指定重新驗證方法。舉例來說,您可以將工作階段時間設為 30 分鐘 (30m),並使用LOGIN、PASSWORD或SECURITY_KEY重新驗證方法。除非應用程式專屬設定覆寫此設定,否則所有應用程式都會套用此設定。
-
在 YAML 檔案中定義
scopedAccessSettings,即可使用clientId為特定應用程式指定工作階段控制項。這樣您就能覆寫這些應用程式的預設工作階段控制項。然後使用--binding-file flag傳遞 YAML 檔案。
API
在 POST 要求的 JSON 主體中,於 sessionSettings 物件內定義 sessionLength 和 sessionReauthMethod 欄位,即可建立或更新 GcpUserAccessBinding 繫結。
sessionLength是指工作階段長度,介於 0 到 24 小時之間。這個值必須是字串,且由介於 0 至 86400 之間的整數組成,後面緊接著字母「s」。sessionReauthMethod可以是LOGIN、PASSWORD或SECURITY_KEY。- 使用
scopedAccessSettings定義應用程式專屬的會話控制項。 詳情請參閱「為特定應用程式定義設定」。
Terraform
在 Terraform Google Cloud User Access Binding 資源中,填入 session_settings 引數,設定適用於所有使用者流量的一般工作階段長度控制:
session_length:工作階段時間長度 (以秒為單位)。舉例來說,900 秒會將工作階段長度設為 15 分鐘。結尾必須加上「s」。session_length_enabled:設為 false 即可停用指定的工作階段設定。session_reauth_method:用於重新整理憑證的驗證挑戰類型。選項為LOGIN、PASSWORD或SECURITY_KEY。use_oidc_max_age:進階欄位,用於設定工作階段是否遵守選用的 OIDC 最長存續時間參數 (如果驗證憑證是 OAuth 權杖,則會指定此參數)。
定義工作階段控制設定時的考量重點:
- 解析工作階段控制項設定時,系統只會使用與要求相符的最新存取權繫結。
政策設定範例
以下範例說明如何建立工作階段控制項,透過 LOGIN 每 18 小時重新驗證一次,並透過 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 的應用程式設定兩小時的重新驗證要求。
如要將特定應用程式排除在工作階段控制項之外,請將 sessionLength 欄位設為 0s 或 sessionLengthEnabled,然後將 false 設為 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
Terraform
如要為所有應用程式中,來自「群組金鑰」的使用者存取要求指定工作階段長度,請按照下列步驟操作:
resource "google_access_context_manager_gcp_user_access_binding" "gcp_user_access_binding" {
organization_id = "{Organization ID}"
group_key = "{Group Key}"
session_settings {
session_length = "1800s"
session_length_enabled = true
session_reauth_method = "LOGIN"
use_oidc_max_age = false
}
如要為來自特定 Google 群組的使用者,透過特定應用程式 (例如 Google Cloud 控制台) 提出的要求指定工作階段長度,請在 active_settings 中使用 session_settings 引數填入適當的 scoped_access_settings 引數。session_settings 中的子引數與頂層引數相同。
resource "google_access_context_manager_gcp_user_access_binding" "gcp_user_access_binding" {
organization_id = "{Organization ID}"
group_key = "{Group Key}"
scoped_access_settings {
scope {
client_scope {
restricted_client_application {
name = "Cloud Console"
}
}
}
active_settings {
session_settings {
session_length = "1800s"
session_length_enabled = true
session_reauth_method = "LOGIN"
use_oidc_max_age = false
}
}
}
}