使用 Microsoft Entra ID 設定員工身分聯盟,並讓使用者登入

本文說明如何使用 Microsoft Entra ID 識別資訊提供者 (IdP) 設定員工身分聯盟,以及如何管理Google Cloud的存取權。聯合使用者隨後即可存取 Google Cloud 服務 ,這些服務支援員工身分聯盟。 您可以使用 OIDC 通訊協定或 SAML 2.0 通訊協定,同盟身分。

事前準備

  1. 確認您已 Google Cloud 設定機構。
  2. 安裝 Google Cloud CLI。 完成後,執行下列指令來初始化 Google Cloud CLI:

    gcloud init

    若您採用的是外部識別資訊提供者 (IdP),請先使用聯合身分登入 gcloud CLI

  3. 在 Microsoft Entra ID 中,請確認已為隱含流程啟用 ID 權杖。詳情請參閱「啟用 ID 權杖隱含授權」。
  4. 如要登入,您的 IdP 必須提供已簽署的驗證資訊:OIDC IdP 必須提供 JWT,且 SAML IdP 回應必須經過簽署。
  5. 如要接收貴機構或產品異動的重要資訊,請務必提供必要聯絡人。 Google Cloud 詳情請參閱「員工身分聯盟總覽」。

費用

員工身分聯盟是免付費功能。不過,員工身分聯盟詳細稽核記錄會使用 Cloud Logging。如要瞭解 Logging 定價,請參閱「Google Cloud Observability 定價」。

必要的角色

如要取得設定員工身分聯盟所需的權限,請要求管理員授予您組織的 IAM 工作團隊集區管理員 (roles/iam.workforcePoolAdmin) IAM 角色。如要進一步瞭解如何授予角色,請參閱「管理專案、資料夾和組織的存取權」。

您或許也能透過自訂角色或其他預先定義的角色,取得必要權限。

如果您是在開發或測試環境 (而非正式環境) 中設定權限,可以授予 IAM 擁有者 (roles/owner) 基本角色,這個角色也包含 Workforce Identity Federation 的權限。

建立 Microsoft Entra ID 應用程式

本節說明如何使用 Microsoft Entra 管理入口網站建立 Microsoft Entra ID 應用程式。您也可以更新現有的應用程式。詳情請參閱「在 Microsoft Entra ID 生態系統中建立應用程式」。

員工身分集區支援使用 OIDC 和 SAML 通訊協定的聯盟。

OIDC

如要建立使用 OIDC 通訊協定的 Microsoft Entra ID 應用程式註冊,請按照下列步驟操作:

  1. 登入 Microsoft Entra 系統管理入口網站。

  2. 依序前往「身分識別」>「應用程式」>「應用程式註冊」

  3. 如要開始設定應用程式註冊,請按照下列步驟操作:

    1. 按一下 [新增註冊]

    2. 輸入應用程式名稱。

    3. 在「支援的帳戶類型」中選取選項。

    4. 在「重新導向 URI」部分,從「選取平台」下拉式清單中選取「網站」

    5. 在文字欄位中輸入重新導向網址。使用者成功登入後,系統會將他們重新導向這個網址。如要設定控制台 (聯盟) 的存取權,請使用下列網址格式:

      https://auth.cloud.google/signin-callback/locations/global/workforcePools/WORKFORCE_POOL_ID/providers/WORKFORCE_PROVIDER_ID
      

      更改下列內容:

      • WORKFORCE_POOL_ID:員工身分集區 ID,您稍後會在本文中建立員工身分集區時使用,例如: entra-id-oidc-pool

      • WORKFORCE_PROVIDER_ID:員工身分集區提供者 ID,您稍後會在本文中建立員工身分集區提供者時使用,例如:entra-id-oidc-pool-provider

        如要瞭解如何設定 ID 格式,請參閱 API 說明文件中的「查詢參數」一節。

    6. 如要建立應用程式註冊,請按一下「Register」(註冊)

    7. 如要使用本文稍後提供的範例屬性對應,您必須建立自訂 department 屬性。

建議:根據安全性最佳做法,建議您設定群組聲明,方法如下:

  1. 前往 Microsoft Entra ID 應用程式註冊頁面。

  2. 按一下「Token configuration」(權杖設定)

  3. 按一下「新增群組聲明」

  4. 選取要傳回的群組類型。詳情請參閱「設定群組選用聲明」。

SAML

如要建立使用 SAML 通訊協定的 Microsoft Entra ID 應用程式註冊,請按照下列步驟操作:

  1. 登入 Microsoft Entra 系統管理入口網站。

  2. 在左側導覽選單中,依序前往「Entra ID」>「企業應用程式」

  3. 如要開始設定企業應用程式,請按照下列步驟操作:

    1. 依序點選「新應用程式」>「建立自己的應用程式」

    2. 在顯示的「Create your own application」(建立自己的應用程式) 窗格中,輸入應用程式名稱。

    3. 點選「建立」

    4. 依序前往「單一登入」>「SAML」

    5. 按照下列步驟更新「Basic SAML Configuration」(基本 SAML 設定)

      1. 在「Identifier (Entity ID)」(ID (實體 ID)) 欄位中,輸入下列值:

        https://iam.googleapis.com/locations/global/workforcePools/WORKFORCE_POOL_ID/providers/WORKFORCE_PROVIDER_ID
        

        更改下列內容:

        • WORKFORCE_POOL_ID:員工身分集區 ID,您會在本文稍後建立員工身分集區時使用,例如:entra-id-saml-pool
        • WORKFORCE_PROVIDER_ID:您稍後在本文件中建立員工身分集區提供者時,會使用的員工身分集區提供者 ID,例如:entra-id-saml-pool-provider

          如要瞭解如何設定 ID 格式,請參閱 API 說明文件中的「查詢參數」一節。

      2. 在「Reply URL (Assertion Consumer Service URL)」欄位中,輸入重新導向網址。使用者成功登入後,系統會將他們重新導向至這個網址。如要設定控制台 (聯盟) 的存取權,請使用下列網址格式:

        https://auth.cloud.google/signin-callback/locations/global/workforcePools/WORKFORCE_POOL_ID/providers/WORKFORCE_PROVIDER_ID
        

        更改下列內容:

        • WORKFORCE_POOL_ID:員工身分集區 ID
        • WORKFORCE_PROVIDER_ID:員工身分提供者 ID
      3. 如要啟用 IdP 啟動的登入程序,請將「Relay State」欄位設為下列值:

        https://console.cloud.google/
        
      4. 如要儲存 SAML 應用程式設定,請按一下「儲存」

    6. 如要使用本文稍後提供的範例屬性對應,您必須建立自訂 department 屬性。

建議:根據安全性最佳做法,建議您設定群組聲明,方法如下:

  1. 前往 Microsoft Entra ID 應用程式。

  2. 點選 [Single sign-on] (單一登入)。

  3. 在「屬性與聲明」部分,按一下「編輯」

  4. 按一下「新增群組聲明」

  5. 選取要傳回的群組類型。詳情請參閱「使用 SSO 設定,將群組聲明新增至 SAML 應用程式的權杖」。

建立工作團隊身分集區

gcloud

如要建立員工身分識別集區,請執行下列指令:

gcloud iam workforce-pools create WORKFORCE_POOL_ID \
    --organization=ORGANIZATION_ID \
    --display-name="DISPLAY_NAME" \
    --description="DESCRIPTION" \
    --session-duration=SESSION_DURATION \
    --location=global

更改下列內容:

  • WORKFORCE_POOL_ID:您選擇代表 Google Cloud 工作團隊集區的 ID。如要瞭解如何設定 ID 格式,請參閱 API 說明文件中的「查詢參數」一節。
  • ORGANIZATION_ID:員工身分集區的組織數字 ID。 Google Cloud 員工身分集區適用於機構中的所有專案和資料夾。
  • DISPLAY_NAME:選用。工作團隊身分集區的顯示名稱。
  • DESCRIPTION:選用。工作團隊身分集區 說明。
  • SESSION_DURATION:選用。工作階段時間長度,以附加 s 的數字表示,例如 3600s。工作階段時間長度決定了從這個工作團隊集區取得的 Google Cloud 存取權杖、控制台 (聯盟) 登入工作階段,以及 gcloud CLI 登入工作階段的有效時間。工作階段持續時間預設為一小時 (3600 秒)。工作階段持續時間值必須介於 15 分鐘 (900 秒) 和 12 小時 (43,200 秒) 之間。

控制台

