根據預設,員工身分聯盟工作階段最長可持續 12 小時。延長工作階段長度可讓機構為 Looker (Google Cloud Core) 客戶設定最長 90 天的工作階段。
延長工作階段長度後,員工使用者就能持續連線至 Looker (Google Cloud Core),不必每天向外部身分識別提供者 (IdP) 重新驗證身分。使用者在 Looker (Google Cloud Core) 內的互動仍受 Looker (Google Cloud Core) 工作階段長度設定控管。為確保延長工作階段期間的安全性, Google Cloud 會在背景直接從外部身分識別提供者 (IdP) 定期同步處理使用者屬性和群組成員資格。
本文說明如何使用 Access Context Manager API 和專案範圍控制項定義擴充工作階段政策、設定員工集區供應商,以及管理有效繫結。
總覽
員工身分聯盟會使用 Access Context Manager Google Cloud 存取繫結,設定延長的工作階段長度:
- Google Cloud 存取繫結:管理員可使用 Access Context Manager 定義工作階段長度政策,並套用至貴機構所有工作團隊集區。使用
restricted_project範圍時,政策會授予最多 90 天的延長工作階段,只會影響該專案擁有的 Looker (Google Cloud Core) 執行個體。 - 背景屬性同步:
- OIDC:支援使用 OIDC 授權碼流程和
offline_access範圍 (使用重新整理權杖,在背景中定期從外部 IdP 重新整理使用者屬性和群組成員資格),或透過 SCIM 佈建。 - SAML:如果是 SAML 提供者,系統會使用 SCIM 佈建功能,確保使用者屬性和群組成員資格維持最新狀態。
- OIDC:支援使用 OIDC 授權碼流程和
- 過時保護:如果無法在 24 小時內從外部 IdP 重新整理使用者屬性 (例如,使用者在 IdP 中遭到取消佈建或憑證遭到撤銷), Google Cloud 就會終止工作階段。
事前準備
設定延長工作階段長度前,請確認您已取得必要的 Identity and Access Management 權限,並啟用 API:
必要角色和權限
如要取得設定延長工作階段長度所需的權限,請要求管理員授予您下列 IAM 角色:
- 設定員工身分集區提供者:員工集區或機構的員工集區管理員 (
roles/iam.workforcePoolAdmin)。 - 管理 Access Context Manager Cloud 存取權繫結:機構層級的Cloud Access Binding Admin (
roles/accesscontextmanager.gcpAccessAdmin)。這個角色提供建立、查看、更新及刪除 Access Context Manager 存取繫結所需的權限。
啟用 API
在專案中啟用 Access Context Manager 和 IAM API:
gcloud services enable \
accesscontextmanager.googleapis.com \
iam.googleapis.com
限制與需求
設定延長工作階段長度前,請先詳閱下列規定和限制:
- 支援的應用程式:延長工作階段時間長度僅適用於 Looker (Google Cloud Core)。
- 必要專案範圍 (
restricted_project):工作階段設定必須在scopedAccessSettings中設定,並使用restricted_project用戶端範圍指定擁有 Looker (Google Cloud Core) 執行個體的 Google Cloud 專案 (projects/{PROJECT_NUMBER})。- 只有指定專案擁有的 Looker (Google Cloud Core) 應用程式會受到 ESL 政策影響。
- 其他應用程式 (以及其他專案擁有的 Looker (Google Cloud Core) 應用程式) 不會受到這項政策影響。
- 工作階段持續時間範圍:工作階段持續時間必須介於最短 1 小時 (
3600s) 和最長 90 天 (7776000s) 之間。 - 工作階段設定參數規定:
session_length_enabled:必須設為true。session_length:必要時間長度,介於 1 小時 (3600s) 和 90 天 (7776000s) 之間。session_reauth_method:必須取消設定或設為LOGIN。use_oidc_max_age:必須取消設定或設為false。max_inactivity:必須取消設定 (或預設為0s)。restricted_project繫結不支援閒置工作階段逾時。
- 支援的識別資訊提供者:
- OIDC:需要設定 OIDC 供應商,並使用授權碼流程和
offline_access範圍核發重新整理權杖,或設定 SCIM 佈建。 - SAML 2.0:必須在員工集區供應商上啟用 SCIM 佈建。
- OIDC:需要設定 OIDC 供應商,並使用授權碼流程和
- 屬性過時閾值:系統會強制執行固定的 24 小時過時閾值。如果 Google Cloud 無法在 24 小時內從 IdP 重新整理使用者屬性,工作階段就會失效,使用者必須重新驗證。
- Access Context Manager 限制:
- 單一機構繫結:工作團隊集區的延長工作階段長度繫結必須以機構的「所有工作團隊集區」主體 (
principalSet://cloudresourcemanager.googleapis.com/organizations/{ORG_ID}/type/WorkforcePool) 為目標。由於這個同盟主體 ID 會套用至機構中所有工作團隊集區,因此每個機構只能有一個這類繫結。如要為多個工作團隊集區中的多個 Looker (Google Cloud Core) 專案設定延長工作階段,請在單一繫結的scopedAccessSettings清單中加入多個restricted_project範圍區塊。 - 工作團隊集區繫結不支援存取層級 (
access_levels、dry_run_access_levels)。 - 工作團隊集區繫結
GcpUserAccessBinding不支援頂層sessionSettings;設定必須在scopedAccessSettings.activeSettings.sessionSettings中定義。
- 單一機構繫結:工作團隊集區的延長工作階段長度繫結必須以機構的「所有工作團隊集區」主體 (
設定工作團隊集區提供者
如要延長工作階段長度,請設定工作團隊集區提供者,支援背景屬性重新整理。您可以設定提供者使用 OIDC 或 SAML 通訊協定。
設定 OIDC 提供者
如要處理 OIDC 提供者的背景屬性重新整理作業,可以使用更新權杖 (offline_access 範圍) 或 SCIM 佈建。如果使用權杖式屬性重新整理:
- 在外部 IdP 中,設定採用授權碼流程的 OIDC 應用程式,並啟用離線存取功能,以便傳回更新權杖。
- 在 Google Cloud中,將
offline_access新增至 OIDC 工作團隊集區提供者的其他範圍。
您必須在 Google Cloud 貴機構的所有工作團隊身分集區中設定離線存取權,延長工作階段長度政策才能發揮預期效果。
gcloud
如果供應商已具備其他範圍,請一併納入 offline_access,以免遭到覆寫:
gcloud iam workforce-pools providers update-oidc PROVIDER_ID \
--workforce-pool=WORKFORCE_POOL_NAME \
--location=global \
--web-sso-additional-scopes="offline_access[,EXISTING_ADDITIONAL_SCOPES]"
更改下列內容:
PROVIDER_ID:員工身分集區提供者的名稱。WORKFORCE_POOL_NAME:員工身分集區的名稱。EXISTING_ADDITIONAL_SCOPES:先前在供應商上設定的任何以半形逗號分隔的其他範圍。如果沒有現有的其他範圍,請省略這個參數。
REST API
傳送 PATCH 要求來更新供應商。在 offline_access 旁邊加入任何現有的額外範圍:
PATCH https://iam.googleapis.com/v1/locations/global/workforcePools/WORKFORCE_POOL_NAME/providers/PROVIDER_ID?updateMask=oidc.webSsoConfig.additionalScopes
要求主體:
{
"oidc": {
"webSsoConfig": {
"additionalScopes": [
"offline_access"
]
}
}
}
更改下列內容:
WORKFORCE_POOL_NAME:員工身分集區的名稱。PROVIDER_ID:員工身分集區提供者的 ID。
設定 SAML 供應商
如果是 SAML 提供者,背景屬性重新整理需要 SCIM 佈建:
- 為工作團隊集區提供者設定 SCIM 租戶。
- 從 SAML 識別資訊提供者設定使用者和群組佈建作業,將資料傳送至 SCIM 端點。
如需逐步操作說明,請參閱「員工身分聯盟的 SCIM 佈建」。
Looker (Google Cloud Core) 的範例政策設定
建立 GcpUserAccessBinding 資源,將延長工作階段長度政策指派給貴機構的工作團隊集區,並將政策範圍限定為代管 Looker (Google Cloud Core) 執行個體的專案。
gcloud
在名為 esl-binding.yaml 的 YAML 檔案中定義政策:
scopedAccessSettings:
- scope:
clientScope:
restrictedProject:
name: projects/PROJECT_NUMBER
activeSettings:
sessionSettings:
sessionLength: 7776000s
sessionLengthEnabled: true
sessionReauthMethod: LOGIN
建立存取權繫結:
gcloud access-context-manager cloud-bindings create \
--organization=ORG_ID \
--federated-principal="principalSet://cloudresourcemanager.googleapis.com/organizations/ORG_ID/type/WorkforcePool" \
--binding-file="esl-binding.yaml"
更改下列內容:
ORG_ID:您的 Google Cloud 機構 ID (例如123456789012)。PROJECT_NUMBER:擁有目標 Looker (Google Cloud Core) 執行個體的專案編號 (例如987654321098)。只有這個專案擁有的 Looker (Google Cloud Core) 應用程式,才能獲得延長的會期長度。sessionLength:工作階段持續時間 (以秒為單位),後接s。舉例來說,7776000s會指定 90 天的工作階段。sessionLengthEnabled:設為true。sessionReauthMethod:設為LOGIN(或不設定)。
REST API
將 POST 要求傳送至 Access Context Manager API:
POST https://accesscontextmanager.googleapis.com/v1/organizations/ORG_ID/gcpUserAccessBindings
JSON 要求主體:
{
"principal": {
"federatedPrincipal": "principalSet://cloudresourcemanager.googleapis.com/organizations/ORG_ID/type/WorkforcePool"
},
"scopedAccessSettings": [
{
"scope": {
"clientScope": {
"restrictedProject": {
"name": "projects/PROJECT_NUMBER"
}
}
},
"activeSettings": {
"sessionSettings": {
"sessionLength": "7776000s",
"sessionLengthEnabled": true,
"sessionReauthMethod": "LOGIN"
}
}
}
]
}
更改下列內容:
ORG_ID:您的 Google Cloud 機構 ID (例如123456789012)。PROJECT_NUMBER:擁有目標 Looker (Google Cloud Core) 執行個體的專案編號 (例如987654321098)。只有這個專案擁有的 Looker (Google Cloud Core) 應用程式,才能獲得延長的會期長度。sessionLength:工作階段持續時間 (以秒為單位),後接s。舉例來說,7776000s會指定 90 天的工作階段。sessionLengthEnabled:設為true。sessionReauthMethod:設為LOGIN(或不設定)。
查看及列出繫結
由於繫結會套用至機構中的所有工作團隊集區,因此每個機構最多只能有一個存取繫結。
列出有效繫結
如要列出貴機構中的工作團隊集區存取權繫結,請使用 principal:federatedPrincipal 篩選條件:
gcloud
gcloud access-context-manager cloud-bindings list \
--organization=ORG_ID \
--filter="principal:federatedPrincipal"
REST API
GET https://accesscontextmanager.googleapis.com/v1/organizations/ORG_ID/gcpUserAccessBindings?filter=principal:federated_principal
取得繫結詳細資料
如要查看特定工作團隊集區存取權繫結的詳細資料:
gcloud
gcloud access-context-manager cloud-bindings describe \
--binding=BINDING_NAME
將 BINDING_NAME 替換為繫結的完整資源名稱 (例如 organizations/123456789012/gcpUserAccessBindings/b1234567890)。
REST API
GET https://accesscontextmanager.googleapis.com/v1/organizations/ORG_ID/gcpUserAccessBindings/BINDING_ID
更改下列內容:
ORG_ID:您的 Google Cloud 機構 ID (例如123456789012)。BINDING_ID:存取權繫結的 ID (例如b1234567890)。
更新存取權繫結
您可以更新現有的工作團隊集區存取權繫結,修改工作階段長度、新增專案範圍或移除現有專案範圍。
gcloud
在名為
updated-esl-binding.yaml的 YAML 檔案中定義更新後的政策:scopedAccessSettings: - scope: clientScope: restrictedProject: name: projects/PROJECT_NUMBER activeSettings: sessionSettings: sessionLength: 2592000s sessionLengthEnabled: true sessionReauthMethod: LOGIN套用更新後的政策:
- 取代範圍存取權設定:如要使用
updated-esl-binding.yaml中定義的設定覆寫現有專案範圍:
gcloud access-context-manager cloud-bindings update \ --binding=BINDING_NAME \ --binding-file="updated-esl-binding.yaml"- 附加至現有設定:如要將
updated-esl-binding.yaml中定義的專案範圍附加至繫結的現有專案範圍,而不覆寫這些範圍,請傳遞--append標記:
gcloud access-context-manager cloud-bindings update \ --binding=BINDING_NAME \ --binding-file="updated-esl-binding.yaml" \ --append- 取代範圍存取權設定:如要使用
請替換下列項目:
* BINDING_NAME:繫結的完整資源名稱 (例如 organizations/123456789012/gcpUserAccessBindings/b1234567890)。
* PROJECT_NUMBER:擁有目標 Looker (Google Cloud Core) 執行個體的專案編號。
* sessionLength:更新後的會期長度 (例如 2592000s 代表 30 天)。
REST API
傳送 PATCH 要求來更新繫結。
- 取代範圍存取權設定:如要覆寫現有專案範圍,請按照下列步驟操作:
PATCH https://accesscontextmanager.googleapis.com/v1/organizations/ORG_ID/gcpUserAccessBindings/BINDING_ID?updateMask=scopedAccessSettings
- 附加至現有設定:如要附加新的專案範圍,而不覆寫現有範圍,請設定
append=true查詢參數:
PATCH https://accesscontextmanager.googleapis.com/v1/organizations/ORG_ID/gcpUserAccessBindings/BINDING_ID?updateMask=scopedAccessSettings&append=true
JSON 要求主體:
{
"scopedAccessSettings": [
{
"scope": {
"clientScope": {
"restrictedProject": {
"name": "projects/PROJECT_NUMBER"
}
}
},
"activeSettings": {
"sessionSettings": {
"sessionLength": "2592000s",
"sessionLengthEnabled": true,
"sessionReauthMethod": "LOGIN"
}
}
}
]
}
請替換下列項目:
* ORG_ID:您的 Google Cloud 組織 ID (例如 123456789012)。
* BINDING_ID:存取權繫結的 ID (例如 b1234567890)。
* PROJECT_NUMBER:擁有目標 Looker (Google Cloud Core) 執行個體的專案編號。* sessionLength:更新後的會期長度 (例如 2592000s 代表 30 天)。
刪除存取權繫結
刪除工作團隊集區存取權繫結後,貴機構所有工作團隊集區的延長工作階段長度都會停用。
gcloud
gcloud access-context-manager cloud-bindings delete \
--binding=BINDING_NAME
將 BINDING_NAME 替換為繫結的完整資源名稱。
REST API
傳送 DELETE 要求來移除繫結:
DELETE https://accesscontextmanager.googleapis.com/v1/organizations/ORG_ID/gcpUserAccessBindings/BINDING_ID
更改下列內容:
ORG_ID:您的 Google Cloud 組織 ID。BINDING_ID:要刪除的存取權繫結 ID。