為員工身分聯盟設定延長工作階段長度

根據預設,員工身分聯盟工作階段最長可持續 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 角色:

啟用 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 佈建。
  • 屬性過時門檻:系統會強制執行固定的 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 佈建功能處理。如果使用權杖式屬性更新:

  1. 在外部 IdP 中,使用授權碼流程設定 OIDC 應用程式,並啟用離線存取,以便傳回更新權杖。
  2. 在 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 佈建,才能在背景重新整理屬性:

  1. 為工作團隊集區提供者設定 SCIM 租戶。
  2. 從 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

  1. 在名為 updated-esl-binding.yaml 的 YAML 檔案中定義更新後的政策:

    scopedAccessSettings:
    - scope:
        clientScope:
          restrictedProject:
            name: projects/PROJECT_NUMBER
      activeSettings:
        sessionSettings:
          sessionLength: 2592000s
          sessionLengthEnabled: true
          sessionReauthMethod: LOGIN
    
  2. 套用更新後的政策:

    • 取代範圍存取權設定:如要使用 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。