如要建立工作團隊身分識別集區,請執行下列操作:

  1. 前往 Google Cloud 控制台的「Workforce Identity Pools」(員工身分集區) 頁面:

    前往「Workforce Identity Pools」(員工身分集區) 頁面

  2. 選取員工身分集區的機構。機構中的所有專案和資料夾都可使用 Workforce 身分集區。

  3. 按一下「建立集區」,然後執行下列操作:

    1. 在「名稱」欄位中,輸入集區的顯示名稱。系統會在您輸入名稱時自動衍生集區 ID,並顯示在「名稱」欄位下方。如要更新集區 ID,請點選集區 ID 旁的「編輯」

    2. 選用:在「Description」(說明) 中輸入集區說明。

    3. 如要建立員工身分集區,請按「Next」(下一步)

工作團隊身分集區的工作階段持續時間預設為一小時 (3600 秒)。 工作階段時間長度決定了這個工作團隊集區的 Google Cloud 存取權杖、控制台 (已加入聯盟) 和 gcloud CLI 登入工作階段的有效時間。建立集區後,您可以更新集區,設定自訂工作階段時間長度。工作階段持續時間必須介於 15 分鐘 (900 秒) 至 12 小時 (43,200 秒) 之間。

建立 Microsoft Entra ID 工作團隊身分集區提供者

本節說明如何建立員工身分集區供應商,讓 IdP 使用者存取 Google Cloud。您可以設定提供者使用 OIDC 或 SAML 通訊協定。

建立 OIDC 工作團隊身分集區提供者

