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

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

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

  • 強制具備權限的使用者頻繁重新驗證:要求具備進階權限的使用者 (例如專案擁有者和帳單管理員) 頻繁重新驗證。
  • 為特定應用程式設定較長的工作階段:允許支援的應用程式 (例如 Google Cloud 控制台、Google Cloud SDK 或特定 OAuth 應用程式) 延長工作階段時間,以保留最佳效能所需的大型內容視窗。

定義工作階段長度和重新驗證方式

建立 Access Context Manager 繫結時,您可以定義工作階段控制項。 如要進一步瞭解工作階段控制項,請參閱「使用存取權繫結將政策套用至使用者群組」。

gcloud

  • 為所有應用程式設定預設工作階段控制項

    使用 --session-length 旗標設定工作階段持續時間。這個值必須是 0s,或是介於 1 小時至 24 小時之間。以小時為單位指定時間長度。舉例來說,如要設定 12 小時的工作階段,請使用「12h」。使用 --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 User Access Binding 資源中,設定 session_settings 引數,以設定適用於所有使用者流量的一般工作階段長度控制項:

  • session_length:工作階段持續時間 (以秒為單位)。舉例來說,3600s 會將工作階段時間長度設為 1 小時。結尾必須加上 s
  • session_length_enabled:設為 false 即可停用指定的工作階段設定。
  • session_reauth_method:用於重新整理憑證的驗證挑戰類型。選項為 LOGINPASSWORDSECURITY_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 的應用程式設定兩小時的重新驗證規定。

應用程式專屬設定會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 access-context-manager cloud-bindings create \
    --organization=ORG_ID \
    --group-key=GROUP_ID \
    --binding-file=BINDING_FILE_PATH \
    --session-length=SESSION_LENGTH \
    --session-reauth-method LOGIN

更改下列內容:

  • ORG_ID: Google Cloud 組織的 ID
  • GROUP_ID:群組金鑰
  • BINDING_FILE_PATH:繫結檔案的路徑
  • SESSION_LENGTH:工作階段長度,例如 18h

REST API

API 要求的 JSON 主體範例:

{
  "groupKey": "GROUP_ID",
  "sessionSettings": {
    "sessionLength": "64800s",
    "sessionReauthMethod": "LOGIN",
    "sessionLengthEnabled": true
  },
  "scopedAccessSettings": [
    {
      "scope": {
        "clientScope": {
          "restrictedClientApplication": {
            "clientId": "SENSITIVE_APP_ID"
          }
        }
      },
      "activeSettings": {
        "sessionSettings": {
          "sessionLength": "7200s",
          "sessionReauthMethod": "SECURITY_KEY",
          "sessionLengthEnabled": true
        }
      }
    }
  ]
}

請按照下列格式建構 POST 要求:

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

ORG_ID 替換為 Google Cloud 機構 ID。

Terraform

如要指定適用於全域和特定應用程式的會話控制項,請設定 session_settingsscoped_access_settings 引數:

    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 = "64800s"
        session_length_enabled = true
        session_reauth_method = "LOGIN"
        use_oidc_max_age = false
      }
      scoped_access_settings {
        scope {
          client_scope {
            restricted_client_application {
              client_id = "SENSITIVE_APP_ID"
            }
          }
        }
        active_settings {
          session_settings {
            session_length = "7200s"
            session_length_enabled = true
            session_reauth_method = "SECURITY_KEY"
            use_oidc_max_age = false
          }
        }
      }
    }

應用程式的政策設定範例 Google Cloud

您可以為應用程式設定專屬的重新驗證控制項,例如要求 Google Cloud SDK 使用 SECURITY_KEY,而控制台使用 LOGIN。 Google Cloud Google Cloud 以下範例說明如何建立工作階段控制項,規定 Google Cloud SDK 必須每小時重新驗證一次 (使用 SECURITY_KEY),而主控台則必須每 4 小時重新驗證一次 (使用 LOGIN)。 Google Cloud

YAML 檔案 (或 JSON 內文) 中的 scopedAccessSettings 區段可讓您覆寫特定應用程式的預設設定。在本範例中,我們使用 SECURITY_KEY 為 Google Cloud SDK 設定一小時的重新驗證規定,並使用 LOGIN 為 Google Cloud 控制台設定四小時的重新驗證規定,同時使用 name 欄位識別這些應用程式。

如要讓特定應用程式免受工作階段控制,請將 sessionLength 欄位設為 0ssessionLengthEnabled,並將 false 設為 false。系統會忽略 sessionReauthMethod 方法。

gcloud

以下範例顯示工作階段設定的設定:

scopedAccessSettings:
- scope:
    clientScope:
      restrictedClientApplication:
        name: Google Cloud SDK
  activeSettings:
    sessionSettings:
      sessionLength: 3600s
      sessionReauthMethod: SECURITY_KEY
      sessionLengthEnabled: true
- scope:
    clientScope:
      restrictedClientApplication:
        name: Cloud Console
  activeSettings:
    sessionSettings:
      sessionLength: 14400s
      sessionReauthMethod: LOGIN
      sessionLengthEnabled: true

建立存取權繫結:

gcloud access-context-manager cloud-bindings create \
    --organization=ORG_ID \
    --group-key=GROUP_ID \
    --binding-file=BINDING_FILE_PATH

