設定重新驗證的工作階段控制項

您可以透過工作階段控制項,設定使用者獲得存取權後必須重新驗證的頻率,以及是否需要完整登入、僅輸入密碼或使用硬體安全金鑰。

您可以套用工作階段控制項,執行下列操作:

  • 強制權限較高的使用者頻繁重新驗證:要求權限較高的使用者 (如專案擁有者和帳單管理員) 頻繁重新驗證。
  • 為特定應用程式設定較長的工作階段:允許特定應用程式 (例如 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 控制台強制執行工作階段控制項,請將其定義為預設值,然後為其他應用程式建立例外狀況。
  • 解析工作階段控制項設定時,系統只會使用與要求相符的最新存取權繫結。

政策設定範例

以下範例說明如何建立工作階段控制項,根據預設,每 18 小時需要使用 LOGIN 重新驗證,而特定應用程式 (SENSITIVE_APP_ID) 則每兩小時需要使用 SECURITY_KEY 重新驗證。

預設設定

Google Cloud CLI 指令中的 --level--session-length--session-reauth-method 標記 (或 API 呼叫的 JSON 主體中對應的欄位),會為 scopedAccessSettings 中未明確定義的所有應用程式設定預設行為。

應用程式專屬設定

YAML 檔案 (或 JSON 內文) 中的 scopedAccessSettings 區段可讓您覆寫特定應用程式的預設設定。在這個範例中,我們使用 SECURITY_KEY 為用戶端 ID 為 SENSITIVE_APP_ID 的應用程式設定兩小時的重新驗證要求。

如要將特定應用程式排除在工作階段控制項之外,請將 sessionLength 欄位設為 0ssessionLengthEnabled,然後將 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