如要使用 OIDC 通訊協定,為 Microsoft Entra ID 應用程式整合服務建立工作團隊身分集區提供者,請按照下列步驟操作:

  1. 如要取得 Microsoft Entra ID 應用程式的核發者 URI,請按照下列步驟操作:

    1. 前往 Microsoft Entra ID 應用程式註冊頁面。
    2. 按一下 [端點]
    3. 在新分頁中開啟 OpenID Connect 中繼資料文件
    4. 在 JSON 中,複製 issuer 的值。
  2. 如要取得 Microsoft Entra ID 應用程式的用戶端 ID,請按照下列步驟操作:

    1. 前往 Microsoft Entra ID 應用程式註冊頁面。
    2. 複製「應用程式 (用戶端) ID」中的值。
  3. 如要為網頁式登入建立 OIDC 工作團隊身分識別集區提供者,請按照下列步驟操作:

    gcloud

    如要建立支援 OIDC 通訊協定的供應商,請按照下列步驟操作:

    代碼流程

    如要建立使用授權碼流程的 OIDC 供應商,以便透過網路登入,請按照下列步驟操作:

    1. 在 Microsoft Entra ID 應用程式中,如要取得用戶端密鑰,請按照下列步驟操作:

      1. 前往 Microsoft Entra ID 應用程式註冊頁面。

      2. 在「Certificates & secrets」中,按一下「Client secrets」分頁標籤。

      3. 如要新增用戶端密鑰,請按一下「+ New client secret」

      4. 在「新增用戶端密鑰」對話方塊中,視需要輸入資訊。

      5. 如要建立用戶端密鑰,請按一下「新增」

      6. 在「Client secrets」分頁中,找出新的用戶端密鑰。

      7. 在新的用戶端密鑰「值」欄中,按一下「複製」圖示

    2. 在 Google Cloud 控制台中,如要建立使用程式碼流程的 OIDC 供應商,請按照下列步驟操作:

      gcloud iam workforce-pools providers create-oidc WORKFORCE_PROVIDER_ID \
          --workforce-pool=WORKFORCE_POOL_ID \
          --display-name="DISPLAY_NAME" \
          --description="DESCRIPTION" \
          --issuer-uri="ISSUER_URI" \
          --client-id="OIDC_CLIENT_ID" \
      --client-secret-value="OIDC_CLIENT_SECRET" \ --web-sso-response-type="code" \ --web-sso-assertion-claims-behavior="merge-user-info-over-id-token-claims" \ --web-sso-additional-scopes="WEB_SSO_ADDITIONAL_SCOPES" \ --attribute-mapping="ATTRIBUTE_MAPPING" \ --attribute-condition="ATTRIBUTE_CONDITION" \ --jwk-json-path="JWK_JSON_PATH" \ --detailed-audit-logging \ --location=global

      取代下列項目:

      • WORKFORCE_PROVIDER_ID:工作團隊身分集區提供者專屬 ID。前置字串「gcp-」為預留字串,不得用於工作團隊身分集區或工作團隊身分集區提供者 ID。
      • WORKFORCE_POOL_ID:要連結 IdP 的員工身分集區 ID。
      • DISPLAY_NAME:供應商的選用易記顯示名稱,例如 idp-eu-employees
      • DESCRIPTION:員工供應商說明 (選填),例如 IdP for Partner Example Organization employees
      • ISSUER_URI:OIDC 核發者 URI,格式必須為有效的 URI,且開頭為 https,例如 https://example.com/oidc。注意:基於安全考量,ISSUER_URI 必須使用 HTTPS 通訊協定。
      • OIDC_CLIENT_ID:向 OIDC IdP 註冊的 OIDC 用戶端 ID;這個 ID 必須與 IdP 發行的 JWT 的 aud 聲明相符。
      • OIDC_CLIENT_SECRET:OIDC 用戶端密鑰。
      • WEB_SSO_ADDITIONAL_SCOPES:要傳送至 OIDC IdP 的選用額外範圍,適用於主控台 (聯合) 或 gcloud CLI 瀏覽器型登入。
      • ATTRIBUTE_MAPPING屬性對應。 如果是使用 OIDC 驗證的 Microsoft Entra ID,建議您採用下列屬性對應:

        google.subject=assertion.sub,
        google.groups=assertion.groups,
        google.display_name=assertion.preferred_username
        

        這個範例會將 IdP 屬性 subjectgroupspreferred_username 分別對應至 Google Cloud屬性 google.subjectgoogle.groupsgoogle.display_name

      • ATTRIBUTE_CONDITION屬性條件; 舉例來說,如要將 ipaddr 屬性限制在特定 IP 範圍內,可以設定 assertion.ipaddr.startsWith('98.11.12.') 條件。
      • JWK_JSON_PATH本機上傳的 OIDC JWK 的選用路徑。 如果未提供這個參數, Google Cloud 會改用 IdP 的 /.well-known/openid-configuration 路徑,取得含有公開金鑰的 JWK。如要進一步瞭解本機上傳的 OIDC JWK,請參閱「管理 OIDC JWK」。
      • 員工身分聯盟詳細稽核記錄會將從 IdP 收到的資訊記錄到 Cloud Logging。詳細稽核記錄有助於排解工作團隊身分集區提供者設定問題。如要瞭解如何透過詳細稽核記錄排解屬性對應錯誤,請參閱「一般屬性對應錯誤」。如要瞭解 Logging 定價,請參閱「Google Cloud Observability 定價」一文。

        如要停用工作團隊身分集區提供者的詳細稽核記錄功能,請在執行 gcloud iam workforce-pools providers create 時省略 --detailed-audit-logging 旗標。如要停用詳細稽核記錄,也可以更新供應商

      在指令回應中,POOL_RESOURCE_NAME 是集區的名稱,例如 locations/global/workforcePools/enterprise-example-organization-employees

    隱含流程

    如要建立使用隱含流程的 OIDC 供應商,以供網站登入,請按照下列步驟操作:

    1. 如要在 Microsoft Entra ID 應用程式中啟用 ID 權杖,請按照下列步驟操作:

      1. 前往 Microsoft Entra ID 應用程式註冊頁面。
      2. 在「驗證」中,勾選「ID 權杖」核取方塊。
      3. 按一下 [儲存]
    2. 如要建立供應商,請執行下列指令:

      gcloud iam workforce-pools providers create-oidc WORKFORCE_PROVIDER_ID \
          --workforce-pool=WORKFORCE_POOL_ID \
          --display-name="DISPLAY_NAME" \
          --description="DESCRIPTION" \
          --issuer-uri="ISSUER_URI" \
          --client-id="OIDC_CLIENT_ID" \
          --web-sso-response-type="id-token" \
          --web-sso-assertion-claims-behavior="only-id-token-claims" \
          --web-sso-additional-scopes="WEB_SSO_ADDITIONAL_SCOPES" \
          --attribute-mapping="ATTRIBUTE_MAPPING" \
          --attribute-condition="ATTRIBUTE_CONDITION" \
          --jwk-json-path="JWK_JSON_PATH" \
          --detailed-audit-logging \
          --location=global
      

      取代下列項目:

      • WORKFORCE_PROVIDER_ID:工作團隊身分集區提供者專屬 ID。前置字串「gcp-」為預留字串,不得用於工作團隊身分集區或工作團隊身分集區提供者 ID。
      • WORKFORCE_POOL_ID:要連結 IdP 的員工身分集區 ID。
      • DISPLAY_NAME:供應商的選用易記顯示名稱,例如 idp-eu-employees
      • DESCRIPTION:員工供應商說明 (選填),例如 IdP for Partner Example Organization employees
      • ISSUER_URI:OIDC 核發者 URI,格式必須為有效的 URI,且開頭為 https,例如 https://example.com/oidc。注意:基於安全考量,ISSUER_URI 必須使用 HTTPS 通訊協定。
      • OIDC_CLIENT_ID:向 OIDC IdP 註冊的 OIDC 用戶端 ID;這個 ID 必須與 IdP 發行的 JWT 的 aud 聲明相符。
      • WEB_SSO_ADDITIONAL_SCOPES:要傳送至 OIDC IdP 的選用額外範圍,適用於主控台 (聯合) 或 gcloud CLI 瀏覽器型登入。
      • ATTRIBUTE_MAPPING屬性對應。 如果是使用 OIDC 驗證的 Microsoft Entra ID,建議您採用下列屬性對應:

        google.subject=assertion.sub,
        google.groups=assertion.groups,
        google.display_name=assertion.preferred_username
        

        這個範例會將 IdP 屬性 subjectgroupspreferred_username 分別對應至 Google Cloud屬性 google.subjectgoogle.groupsgoogle.display_name

      • ATTRIBUTE_CONDITION屬性條件; 舉例來說,如要將 ipaddr 屬性限制在特定 IP 範圍內,可以設定 assertion.ipaddr.startsWith('98.11.12.') 條件。
      • JWK_JSON_PATH本機上傳的 OIDC JWK 的選用路徑。 如果未提供這個參數, Google Cloud 會改用 IdP 的 /.well-known/openid-configuration 路徑,取得含有公開金鑰的 JWK。如要進一步瞭解本機上傳的 OIDC JWK,請參閱「管理 OIDC JWK」。
      • 員工身分聯盟詳細稽核記錄會將從 IdP 收到的資訊記錄到 Cloud Logging。詳細稽核記錄有助於排解工作團隊身分集區提供者設定問題。如要瞭解如何透過詳細稽核記錄排解屬性對應錯誤,請參閱「一般屬性對應錯誤」。如要瞭解 Logging 定價,請參閱「Google Cloud Observability 定價」一文。

        如要停用工作團隊身分集區提供者的詳細稽核記錄功能,請在執行 gcloud iam workforce-pools providers create 時省略 --detailed-audit-logging 旗標。如要停用詳細稽核記錄,也可以更新供應商

      在指令回應中,POOL_RESOURCE_NAME 是集區的名稱,例如 locations/global/workforcePools/enterprise-example-organization-employees

    控制台

    代碼流程

    如要建立使用授權碼流程的 OIDC 供應商,以便透過網路登入,請按照下列步驟操作:

    1. 如要取得 Microsoft Entra ID 用戶端密鑰,請按照下列步驟操作:

      1. 前往 Microsoft Entra ID 應用程式註冊頁面。

      2. 在「Certificates & secrets」中,按一下「Client secrets」分頁標籤。

      3. 如要新增用戶端密鑰,請按一下「+ New client secret」

      4. 在「新增用戶端密鑰」對話方塊中,視需要輸入資訊。

      5. 如要建立用戶端密鑰,請按一下「新增」

      6. 在「Client secrets」分頁中,找出新的用戶端密鑰。

      7. 在新的用戶端密鑰「值」欄中,按一下「複製」圖示

    2. 在 Google Cloud 控制台中,如要建立使用授權碼流程的 OIDC 提供者,請按照下列步驟操作:

      1. 前往 Google Cloud 控制台的「Workforce Identity Pools」(員工身分集區) 頁面:

        前往「Workforce Identity Pools」(員工身分集區) 頁面

      2. 在「Workforce Identity Pools」(員工身分集區) 表格中,選取要建立提供者的集區。

      3. 在「供應商」部分中,按一下「新增供應商」

      4. 在「Select a Provider vendor」(選取提供者) 清單中,選取您的 IdP。

        如果您的 IdP 未列在清單中,請選取「一般身分識別提供者」

      5. 在「選取驗證通訊協定」中,選取「OpenID Connect (OIDC)」

      6. 在「建立供應商」部分中,執行下列操作:

        1. 在「名稱」中,輸入供應商的名稱。
        2. 在「說明」中,輸入提供者的說明。
        3. 在「核發者 (網址)」中輸入核發者 URI。OIDC 核發者 URI 必須採用有效的 URI 格式,且開頭為 https,例如 https://example.com/oidc
        4. 在「用戶端 ID」中,輸入向 OIDC IdP 註冊的 OIDC 用戶端 ID;這個 ID 必須與 IdP 發行的 JWT 的 aud 聲明相符。
        5. 如要建立已啟用的供應商,請確認「啟用供應商」已開啟。

        6. 按一下「繼續」
      7. 在「Share your provider information with IdP」(與 IdP 分享提供者資訊) 部分,複製網址。 在 IdP 中,將這個網址設為重新導向 URI,讓 IdP 瞭解登入後要將斷言權杖傳送至何處。

      8. 按一下「繼續」

      9. 在「設定 OIDC 網頁登入功能」部分,完成下列步驟:

        1. 在「流程類型」清單中,選取「程式碼」
        2. 在「Assertion claims behavior」(聲明主張行為) 清單中,選取下列任一選項:

          • 使用者資訊和 ID 權杖
          • 僅限 ID 權杖
        3. 在「用戶端密鑰」欄位中,輸入 IdP 的用戶端密鑰。

        4. 選用:如果您選取 Okta 做為 IdP,請在「openid、profile 和 email 以外的額外範圍」欄位中,新增任何額外 OIDC 範圍。

      10. 按一下「繼續」

      11. 在「設定供應商」中,您可以設定屬性對應和屬性條件。如要建立屬性對應,請按照下列步驟操作。您可以提供 IdP 欄位名稱,也可以提供傳回字串的 CEL 格式運算式。

        1. 必要:在「OIDC 1」中,輸入 IdP 的主體,例如 assertion.sub

          如果是使用 OIDC 驗證的 Microsoft Entra ID,建議您採用下列屬性對應:

          google.subject=assertion.sub,
          google.groups=assertion.groups,
          google.display_name=assertion.preferred_username
          

          這個範例會將 IdP 屬性 subjectgroupspreferred_username 分別對應至 Google Cloud屬性 google.subjectgoogle.groupsgoogle.display_name

        2. 選用:如要新增其他屬性對應,請按照下列步驟操作:

          1. 按一下 [新增對應]
          2. 在「Google n」(其中 n 是數字) 中,輸入其中一個Google Cloud支援的按鍵
          3. 在對應的「OIDC n欄位中,以 CEL 格式輸入要對應的 IdP 特定欄位名稱。
        3. 如果您選取 Microsoft Entra ID 做為 IdP,可以增加群組數量。

          1. 選取「使用額外的屬性」
          2. 在「額外屬性核發者 URI」欄位中,輸入核發者網址。
          3. 在「Extra Attributes Client ID」(額外屬性用戶端 ID) 欄位中,輸入用戶端 ID。
          4. 在「Extra Attributes Client Secret」(額外屬性用戶端密鑰) 欄位中,輸入用戶端密鑰。
          5. 在「額外屬性類型」清單中,選取額外屬性的屬性類型。
          6. 在「額外屬性篩選器」欄位中,輸入透過 Microsoft Graph API 查詢群組時使用的篩選運算式。
        4. 如要建立屬性條件,請按照下列步驟操作:

          1. 按一下「新增條件」
          2. 在「屬性條件」欄位中,以 CEL 格式輸入條件;舉例來說,如要將 ipaddr 屬性限制在特定 IP 範圍內,可以設定 assertion.ipaddr.startsWith('98.11.12.') 條件。
        5. 如要啟用詳細稽核記錄,請在「詳細記錄」中,點選「啟用屬性值稽核記錄」切換鈕。

          員工身分聯盟詳細稽核記錄會將從 IdP 收到的資訊記錄到 Cloud Logging。詳細稽核記錄有助於排解工作團隊身分集區提供者設定問題。如要瞭解如何透過詳細稽核記錄排解屬性對應錯誤,請參閱「一般屬性對應錯誤」。如要瞭解 Logging 定價,請參閱「Google Cloud Observability 定價」一文。

          如要停用工作團隊身分集區提供者的詳細稽核記錄功能,請在執行 gcloud iam workforce-pools providers create 時省略 --detailed-audit-logging 旗標。如要停用詳細稽核記錄,也可以更新供應商

      12. 如要建立提供者,請按一下「提交」

    隱含流程

    如要建立使用隱含流程的 OIDC 供應商,以便透過網路登入,請按照下列步驟操作:

    1. 如要在 Microsoft Entra ID 應用程式中啟用 ID 權杖,請按照下列步驟操作:

      1. 前往 Microsoft Entra ID 應用程式註冊頁面。
      2. 在「驗證」中,勾選「ID 權杖」核取方塊。
      3. 按一下 [儲存]

    1. 前往 Google Cloud 控制台的「Workforce Identity Pools」(員工身分集區) 頁面:

      前往「Workforce Identity Pools」(員工身分集區) 頁面

    2. 在「Workforce Identity Pools」(員工身分集區) 表格中,選取要建立提供者的集區。

    3. 在「供應商」部分中,按一下「 新增供應商」

    4. 在「Select a Provider vendor」(選取提供者) 清單中,選取您的 IdP。

      如果您的 IdP 未列在清單中,請選取「一般身分識別提供者」

    5. 在「選取驗證通訊協定」中,選取「OpenID Connect (OIDC)」

    6. 在「建立供應商」部分中,執行下列操作:

      1. 在「名稱」中,輸入供應商的名稱。
      2. 在「說明」中,輸入提供者的說明。
      3. 在「核發者 (網址)」中輸入核發者 URI。OIDC 核發者 URI 必須採用有效的 URI 格式,且開頭為 https,例如 https://example.com/oidc
      4. 在「用戶端 ID」中,輸入向 OIDC IdP 註冊的 OIDC 用戶端 ID;這個 ID 必須與 IdP 發行的 JWT 的 aud 聲明相符。
      5. 如要建立已啟用的供應商,請確認「啟用供應商」已開啟。
      6. 按一下「繼續」
    7. 在「Share your provider information with IdP」(與 IdP 分享提供者資訊) 部分,複製網址。 在 IdP 中,將這個網址設為重新導向 URI,讓 IdP 瞭解登入後要將斷言權杖傳送至何處。

    8. 按一下「繼續」

    9. 在「設定 OIDC 網頁登入功能」部分,完成下列步驟:

      1. 在「Flow type」(流程類型) 清單中,選取「ID Token」(ID 權杖)

      2. 在「Assertion claims behavior」(斷言聲明行為) 清單中,選取「ID token」(ID 權杖)

      3. 選用:如果您選取 Okta 做為 IdP,請在「openid、profile 和 email 以外的額外範圍」欄位中,新增任何額外 OIDC 範圍。

    10. 按一下「繼續」

    11. 在「設定供應商」中,您可以設定屬性對應和屬性條件。如要建立屬性對應,請按照下列步驟操作。您可以提供 IdP 欄位名稱,也可以提供傳回字串的 CEL 格式運算式。

      1. 必要:在「OIDC 1」中,輸入 IdP 的主體,例如 assertion.sub

        如果是使用 OIDC 驗證的 Microsoft Entra ID,建議您採用下列屬性對應:

        google.subject=assertion.sub,
        google.groups=assertion.groups,
        google.display_name=assertion.preferred_username
        

        這個範例會將 IdP 屬性 subjectgroupspreferred_username 分別對應至 Google Cloud屬性 google.subjectgoogle.groupsgoogle.display_name

      2. 選用:如要新增其他屬性對應,請按照下列步驟操作:

        1. 按一下 [新增對應]
        2. 在「Google n」(其中 n 是數字) 中,輸入其中一個Google Cloud支援的按鍵
        3. 在對應的「OIDC n欄位中,以 CEL 格式輸入要對應的 IdP 特定欄位名稱。
      3. 如果您選取 Microsoft Entra ID 做為 IdP,可以增加群組數量。

        1. 選取「使用額外的屬性」
        2. 在「額外屬性核發者 URI」欄位中,輸入核發者網址。
        3. 在「Extra Attributes Client ID」(額外屬性用戶端 ID) 欄位中,輸入用戶端 ID。
        4. 在「Extra Attributes Client Secret」(額外屬性用戶端密鑰) 欄位中,輸入用戶端密鑰。
        5. 在「額外屬性類型」清單中,選取額外屬性的屬性類型。
        6. 在「額外屬性篩選器」欄位中,輸入透過 Microsoft Graph API 查詢群組時使用的篩選運算式。
      4. 如要建立屬性條件,請按照下列步驟操作:

        1. 按一下「新增條件」
        2. 在「屬性條件」欄位中,以 CEL 格式輸入條件;舉例來說,如要將 ipaddr 屬性限制在特定 IP 範圍內,可以設定 assertion.ipaddr.startsWith('98.11.12.') 條件。
      5. 如要啟用詳細稽核記錄,請在「詳細記錄」中,點選「啟用屬性值稽核記錄」切換鈕。

        員工身分聯盟詳細稽核記錄會將從 IdP 收到的資訊記錄到 Cloud Logging。詳細稽核記錄有助於排解工作團隊身分集區提供者設定問題。如要瞭解如何透過詳細稽核記錄排解屬性對應錯誤,請參閱「一般屬性對應錯誤」。如要瞭解 Logging 定價,請參閱「Google Cloud Observability 定價」一文。

        如要停用工作團隊身分集區提供者的詳細稽核記錄功能,請在執行 gcloud iam workforce-pools providers create 時省略 --detailed-audit-logging 旗標。如要停用詳細稽核記錄,也可以更新供應商

    12. 如要建立提供者,請按一下「提交」

