根據預設,員工身分聯盟工作階段最長可持續 12 小時。組織可設定延長工作階段長度,讓 Looker (Google Cloud Core) 和 Gemini Enterprise 行動應用程式的工作階段最長可達 90 天:
Looker (Google Cloud Core):使用專案範圍 (
restricted_project) 設定。延長工作階段後,員工使用者可持續連線至 Looker (Google Cloud Core),不必每天向外部身分提供者 (IdP) 重新驗證。Looker (Google Cloud Core) 中的使用者互動,仍受 Looker (Google Cloud Core) 工作階段長度設定規範。Gemini Enterprise 行動應用程式:使用應用程式範圍 (
restricted_client_application) 設定。延長工作階段後,員工使用者可以持續連線至 Gemini Enterprise 行動應用程式,不必每天重新驗證外部身分識別資訊提供者 (IdP)。
為確保延長工作階段期間的安全性, Google Cloud 會定期在背景直接從外部身分識別提供者 (IdP) 同步處理使用者屬性和群組成員資格。
本文說明如何使用 Access Context Manager API 定義擴充工作階段政策,並搭配專案範圍控制項 (適用於 Looker (Google Cloud Core)) 和應用程式範圍控制項 (適用於 Gemini Enterprise 行動應用程式),設定員工集區供應商及管理有效繫結。
總覽
員工身分聯盟會使用 Access Context Manager Google Cloud 存取權繫結,設定延長工作階段長度:
Google Cloud 存取繫結:管理員可使用 Access Context Manager 定義工作階段長度政策,並套用至貴機構所有工作團隊集區。政策可透過下列任一方式,將工作階段延長至最多 90 天:
專案範圍 (
restricted_project):將延長工作階段套用至指定專案中的 Looker (Google Cloud Core) 執行個體。應用程式範圍 (
restricted_client_application):將延長工作階段套用至 Gemini Enterprise 行動應用程式。
背景屬性同步處理:
OIDC:支援使用 OIDC 授權碼流程搭配
offline_access範圍 (使用更新權杖,在背景定期從外部 IdP 更新使用者屬性和群組成員資格),或透過 SCIM 佈建。SAML:如果是 SAML 供應商,系統會使用 SCIM 佈建功能,確保使用者屬性和群組成員資格保持最新狀態。
過時保護:如果系統無法在 24 小時內從外部 IdP 重新整理使用者屬性 (例如,使用者在 IdP 中遭到取消佈建或憑證遭撤銷), Google Cloud 就會終止工作階段。
事前準備
設定延長工作階段長度前,請確認您具備必要的 Identity and Access Management 權限,並已啟用 API:
必要角色和權限
如要取得設定延長工作階段長度所需的權限,請要求管理員授予您下列 IAM 角色:
- 設定員工身分集區提供者:在員工集區或組織中,具備員工集區管理員 (
roles/iam.workforcePoolAdmin) 角色。 - 管理 Access Context Manager Cloud 存取權繫結:組織層級的 Cloud 存取權繫結管理員 (
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) (使用專案範圍設定)
- Gemini Enterprise 行動應用程式 (使用應用程式範圍設定)
- Gemini Enterprise 行動應用程式的許可清單規定:Gemini Enterprise 行動應用程式的延長工作階段長度僅適用於許可清單。如要在預先發布版期間申請加入許可清單,請與 Google Cloud 支援團隊聯絡窗口聯絡。
- 範圍類型:工作階段設定必須在
scopedAccessSettings中使用下列其中一個用戶端範圍進行設定:- 專案範圍 (
restricted_project):指定擁有 Looker (Google Cloud Core) 執行個體 (projects/{PROJECT_NUMBER}) 的 Google Cloud 專案。只有指定專案擁有的 Looker (Google Cloud Core) 執行個體會受到影響。 - 應用程式範圍 (
restricted_client_application):依標準顯示name指定應用程式。 - 如要設定 Gemini Enterprise 行動應用程式的應用程式範圍,您必須明確使用下列其中一個或兩個確切的應用程式名稱:
"Gemini Enterprise mobile Android""Gemini Enterprise mobile IOS"
- 員工身分聯盟繫結不支援依 OAuth 用戶端 ID (
clientId) 設定範圍,因此會遭到拒絕。您必須使用name欄位識別應用程式。
- 專案範圍 (
- 工作階段持續時間範圍:工作階段持續時間必須介於 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繫結和restricted_client_application繫結不支援閒置工作階段逾時。
- 支援的識別資訊提供者:
- 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) 專案、Gemini Enterprise 行動應用程式或兩者組合設定延長工作階段,請在單一繫結的scopedAccessSettings清單中加入多個restricted_project和restricted_client_application範圍區塊。 - 工作團隊集區繫結不支援存取層級 (
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(或不設定)。
Gemini Enterprise 行動應用程式的政策設定範例
建立 GcpUserAccessBinding 資源,將延長工作階段長度政策指派給組織的工作團隊集區,並使用 restricted_client_application 範圍將政策範圍限定為 Gemini Enterprise 行動應用程式。您必須使用應用程式的確切標準顯示名稱來識別應用程式:"Gemini Enterprise mobile Android" 和 "Gemini Enterprise mobile IOS"。
gcloud
在名為 esl-app-binding.yaml 的 YAML 檔案中定義政策:
scopedAccessSettings:
- scope:
clientScope:
restrictedClientApplication:
name: "Gemini Enterprise mobile Android"
activeSettings:
sessionSettings:
sessionLength: 7776000s
sessionLengthEnabled: true
sessionReauthMethod: LOGIN
- scope:
clientScope:
restrictedClientApplication:
name: "Gemini Enterprise mobile IOS"
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-app-binding.yaml"
更改下列內容:
ORG_ID:您的 Google Cloud 組織 ID (例如123456789012)。name:必須是"Gemini Enterprise mobile Android"或"Gemini Enterprise mobile IOS"。工作團隊集區不支援依 OAuth 用戶端 ID (clientId) 識別應用程式。sessionLength:工作階段持續時間 (以秒為單位),後接s(介於3600s和7776000s之間)。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": {
"restrictedClientApplication": {
"name": "Gemini Enterprise mobile Android"
}
}
},
"activeSettings": {
"sessionSettings": {
"sessionLength": "7776000s",
"sessionLengthEnabled": true,
"sessionReauthMethod": "LOGIN"
}
}
},
{
"scope": {
"clientScope": {
"restrictedClientApplication": {
"name": "Gemini Enterprise mobile IOS"
}
}
},
"activeSettings": {
"sessionSettings": {
"sessionLength": "7776000s",
"sessionLengthEnabled": true,
"sessionReauthMethod": "LOGIN"
}
}
}
]
}
更改下列內容:
ORG_ID:您的 Google Cloud 組織 ID (例如123456789012)。name:必須是"Gemini Enterprise mobile Android"或"Gemini Enterprise mobile IOS"。工作團隊集區不支援依 OAuth 用戶端 ID (clientId) 識別應用程式。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。