更改下列內容:

  • ORG_ID: Google Cloud 組織的 ID
  • GROUP_ID:群組金鑰
  • BINDING_FILE_PATH:繫結檔案的路徑

REST API

API 要求的 JSON 主體範例:

{
  "groupKey": "GROUP_ID",
  "scopedAccessSettings": [
    {
      "scope": {
        "clientScope": {
          "restrictedClientApplication": {
            "name": "Google Cloud SDK"
          }
        }
      },
      "activeSettings": {
        "sessionSettings": {
            "sessionLength": "3600s",
            "sessionReauthMethod": "SECURITY_KEY",
            "sessionLengthEnabled": true
          }
      }
    },
    {
      "scope": {
        "clientScope": {
          "restrictedClientApplication": {
            "name": "Cloud Console"
          }
        }
      },
      "activeSettings": {
        "sessionSettings": {
            "sessionLength": "14400s",
            "sessionReauthMethod": "LOGIN",
            "sessionLengthEnabled": true
          }
      }
    }
  ]
}

請按照下列格式建構 POST 要求:

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

ORG_ID 替換為 Google Cloud 機構 ID。

Terraform

如要為 Google Cloud SDK 和 Google Cloud 控制台指定工作階段長度設定,請設定適當的 scoped_access_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 = "Google Cloud SDK"
            }
          }
        }
        active_settings {
          session_settings {
            session_length = "3600s"
            session_length_enabled = true
            session_reauth_method = "SECURITY_KEY"
            use_oidc_max_age = false
          }
        }
      }
      scoped_access_settings {
        scope {
          client_scope {
            restricted_client_application {
              name = "Cloud Console"
            }
          }
        }
        active_settings {
          session_settings {
            session_length = "14400s"
            session_length_enabled = true
            session_reauth_method = "LOGIN"
            use_oidc_max_age = false
          }
        }
      }
    }

覆寫 Google Cloud 應用程式的預設 16 小時工作階段長度

自 2026 年 6 月起,系統會為部分 Google Cloud 機構導入 16 小時的預設工作階段長度。這項預設政策不會顯示在 Google 管理控制台中,受影響的 Google Cloud 機構必須使用 Access Context Manager API,為使用者覆寫這項政策。

如要覆寫這項預設政策,並免除這些應用程式的工作階段控制項 (有效延長工作階段時間長度),您可以建立雲端繫結,並將 Google Cloud SDK 和scopedAccessSettings控制台 (「Cloud 控制台」) 應用程式的 sessionLengthEnabled 設為 false。 Google Cloud

gcloud

以下範例顯示 YAML 設定,可針對這些應用程式停用工作階段控制項:

scopedAccessSettings:
- scope:
    clientScope:
      restrictedClientApplication:
        name: Google Cloud SDK
  activeSettings:
    sessionSettings:
      sessionLength: 0s
      sessionReauthMethod: LOGIN
      sessionLengthEnabled: false
- scope:
    clientScope:
      restrictedClientApplication:
        name: Cloud Console
  activeSettings:
    sessionSettings:
      sessionLength: 0s
      sessionReauthMethod: LOGIN
      sessionLengthEnabled: false

使用這個檔案建立或更新存取權繫結:

gcloud access-context-manager cloud-bindings create \
    --organization=ORG_ID \
    --group-key=GROUP_ID \
    --binding-file=BINDING_FILE_PATH

更改下列內容:

  • ORG_ID: Google Cloud 組織的 ID
  • GROUP_ID:群組金鑰 (例如包含所有要套用這項覆寫設定的使用者的群組)
  • BINDING_FILE_PATH:繫結檔案的路徑

REST API

API 要求的 JSON 主體範例:

{
  "groupKey": "GROUP_ID",
  "scopedAccessSettings": [
    {
      "scope": {
        "clientScope": {
          "restrictedClientApplication": {
            "name": "Google Cloud SDK"
          }
        }
      },
      "activeSettings": {
        "sessionSettings": {
          "sessionLength": "0s",
          "sessionReauthMethod": "LOGIN",
          "sessionLengthEnabled": false
        }
      }
    },
    {
      "scope": {
        "clientScope": {
          "restrictedClientApplication": {
            "name": "Cloud Console"
          }
        }
      },
      "activeSettings": {
        "sessionSettings": {
          "sessionLength": "0s",
          "sessionReauthMethod": "LOGIN",
          "sessionLengthEnabled": false
        }
      }
    }
  ]
}

請按照下列格式建構 POST 要求:

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

ORG_ID 替換為 Google Cloud 機構 ID。

Terraform

如要指定停用 Google Cloud SDK 和 Google Cloud 主控台的工作階段控制設定,請使用 session_length_enabled = false 設定適當的 scoped_access_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 = "Google Cloud SDK"
            }
          }
        }
        active_settings {
          session_settings {
            session_length = "0s"
            session_length_enabled = false
            session_reauth_method = "LOGIN"
            use_oidc_max_age = false
          }
        }
      }
      scoped_access_settings {
        scope {
          client_scope {
            restricted_client_application {
              name = "Cloud Console"
            }
          }
        }
        active_settings {
          session_settings {
            session_length = "0s"
            session_length_enabled = false
            session_reauth_method = "LOGIN"
            use_oidc_max_age = false
          }
        }
      }
    }