建立 SAML 2.0 工作團隊身分集區提供者

  1. 在 SAML IdP 中,為 Google Cloud員工身分聯盟註冊新應用程式。

  2. 設定 SAML 宣告的目標對象。 通常是 IdP 設定中的 SP Entity ID 欄位。請務必將其設為下列網址:

    https://iam.googleapis.com/locations/global/workforcePools/WORKFORCE_POOL_ID/providers/WORKFORCE_PROVIDER_ID
    
  3. 設定重新導向網址,又稱為宣告客戶服務 (ACS) 網址。如要設定重新導向網址,請在 SAML IdP 中找到重新導向網址欄位,然後執行下列任一操作:

    • 如要透過 Google Cloud 控制台或其他瀏覽器登入方法設定瀏覽器登入,請輸入下列網址:

      https://auth.cloud.google/signin-callback/locations/global/workforcePools/WORKFORCE_POOL_ID/providers/WORKFORCE_PROVIDER_ID
      

      更改下列內容:

      • WORKFORCE_POOL_ID:員工身分集區 ID

      • WORKFORCE_PROVIDER_ID:您稍後在本文件中建立的員工身分集區提供者 ID。

    • 如要透過 IdP 設定程式輔助登入,請輸入下列網址:

      localhost
      

    如要進一步瞭解如何設定控制台登入,請參閱「設定控制台的使用者存取權」。

  4. 在 Google Cloud中,使用 IdP 的 SAML 中繼資料文件建立 SAML 工作團隊身分識別集區供應商。您可以從 IdP 下載 SAML 中繼資料 XML 文件。文件至少須包含下列資訊:

    • IdP 的 SAML 實體 ID。
    • IdP 的單一登入網址。
    • 至少一個簽署公開金鑰。如要瞭解簽署金鑰的詳細資訊,請參閱本指南稍後的「金鑰規定」。

gcloud

如要儲存 Microsoft Entra ID 應用程式的 SAML 中繼資料,請按照下列步驟操作:

  1. 前往 Microsoft Entra ID 應用程式。
  2. 點選 [Single sign-on] (單一登入)。
  3. 在「SAML 憑證」部分,下載「同盟中繼資料 XML」
  4. 將中繼資料儲存為本機 XML 檔案。

如要建立 SAML 工作團隊身分識別集區提供者,請執行下列指令:

gcloud iam workforce-pools providers create-saml WORKFORCE_PROVIDER_ID \
    --workforce-pool="WORKFORCE_POOL_ID" \
    --display-name="DISPLAY_NAME" \
    --description="DESCRIPTION" \
    --idp-metadata-path="XML_METADATA_PATH" \
    --attribute-mapping="ATTRIBUTE_MAPPING" \
    --attribute-condition="ATTRIBUTE_CONDITION" \
    --detailed-audit-logging \
    --location=global

更改下列內容:

  • WORKFORCE_PROVIDER_ID:供應商 ID。
  • WORKFORCE_POOL_ID:員工身分集區 ID。
  • DISPLAY_NAME:顯示名稱。
  • DESCRIPTION:說明。
  • XML_METADATA_PATH:XML 格式的中繼資料檔案路徑,內含 SAML 識別資訊提供者的設定中繼資料。
  • ATTRIBUTE_MAPPING屬性對應,例如:

    google.subject=assertion.subject,
    google.groups=assertion.attributes['https://example.com/aliases'],
    attribute.costcenter=assertion.attributes.costcenter[0]
    這個範例會將 IdP 屬性 assertion.subjectassertion.attributes['https://example.com/aliases']assertion.attributes.costcenter[0] 分別對應至 Google Cloud屬性 google.subjectgoogle.groupsgoogle.costcenter

    詳情請參閱「屬性對應」。

  • ATTRIBUTE_CONDITION:選用的屬性條件。 舉例來說,如要將 ipaddr 屬性限制在特定 IP 範圍內,可以設定 assertion.attributes.ipaddr.startsWith('98.11.12.') 條件。這個範例條件可確保只有 IP 位址開頭為 98.11.12. 的使用者,才能使用這個員工身分提供者登入。

  • 員工身分聯盟詳細稽核記錄會將從 IdP 收到的資訊記錄到 Cloud Logging。詳細稽核記錄有助於排解工作團隊身分集區提供者設定問題。如要瞭解如何透過詳細稽核記錄排解屬性對應錯誤,請參閱「一般屬性對應錯誤」。如要瞭解 Logging 定價,請參閱「Google Cloud Observability 定價」一文。

    如要停用工作團隊身分集區提供者的詳細稽核記錄功能,請在執行 gcloud iam workforce-pools providers create 時省略 --detailed-audit-logging 旗標。如要停用詳細稽核記錄,也可以更新供應商

選用:接受來自 IdP 的加密 SAML 宣告

如要讓 SAML 2.0 IdP 產生員工身分聯盟可接受的加密 SAML 聲明,請按照下列步驟操作:

  • 在員工身分聯盟中,請完成下列步驟:
    • 為工作團隊身分集區提供者建立非對稱金鑰組。
    • 下載內含公開金鑰的憑證檔案。
    • 將 SAML IdP 設為使用公開金鑰,加密發出的 SAML 聲明。
  • 在 IdP 中,請執行下列操作:
    • 啟用斷言加密,也稱為權杖加密。
    • 上傳您在員工身分聯盟中建立的公開金鑰。
    • 確認 IdP 會產生加密的 SAML 聲明。
請注意,即使已設定 SAML 加密提供者金鑰,員工身分聯盟仍可處理明文聲明。

建立員工身分聯盟 SAML 聲明加密金鑰

本節將引導您建立非對稱金鑰組,讓員工身分聯盟接受加密的 SAML 聲明。

Google Cloud 會使用私密金鑰解密 IdP 發出的 SAML 宣告。如要建立非對稱金鑰組以用於 SAML 加密,請執行下列指令。詳情請參閱「支援的 SAML 加密演算法」。

gcloud iam workforce-pools providers keys create KEY_ID \
    --workforce-pool WORKFORCE_POOL_ID \
    --provider WORKFORCE_PROVIDER_ID \
    --location global \
    --use encryption \
    --spec KEY_SPECIFICATION

取代下列項目:

  • KEY_ID:您選擇的鍵名
  • WORKFORCE_POOL_ID:集區 ID
  • WORKFORCE_PROVIDER_ID:員工身分集區提供者 ID
  • KEY_SPECIFICATION:金鑰規格,可以是 rsa-2048rsa-3072rsa-4096 其中之一。

建立金鑰組後,如要將公開金鑰下載到憑證檔案,請執行下列指令。只有員工身分聯盟可以存取私密金鑰。

gcloud iam workforce-pools providers keys describe KEY_ID \
    --workforce-pool WORKFORCE_POOL_ID \
    --provider WORKFORCE_PROVIDER_ID \
    --location global \
    --format "value(keyData.key)" \
    > CERTIFICATE_PATH

取代下列項目:

  • KEY_ID:金鑰名稱
  • WORKFORCE_POOL_ID:集區 ID
  • WORKFORCE_PROVIDER_ID:員工身分集區提供者 ID
  • CERTIFICATE_PATH:要寫入憑證的路徑,例如 saml-certificate.cersaml-certificate.pem

設定符合 SAML 2.0 規範的 IdP,發布加密的 SAML 聲明

如要設定 Microsoft Entra ID 加密 SAML 權杖,請參閱「設定 Azure Active Directory SAML 權杖加密」。

設定 IdP 加密 SAML 聲明後,建議您檢查聲明是否確實經過加密。即使已設定 SAML 聲明加密,員工身分聯盟仍可處理明文聲明。

刪除員工身分聯盟加密金鑰

如要刪除 SAML 加密金鑰,請執行下列指令:
  gcloud iam workforce-pools providers keys delete KEY_ID \
      --workforce-pool WORKFORCE_POOL_ID \
      --provider WORKFORCE_PROVIDER_ID \
      --location global

取代下列項目:

  • KEY_ID:金鑰名稱
  • WORKFORCE_POOL_ID:集區 ID
  • WORKFORCE_PROVIDER_ID:員工身分集區提供者 ID

支援的 SAML 加密演算法

員工身分聯盟支援下列金鑰傳輸演算法:

員工身分聯盟支援下列區塊加密演算法:

控制台

如要使用 Google Cloud 控制台設定 SAML 提供者,請按照下列步驟操作:

  1. 前往 Google Cloud 控制台的「Workforce Identity Pools」(員工身分集區) 頁面:

    前往「Workforce Identity Pools」(員工身分集區) 頁面

  2. 在「Workforce Identity Pools」(工作團隊身分集區) 表格中,選取要建立提供者的集區。

  3. 在「供應商」部分中,按一下「新增供應商」

  4. 在「Select a Provider vendor」(選取提供者) 清單中,選取您的 IdP。

    如果清單中沒有您的 IdP,請選取「Generic Identity Provider」(一般身分識別提供者)

  5. 在「選取驗證通訊協定」中,選取「SAML」

  6. 在「建立供應商」部分中,執行下列操作:

    1. 在「名稱」部分,輸入供應商名稱。

    2. 選用:在「Description」(說明) 中輸入供應商說明。

    3. 在「IdP 中繼資料檔案 (XML)」中,選取您在本指南稍早產生的中繼資料 XML 檔案。

    4. 如要建立已啟用的供應商,請確認「啟用供應商」已開啟。

    5. 按一下「繼續」

  7. 在「Share your provider information」部分,複製網址。 在 IdP 中,將第一個網址設為實體 ID,向 IdP 識別您的應用程式。 將其他網址設為重新導向 URI,讓 IdP 瞭解登入後要將斷言權杖傳送至何處。

  8. 按一下「繼續」

  9. 在「設定供應商」部分,完成下列步驟:

    1. 在「屬性對應」中,輸入 google.subject 的 CEL 運算式。

    2. 選用:如要輸入其他對應,請按一下「新增對應」,然後輸入其他對應,例如:

      google.subject=assertion.subject,
      google.groups=assertion.attributes['https://example.com/aliases'],
      attribute.costcenter=assertion.attributes.costcenter[0]
      這個範例會將 IdP 屬性 assertion.subjectassertion.attributes['https://example.com/aliases']assertion.attributes.costcenter[0] 分別對應至 Google Cloud屬性 google.subjectgoogle.groupsgoogle.costcenter

    3. 如果您選取 Microsoft Entra ID 做為 IdP,可以透過下列方式增加群組數量:

      1. 選取「使用額外的屬性」
      2. 在「額外屬性核發者 URI」欄位中,輸入核發者網址。
      3. 在「Extra Attributes Client ID」(額外屬性用戶端 ID) 欄位中,輸入用戶端 ID。
      4. 在「Extra Attributes Client Secret」(額外屬性用戶端密鑰) 欄位中,輸入用戶端密鑰。
      5. 在「額外屬性類型」清單中,選取額外屬性的屬性類型。
      6. 在「額外屬性篩選器」欄位中,輸入透過 Microsoft Graph API 查詢群組時使用的篩選運算式。
    4. 選用:如要新增屬性條件,請按一下「新增條件」,然後輸入代表屬性條件的 CEL 運算式。舉例來說,如要將 ipaddr 屬性限制在特定 IP 範圍內,可以設定 assertion.attributes.ipaddr.startsWith('98.11.12.') 條件。這個範例條件可確保只有 IP 位址開頭為 98.11.12. 的使用者,才能使用這個員工身分提供者登入。

    5. 按一下「繼續」

    6. 如要啟用詳細稽核記錄,請在「詳細記錄」中,點選「啟用屬性值稽核記錄」切換鈕。

      員工身分聯盟詳細稽核記錄會將從 IdP 收到的資訊記錄到 Cloud Logging。詳細稽核記錄有助於排解工作團隊身分集區提供者設定問題。如要瞭解如何透過詳細稽核記錄排解屬性對應錯誤,請參閱「一般屬性對應錯誤」。如要瞭解 Logging 定價,請參閱「Google Cloud Observability 定價」一文。

      如要停用工作團隊身分集區提供者的詳細稽核記錄功能,請在執行 gcloud iam workforce-pools providers create 時省略 --detailed-audit-logging 旗標。如要停用詳細稽核記錄,也可以更新供應商

  10. 如要建立提供者,請按一下「提交」

管理 Google Cloud 資源存取權

本節提供範例,說明如何管理員工身分聯盟使用者對Google Cloud 資源的存取權。

在本範例中,您將在範例專案中授予 Identity and Access Management (IAM) 角色。使用者即可登入並使用這個專案存取 Google Cloud 產品。

您可以管理單一身分、身分群組或整個集區的身分與存取權管理角色。詳情請參閱「在 IAM 政策中代表員工身分集區使用者」。

使用對應群組

如要將「Storage 管理員」角色 (roles/storage.admin) 授予群組 GROUP_ID 內的所有身分,請針對專案 TEST_PROJECT_ID 執行下列指令:

gcloud projects add-iam-policy-binding TEST_PROJECT_ID \
    --role="roles/storage.admin" \
    --member="principalSet://iam.googleapis.com/locations/global/workforcePools/WORKFORCE_POOL_ID/group/GROUP_ID"

更改下列內容:

  • TEST_PROJECT_ID:測試專案 ID
  • WORKFORCE_POOL_ID:員工身分集區 ID
  • GROUP_ID:對應的google.groups聲明中的群組。

單一身分

如要將「Storage 管理員」roles/storage.admin角色授予專案 TEST_PROJECT_ID 的單一身分,請執行下列指令:

gcloud projects add-iam-policy-binding TEST_PROJECT_ID \
    --role="roles/storage.admin" \
    --member="principal://iam.googleapis.com/locations/global/workforcePools/WORKFORCE_POOL_ID/subject/SUBJECT_VALUE"

更改下列內容:

  • TEST_PROJECT_ID:測試專案 ID
  • WORKFORCE_POOL_ID:員工身分集區 ID
  • SUBJECT_VALUE:使用者身分

使用對應的部門屬性

如要將「Storage 管理員」角色 (roles/storage.admin) 授予專案 TEST_PROJECT_ID 中特定部門的所有身分,請執行下列指令:

gcloud projects add-iam-policy-binding TEST_PROJECT_ID \
    --role="roles/storage.admin" \
    --member="principalSet://iam.googleapis.com/locations/global/workforcePools/WORKFORCE_POOL_ID/attribute.department/DEPARTMENT_VALUE"

更改下列內容:

  • TEST_PROJECT_ID:測試專案 ID
  • WORKFORCE_POOL_ID:員工身分集區 ID
  • DEPARTMENT_VALUE:對應的 attribute.department

登入並測試存取權

在本節中,您會以工作團隊身分集區使用者身分登入,並測試您是否能存取 Google Cloud 資源。

登入

本節說明如何以同盟使用者身分登入,並存取Google Cloud 資源。

控制台 (聯合) 登入

如要登入 Google Cloud 員工身分聯盟控制台 (又稱聯合控制台),請按照下列步驟操作:

  1. 前往主控台 (聯合) 登入頁面。

    前往主控台 (已同盟)

  2. 輸入提供者名稱,格式如下:
    locations/global/workforcePools/WORKFORCE_POOL_ID/providers/WORKFORCE_PROVIDER_ID
  3. 如果系統提示,請在 Microsoft Entra ID 中輸入使用者憑證。

    如果您啟動 IdP 啟動的登入程序,請使用以下網址做為中繼網址:https://console.cloud.google/

gcloud CLI 瀏覽器登入

如要使用瀏覽器登入流程登入 gcloud CLI,請執行下列操作:

建立設定檔

如要建立登入設定檔,請執行下列指令。您可以視需要新增 --activate 標記,將檔案設為 gcloud CLI 的預設設定。這樣一來,您之後執行 gcloud auth login 時,就不必每次都指定設定檔路徑。

gcloud iam workforce-pools create-login-config \
    locations/global/workforcePools/WORKFORCE_POOL_ID/providers/PROVIDER_ID \
    --output-file=LOGIN_CONFIG_FILE_PATH

更改下列內容:

  • WORKFORCE_POOL_ID:工作團隊集區 ID
  • PROVIDER_ID:供應商 ID
  • LOGIN_CONFIG_FILE_PATH:您指定的設定檔路徑,例如 login.json

這個檔案包含 gcloud CLI 用於啟用瀏覽器式驗證流程的端點,並將目標對象設為工作團隊身分集區提供者中設定的 IdP。檔案不含機密資訊。

輸出看起來類似以下內容:

{
  "type": "external_account_authorized_user_login_config",
  "audience": "//iam.googleapis.com/locations/global/workforcePools/WORKFORCE_POOL_ID/providers/WORKFORCE_PROVIDER_ID",
  "auth_url": "https://auth.cloud.google/authorize",
  "token_url": "https://sts.googleapis.com/v1/oauthtoken",
  "token_info_url": "https://sts.googleapis.com/v1/introspect"
}

如要停止讓 gcloud auth login 自動使用這個設定檔,請執行 gcloud config unset auth/login_config_file 取消設定。

使用瀏覽器驗證登入

如要使用瀏覽器型登入驗證進行驗證,可以採用下列其中一種方法:

  • 如果您在建立設定檔時使用 --activate 標記,或使用 gcloud config set auth/login_config_file 啟用設定檔,gcloud CLI 會自動使用您的設定檔:

    gcloud auth login
  • 如要指定設定檔位置登入,請執行下列指令:

    gcloud auth login --login-config=LOGIN_CONFIG_FILE_PATH
  • 如要使用環境變數指定設定檔位置,請將 CLOUDSDK_AUTH_LOGIN_CONFIG_FILE 設為設定路徑。

停用瀏覽器登入功能

如要停止使用登入設定檔,請執行下列步驟:

  • 如果您在建立設定檔時使用了 --activate 旗標,或是使用 gcloud config set auth/login_config_file 啟用了設定檔,則必須執行下列指令來取消設定:

    gcloud config unset auth/login_config_file
  • 清除 CLOUDSDK_AUTH_LOGIN_CONFIG_FILE 環境變數 (如果已設定)。

gcloud CLI 無頭登入

如要使用 gcloud CLI 登入 Microsoft Entra ID,請執行下列操作:

OIDC

  1. 按照「傳送登入要求」一文中的步驟操作。 使用 OIDC,透過 Microsoft Entra ID 將使用者登入應用程式。

  2. 從重新導向網址的 id_token 參數複製 ID 權杖,並儲存在本機電腦安全位置的檔案中。在後續步驟中,您會將 PATH_TO_OIDC_ID_TOKEN 設為這個檔案的路徑。

  3. 執行下列指令,產生類似本步驟稍後範例的設定檔:

    gcloud iam workforce-pools create-cred-config \
        locations/global/workforcePools/WORKFORCE_POOL_ID/providers/WORKFORCE_PROVIDER_ID \
        --subject-token-type=urn:ietf:params:oauth:token-type:id_token \
        --credential-source-file=PATH_TO_OIDC_ID_TOKEN \
        --workforce-pool-user-project=WORKFORCE_POOL_USER_PROJECT \
        --output-file=config.json
    

    更改下列內容:

    • WORKFORCE_POOL_ID:員工身分集區 ID。
    • WORKFORCE_PROVIDER_ID:員工身分集區提供者 ID。
    • PATH_TO_OIDC_ID_TOKEN:儲存 IdP 權杖的檔案路徑。
    • WORKFORCE_POOL_USER_PROJECT:用於配額和帳單的專案編號或 ID。主體必須具備這項專案的 serviceusage.services.use 權限。

    指令完成後,Microsoft Entra ID 會建立下列設定檔:

    {
      "type": "external_account",
      "audience": "//iam.googleapis.com/locations/global/workforcePools/WORKFORCE_POOL_ID/providers/WORKFORCE_PROVIDER_ID",
      "subject_token_type": "urn:ietf:params:oauth:token-type:id_token",
      "token_url": "https://sts.googleapis.com/v1/token",
      "workforce_pool_user_project": "WORKFORCE_POOL_USER_PROJECT",
      "credential_source": {
        "file": "PATH_TO_OIDC_CREDENTIALS"
      }
    }
    
  4. 開啟 gcloud CLI 並執行下列指令:

    gcloud auth login --cred-file=PATH_TO_OIDC_CREDENTIALS
    

    PATH_TO_OIDC_CREDENTIALS 替換為上一步的輸出檔案路徑。

    gcloud CLI 會將您的憑證透明地發布至 Security Token Service 端點。在端點中,授權碼會換成臨時 Google Cloud 存取權杖。

    現在可以執行 gcloud CLI 指令來Google Cloud。

SAML

  1. 讓使用者登入 Microsoft Entra ID 應用程式,並取得 SAML 回應。

  2. 將 Microsoft Entra ID 傳回的 SAML 回應儲存在本機電腦的安全位置,然後依下列方式儲存路徑:

    SAML_ASSERTION_PATH=SAML_ASSERTION_PATH
    
  3. 如要產生憑證設定檔,請執行下列指令:

    gcloud iam workforce-pools create-cred-config \
        locations/global/workforcePools/WORKFORCE_POOL_ID/providers/WORKFORCE_PROVIDER_ID \
        --subject-token-type=urn:ietf:params:oauth:token-type:saml2 \
        --credential-source-file=SAML_ASSERTION_PATH  \
        --workforce-pool-user-project=PROJECT_ID  \
        --output-file=config.json
    

    更改下列內容:

    • WORKFORCE_PROVIDER_ID:您在本指南中稍早建立的員工身分集區提供者 ID
    • WORKFORCE_POOL_ID:您在本指南中稍早建立的員工身分集區 ID
    • SAML_ASSERTION_PATH:SAML 聲明檔案的路徑
    • PROJECT_ID:專案 ID

    產生的設定檔類似於下列內容:

    {
       "type": "external_account",
       "audience": "//iam.googleapis.com/locations/global/workforcePools/WORKFORCE_POOL_ID/providers/WORKFORCE_PROVIDER_ID",
       "subject_token_type": "urn:ietf:params:oauth:token-type:saml2",
       "token_url": "https://sts.googleapis.com/v1/token",
       "credential_source": {
         "file": "SAML_ASSERTION_PATH"
       },
       "workforce_pool_user_project": "PROJECT_ID"
    }
    
  4. 如要使用員工身分聯盟權杖交換功能登入 gcloud CLI,請執行下列指令:

    gcloud auth login --cred-file=config.json
    

    接著,gcloud CLI 會以 Microsoft Entra ID 憑證換取臨時 Google Cloud 存取權杖。存取權杖可讓您存取 Google Cloud。

    畫面會顯示類似以下內容的輸出:

    Authenticated with external account user credentials for:
    [principal://iam.googleapis.com/locations/global/workforcePools/WORKFORCE_POOL_ID/subject/USER_ID].
  5. 如要列出已通過驗證的帳戶和有效帳戶,請執行下列指令:

    gcloud auth list
    

測試存取權

您現在可以存取支援員工身分聯盟的產品,前提是您已獲得存取權。 Google Cloud 在本文件的稍早部分,您已將 Storage Admin 角色 (roles/storage.admin) 授予 TEST_PROJECT_ID 專案中 gcloud projects add-iam-policy-binding 內指定的所有身分。

現在您可以列出 Cloud Storage 值區,測試自己是否具備存取權。

主控台 (已聯邦)

如要使用控制台 (聯合) 測試存取權,請按照下列步驟操作:

  • 前往 Cloud Storage 頁面。

    前往 Cloud Storage

  • 確認您可以看到 TEST_PROJECT_ID 的現有 bucket 清單。

gcloud CLI

如要使用 gcloud CLI 測試存取權,您可以列出有權存取的專案的 Cloud Storage 值區和物件。如要執行此操作,請執行下列指令。主體必須具備指定專案的serviceusage.services.use權限。

gcloud storage ls --project="TEST_PROJECT_ID"

刪除使用者

員工身分聯盟會為聯盟使用者身分建立使用者中繼資料和資源。如果您選擇在 IdP 中刪除使用者,也必須在 Google Cloud中明確刪除這些資源。如要這麼做,請參閱「刪除員工身分聯盟使用者及其資料」。

您可能會發現資源仍與已刪除的使用者相關聯。 這是因為刪除使用者中繼資料和資源需要長時間執行的作業。啟動刪除使用者身分識別程序後,使用者在刪除前啟動的程序會繼續執行,直到完成或取消為止。

設定 SCIM

本節說明如何在員工身分集區中設定 SCIM 租戶。

每個員工身分集區僅支援一個 SCIM 租戶。如要在已包含 SCIM 租戶的集區中設定新的租戶,請先強制刪除現有租戶

SCIM 租戶的 --claim-mapping 旗標只能包含特定的一般運算式語言 (CEL) 運算式。如要瞭解支援哪些運算式,請參閱「對應權杖和 SCIM 屬性」。

如要設定跨網域身分管理系統 (SCIM),請完成下列步驟:

在 Google Cloud中設定 SCIM 租戶和權杖

如要在 Google Cloud中設定 SCIM 租戶,請按照下列步驟操作:

  1. 建立 SCIM 租戶。

        gcloud iam workforce-pools providers scim-tenants create SCIM_TENANT_ID \
            --workforce-pool="WORKFORCE_POOL_ID" \
            --provider="PROVIDER_ID" \
            --display-name="SCIM_TENANT_DISPLAY_NAME" \
            --description="SCIM_TENANT_DESCRIPTION" \
            --claim-mapping="CLAIM_MAPPING" \
            --location="global"
        

    更改下列內容:

    • SCIM_TENANT_ID:SCIM 租戶的 ID。
    • WORKFORCE_POOL_ID:您在本文件中先前建立的員工集區 ID。
    • PROVIDER_ID:您在本文件中稍早建立的員工身分集區提供者 ID。
    • SCIM_TENANT_DISPLAY_NAME:SCIM 租戶的顯示名稱。
    • SCIM_TENANT_DESCRIPTION:SCIM 租戶的說明。
    • CLAIM_MAPPING:以半形逗號分隔的屬性對應清單。建議您使用下列屬性對應:
      google.subject=user.externalId,google.group=group.externalId
      您在 SCIM 租戶中對應的 google.subject 屬性,必須使用 --attribute-mapping 旗標,在員工身分集區提供者的 google.subject 屬性中,專指相同的對應身分。建立 SCIM 租戶後,您就無法更新聲明對應。如要更換,可以強制刪除 SCIM 租戶,然後立即建立新的租戶。如要進一步瞭解使用 SCIM 的注意事項,請參閱「SCIM 支援」。
  2. 指令完成後,請執行下列操作:

    1. 在輸出內容的 baseUri 欄位中,儲存格式為 https://iamscim.googleapis.com/v1alpha1/tenants/SCIM_TENANT_UID 的完整 URI。您必須將這個 URI 提供給 IdP。
    2. 此外,請只儲存 URI 中的 SCIM_TENANT_UID。 您需要這個 UID,才能在本文件的後續步驟中,在 SCIM 租戶上設定 IAM 政策。
  3. 建立 SCIM 權杖:

        gcloud iam workforce-pools providers scim-tenants tokens create SCIM_TOKEN_ID \
            --display-name DISPLAY_NAME \
            --scim-tenant SCIM_TENANT_ID \
            --workforce-pool WORKFORCE_POOL_ID \
            --provider PROVIDER_ID \
            --location global
        

    更改下列內容:

    • SCIM_TOKEN_ID:SCIM 權杖的 ID
    • DISPLAY_NAME:SCIM 權杖的顯示名稱
    • WORKFORCE_POOL_ID:工作團隊集區的 ID
    • SCIM_TENANT_ID:SCIM 租戶的 ID
    • PROVIDER_ID:員工身分集區提供者的 ID
  4. gcloud iam workforce-pools providers scim-tenants tokens create 指令完成後,請執行下列操作:

    1. 在輸出中,將 SCIM_TOKEN 的值儲存在 securityToken 欄位中。您必須將這個安全權杖提供給 IdP。安全權杖只會顯示在輸出內容中, 如果遺失,就必須建立新的 SCIM 權杖。
    2. 如要檢查 SCIM_TOKEN 是否遭機構政策拒絕,請執行下列指令:
      curl -v -H "Authorization: Bearer SCIM_TOKEN"  https://iamscim.googleapis.com/v1alpha1/tenants/SCIM_TENANT_UID/Users
      如果指令失敗並顯示權限相關錯誤,請執行 gcloud organizations add-iam-policy-binding (詳見後續步驟)。如果指令成功,可以略過該步驟。
  5. 為 SCIM 租戶和權杖設定 IAM 政策。如果上一個步驟中的 curl 指令因權限相關錯誤而失敗,請執行下列指令:

        gcloud organizations add-iam-policy-binding ORGANIZATION_ID \
            --member=serviceAccount:SERVICE_AGENT_EMAIL \
            --role roles/iam.scimSyncer
        

    取代下列項目:

    • ORGANIZATION_ID:組織 ID。
    • SERVICE_AGENT_EMAIL:服務專員的電子郵件地址。電子郵件地址的格式如下:o-ORGANIZATION_ID-SCIM_TENANT_UID@gcp-sa-iamscim.iam.gserviceaccount.com。建立 SCIM 租戶時,系統會傳回 SCIM_TENANT_UID

在 IdP 中佈建群組時,請確保每個群組的顯示名稱 (在 displayName 欄位中提供) 在 SCIM 租戶中是唯一的。如要進一步瞭解 Microsoft Entra ID 中的群組和 SCIM,請參閱「群組」。

在 Microsoft Entra ID 中設定 SCIM

如要在 Microsoft Entra ID 中設定 SCIM,請按照下列步驟操作:

  1. 開啟 Azure 入口網站,並以具備全域管理員權限的使用者身分登入。
  2. 依序選取「Microsoft Entra ID」>「Enterprise Apps」
  3. 按一下「New application」(新增應用程式)
  4. 在「Browse Microsoft Entra App gallery」(瀏覽 Microsoft Entra 應用程式庫) 中,按一下「Create your own application」(建立自己的應用程式)
  5. 在隨即顯示的「Create your own application」(建立專屬應用程式) 面板中,執行下列步驟:
    1. 在「What's the name of your app」(應用程式名稱) 部分,輸入應用程式名稱。
    2. 選取「Integrate any other application you don't find in gallery (Non-gallery)」(整合在資源庫中找不到的任何其他應用程式 (非資源庫))
    3. 按一下「建立」,即可建立應用程式。
  6. 在應用程式中執行下列操作:
    1. 在「管理」部分,按一下「佈建」
    2. 在隨即顯示的右側窗格中,按一下「新增設定」
    3. 在「管理員憑證」下方的「租戶網址」中,輸入建立 SCIM 租戶時取得的 SCIM 網址,並附加 ?aadOptscim062020。 您必須在基礎 URI 結尾加上 ?aadOptscim062020

      Microsoft Entra ID 必須使用這項查詢參數,確保 SCIM PATCH 要求符合 SCIM RFC 標準。詳情請參閱 Microsoft 說明文件

      Microsoft Entra ID 中的最終租戶網址應採用下列格式:

      https://iamscim.googleapis.com/v1alpha1/tenants/SCIM_TENANT_UID?aadOptscim062020

      SCIM_TENANT_UID 替換為 SCIM 租戶 UID。

    4. 在「Secret token」(密鑰權杖) 中,輸入建立 SCIM 租戶時取得的密鑰權杖。
    5. 如要測試員工身分聯盟的 SCIM 設定,請按一下「測試連線」
    6. 如要儲存設定,請按一下「建立」
  7. 在「管理」部分執行下列操作:
    1. 按一下「屬性對應」
    2. 按一下「佈建 Microsoft Entra ID 使用者」
    3. 在「屬性對應」頁面中,執行下列操作:
      1. 在「屬性對應」表格中,找到 externalId 所在的資料列,然後按一下該列中的「編輯」。 在「編輯屬性」頁面中,執行下列操作:
        1. 在「使用這個屬性比對物件」中,選取 Yes
        2. 在「相符優先順序」中輸入 2
        3. 在「來源屬性」下拉式清單中,選取 objectId
        4. 如要儲存屬性對應,請按一下「確定」
      2. 在「屬性對應」表格中,找到 userName 所在的資料列,然後按一下該列中的「編輯」。 在「編輯屬性」頁面中,執行下列操作:
        1. 在「使用這個屬性比對物件」中,選取 No
        2. 如要儲存屬性對應,請按一下「確定」
      3. 在「屬性對應」表格中,找到 externalId 所在的資料列,然後按一下該列中的「編輯」。 在「編輯屬性」頁面中,執行下列操作:
        1. 在「相符優先順序」中輸入 1
        2. 如要儲存屬性對應,請按一下「確定」
    4. 按一下「佈建 Microsoft Entra ID 群組」
    5. 在「屬性對應」頁面中,執行下列操作:
      1. 在「屬性對應」表格中,找到 externalId 所在的資料列,然後按一下該列中的「編輯」。 在「編輯屬性」頁面中,執行下列操作:
        1. 在「使用這個屬性比對物件」中,選取 Yes
        2. 在「相符優先順序」中輸入 2
        3. 在「來源屬性」下拉式清單中,選取 objectId
        4. 如要儲存屬性對應,請按一下「確定」
      2. 在「屬性對應」表格中,找到 displayName 所在的資料列,然後按一下該列中的「編輯」。 在「編輯屬性」頁面中,執行下列操作:
        1. 在「使用這項屬性比對物件」中,選取 No
        2. 如要儲存屬性對應,請按一下「確定」
      3. 在「屬性對應」表格中,找到 externalId 所在的資料列,然後按一下該列中的「編輯」。 在「編輯屬性」頁面中,執行下列操作:
        1. 在「相符優先順序」中輸入 1
        2. 如要儲存屬性對應,請按一下「確定」

更新供應商以啟用 SCIM

如要為供應商啟用 SCIM,請按照下列步驟操作:

OIDC

      gcloud iam workforce-pools providers update-oidc PROVIDER_ID \
          --workforce-pool=WORKFORCE_POOL_ID \
          --location=LOCATION \
          --scim-usage=enabled-for-groups
    

取代下列項目:

  • PROVIDER_ID:員工身分集區提供者的 ID
  • WORKFORCE_POOL_ID:工作團隊集區的 ID
  • LOCATION:工作團隊集區的位置

SAML

      gcloud iam workforce-pools providers update-saml PROVIDER_ID \
          --workforce-pool=WORKFORCE_POOL_ID \
          --location=LOCATION \
          --scim-usage=enabled-for-groups
    

取代下列項目:

  • PROVIDER_ID:員工身分集區提供者的 ID
  • WORKFORCE_POOL_ID:工作團隊集區的 ID
  • LOCATION:工作團隊集區的位置

對應權杖和 SCIM 屬性

您必須在工作團隊身分集區提供者和為提供者設定的 SCIM 租戶中,一致地對應屬性。如果是工作團隊身分集區提供者,請使用 --attribute-mapping 標記;如果是 SCIM 租戶,請使用 --claim-mapping 標記。無論是在權杖或 SCIM 對應中定義,對應至使用者 google.subject 的 IdP 屬性都必須專指同一身分。如要進一步瞭解使用 SCIM 時如何對應屬性,請參閱「 SCIM 支援」一節。下表說明如何對應權杖聲明中的屬性和 SCIM 屬性:

Google 屬性 工作團隊身分集區提供者對應 SCIM 租戶對應
google.subject assertion.oid user.externalId
google.subject assertion.email user.emails[0].value
google.subject assertion.email.lowerAscii() user.emails[0].value.lowerAscii()
google.subject assertion.preferred_username user.userName
google.group請務必向供應商提供--scim-usage=enabled-for-groups N/A group.externalId

強制刪除 SCIM 用戶端

如要強制刪除 SCIM 租戶,請按照下列步驟操作:

  1. 如果供應商已設定 --scim-usage=enabled-for-groups,請從供應商設定中停用:
              gcloud iam workforce-pools providers update-oidc
              --provider=PROVIDER_ID \
              --workforce-pool=WORKFORCE_POOL_ID \
              --location= global
              --scim-usage=SCIM_USAGE_UNSPECIFIED
            

    取代下列項目:

    • PROVIDER_ID:員工身分集區提供者的 ID
    • WORKFORCE_POOL_ID:工作團隊集區的 ID

  2. 刪除 SCIM 租戶:
      gcloud iam workforce-pools providers scim-tenants delete SCIM_TENANT_ID \
          --workforce-pool=WORKFORCE_POOL_ID \
          --provider=PROVIDER_ID \
          --hard-delete \
          --location=global
    

    取代下列項目:

    • SCIM_TENANT_ID:要刪除的 SCIM 租戶 ID
    • WORKFORCE_POOL_ID:工作團隊集區的 ID
    • PROVIDER_ID:員工身分集區提供者的 ID
    如要進一步瞭解 SCIM (包括如何刪除 SCIM 租戶),請參閱「SCIM 支援」一文。

後續步驟