設定員工身分聯盟

本指南說明如何使用支援 OIDCSAML 2.0 的識別資訊提供者 (IdP),設定員工身分聯盟。

如需 IdP 專屬操作說明,請參閱下列文章:

事前準備

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

    gcloud init

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

  3. Enable the Identity and Access Management (IAM) and Resource Manager APIs.

    Enable the APIs

  4. 如要登入,您的 IdP 必須提供已簽署的驗證資訊:OIDC IdP 必須提供 JWT,且 SAML IdP 回應必須經過簽署。
  5. 如要接收貴機構或產品的異動相關重要資訊,請務必提供必要聯絡人。Google Cloud 詳情請參閱「員工身分聯盟總覽」。

費用

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

必要的角色

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

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

或者,擁有者基本角色 (roles/owner) 也包含設定員工身分聯盟的權限。您不應在正式版環境中授予基本角色,但可以在開發或測試環境中授予。

設定員工身分聯盟

如要設定員工身分聯盟,請建立員工身分集區員工身分集區提供者

建立工作團隊身分集區

如要建立集區,請執行下列指令:

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:員工身分集區的 Google Cloud 機構數值 ID。員工身分集區適用於機構中的所有專案和資料夾。
  • DISPLAY_NAME:選用。工作團隊身分識別集區的顯示名稱。
  • DESCRIPTION:選用。工作團隊身分集區說明。
  • SESSION_DURATION:選用。工作階段時間長度決定了從這個工作團隊集區取得的 Google Cloud 存取權杖、控制台 (已聯合) 登入工作階段,以及 gcloud CLI 登入工作階段的有效時間。工作階段持續時間預設為一小時 (3600 秒)。工作階段時間值必須介於 15 分鐘 (900 秒) 和 12 小時 (43200 秒) 之間。

主控台

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

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

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

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

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

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

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

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

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

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

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

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

如要使用 OIDC 通訊協定建立工作團隊身分集區提供者,請執行下列步驟:

  1. 在 OIDC IdP 中,為 Google Cloud員工身分聯盟註冊新應用程式。請記下 IdP 提供的用戶端 ID 和簽發者 URI。您會在本文中使用這些值。

  2. 如要設定使用者存取控制台的權限,請將下列重新導向網址新增至 OIDC IdP:

    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. 在 Google Cloud中,如要建立提供者,請執行下列步驟:

    gcloud

    代碼流程

    如要建立使用授權碼流程的 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屬性對應。 以下是屬性對應的範例:
      google.subject=assertion.sub,
      google.groups=assertion.group1,
      attribute.costcenter=assertion.costcenter
      這個範例會將 OIDC 聲明中的 IdP 屬性 subjectgroup1costcenter 分別對應至 google.subjectgoogle.groupsattribute.costcenter 屬性。
    • ATTRIBUTE_CONDITION屬性條件,例如 assertion.role == 'gcp-users'。這個範例條件可確保只有具備 gcp-users 角色的使用者,才能使用這個供應商登入。
    • 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 提供者,以供網頁登入,請執行下列指令:

    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屬性對應。 以下是屬性對應的範例:
      google.subject=assertion.sub,
      google.groups=assertion.group1,
      attribute.costcenter=assertion.costcenter
      這個範例會將 OIDC 聲明中的 IdP 屬性 subjectgroup1costcenter 分別對應至 google.subjectgoogle.groupsattribute.costcenter 屬性。
    • ATTRIBUTE_CONDITION屬性條件,例如 assertion.role == 'gcp-users'。這個範例條件可確保只有具備 gcp-users 角色的使用者,才能使用這個供應商登入。
    • 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

    前置字串「gcp-」為預留字串,不得用於工作團隊身分集區或工作團隊身分集區提供者 ID。

    如果是 OIDC 聯盟,您可以使用 assertion.NAME:與 ID 權杖酬載中同名附加資訊的值相等的字串。

    控制台

    代碼流程

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

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

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

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

    3. 在「供應商」表格中,按一下「新增供應商」

    4. 在「選取通訊協定」中,選取「Open ID Connect (OIDC)」

    5. 在「建立集區提供者」中,執行下列操作:

      1. 在「名稱」中輸入供應商名稱。
      2. 在「核發者 (網址)」中,輸入核發者 URI。OIDC 核發者 URI 必須採用有效的 URI 格式,且開頭為 https,例如 https://example.com/oidc
      3. 輸入「用戶端 ID」,也就是向 OIDC IdP 註冊的 OIDC 用戶端 ID;這個 ID 必須與 IdP 發行的 JWT 的 aud 聲明相符。
      4. 如要建立已啟用的供應商,請確認「已啟用供應商」已開啟。
      5. 按一下「繼續」
    6. 在「流程類型」中,執行下列操作。流程類型僅適用於網頁式單一登入流程。

      1. 在「流程類型」中,選取「程式碼」
      2. 在「用戶端密鑰」中,輸入 IdP 的用戶端密鑰。
      3. 在「聲明主張行為」中,選取下列任一選項:

        • 使用者資訊和 ID 權杖
        • 僅限 ID 權杖
      4. 按一下「繼續」

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

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

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

        1. 按一下 [新增對應]
        2. 在「Google n」中 (其中 n 是數字),輸入其中一個Google Cloud支援的按鍵
        3. 在對應的 OIDC n 欄位中,以 CEL 格式輸入要對應的 IdP 特定欄位名稱。
      3. 如要建立屬性條件,請按照下列步驟操作:

        1. 按一下「新增條件」
        2. 在「屬性條件」中,以 CEL 格式輸入條件,例如 assertion.role == 'gcp-users'。這個條件範例可確保只有具備 gcp-users 角色的使用者,才能使用這個供應商登入。
      4. 如要開啟詳細稽核記錄,請在「詳細記錄」中,點按「啟用詳細屬性值記錄」切換鈕。

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

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

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

    隱含流程

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

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

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

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

    3. 在「供應商」表格中,按一下「新增供應商」

    4. 在「選取通訊協定」中,選取「Open ID Connect (OIDC)」

    5. 在「建立集區提供者」中,執行下列操作:

      1. 在「名稱」部分,輸入供應商名稱。
      2. 在「核發者 (網址)」中,輸入核發者 URI。OIDC 核發者 URI 必須採用有效的 URI 格式,且開頭為 https,例如 https://example.com/oidc
      3. 輸入「用戶端 ID」,也就是向 OIDC IdP 註冊的 OIDC 用戶端 ID;這個 ID 必須與 IdP 發行的 JWT 的 aud 聲明相符。
      4. 如要建立已啟用的供應商,請確認「已啟用供應商」已開啟。
      5. 按一下「繼續」
    6. 在「流程類型」中,執行下列操作。流程類型僅適用於網頁式單一登入流程。

      1. 在「流程類型」中,選取「ID 權杖」
      2. 按一下「繼續」
    7. 在「設定供應商」中,您可以設定屬性對應和屬性條件。如要建立屬性對應,請按照下列步驟操作。您可以提供 IdP 欄位名稱,也可以提供傳回字串的 CEL 格式運算式。

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

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

        1. 按一下 [新增對應]
        2. 在「Google n」中 (其中 n 是數字),輸入其中一個Google Cloud支援的按鍵
        3. 在對應的 OIDC n 欄位中,以 CEL 格式輸入要對應的 IdP 特定欄位名稱。
      3. 如要建立屬性條件,請按照下列步驟操作:

        1. 按一下「新增條件」
        2. 在「屬性條件」中,以 CEL 格式輸入條件,例如 assertion.role == 'gcp-users'。這個條件範例可確保只有具備 gcp-users 角色的使用者,才能使用這個供應商登入。

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

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

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

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

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

  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

如要使用 gcloud CLI 設定 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=METADATA_FILE_PATH \
      --attribute-mapping="ATTRIBUTE_MAPPING" \
      --attribute-condition="ATTRIBUTE_CONDITION" \
      --location=global

更改下列內容:

  • WORKFORCE_PROVIDER_ID:員工身分集區供應商 ID。
  • WORKFORCE_POOL_ID:工作團隊身分集區 ID。
  • DISPLAY_NAME 供應商的顯示名稱,例如 idp-eu-employees
  • DESCRIPTION:工作團隊身分集區提供者的說明,例如 IdP for Partner Example Organization EU employees
  • METADATA_FILE_PATH: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. 的使用者,才能使用這個員工身分提供者登入。

供應商可能需要幾分鐘才會開始接受要求。

如果是 SAML 聯盟,您可以在屬性對應和條件中使用下列關鍵字:

  • assertion.subject:與 SAML 聲明中的 NameID 屬性相等的字串。
  • assertion.attributes.NAME:字串清單,等同於 SAML 聲明中同名屬性的值。

選用:接受來自 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 聲明

將 SAML IdP 設定為使用上一個步驟下載的公開憑證,加密發出的 SAML 聲明。如需具體操作說明,請洽詢 IdP 團隊。

將 IdP 設定為加密 SAML 判斷後,建議您檢查 IdP 產生的判斷是否確實經過加密。即使已設定 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 加密演算法

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

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

SAML X.509 簽署金鑰規定

下列金鑰規格適用於 SAML X.509 簽署金鑰:

  • 包裝在 X.509 v3 憑證中的 RSA 公開金鑰。

  • 憑證有效性規定:

    • notBefore:時間戳記,不得晚於 7 天後
    • notAfter:時間戳記,不得超過 25 年
  • 建議使用的演算法:

員工身分集區提供者在特定時間最多可設定三個簽署金鑰。如果有多個金鑰, Google Cloud會逐一迭代,並嘗試使用每個未過期的金鑰來完成權杖交換要求。

為確保安全,我們強烈建議您不要將同一組金鑰與其他服務共用。

金鑰管理

如要更新 IdP 的簽署金鑰,請按照下列步驟操作:

  1. 建立新的非對稱金鑰組,並使用該金鑰組設定 SAML 識別資訊提供者。您會先將其標示為無效,然後在後續步驟中啟用。

  2. 從 IdP 下載 SAML 中繼資料 XML 文件。

  3. 使用 SAML 中繼資料文件更新工作團隊身分集區提供者資源。如果有多個金鑰, Google Cloud 會逐一迭代每個未過期的金鑰,並嘗試使用這些金鑰來滿足權杖交換要求。

    如要使用 SAML 中繼資料更新工作團隊身分識別集區提供者,請執行下列指令。

    gcloud iam workforce-pools providers update-saml WORKFORCE_PROVIDER_ID \
        --workforce-pool=WORKFORCE_POOL_ID \
        --idp-metadata-path=SAML_METADATA_FILE_PATH \
        --location=global
    

    更改下列內容:

    • WORKFORCE_PROVIDER_ID:工作團隊身分集區供應商 ID
    • WORKFORCE_POOL_ID:員工身分集區 ID
    • SAML_METADATA_FILE_PATH:SAML 中繼資料檔案的路徑
  4. 等待上一個步驟傳回的作業完成 (作業會標示為完成),然後在 SAML IdP 中啟用新的簽署金鑰。舊的簽署金鑰會標示為無效。 IdP 發出的聲明會使用新金鑰簽署。

下列步驟為選用步驟,但建議您執行這些步驟,以確保最佳成效:

  1. 從 IdP 刪除舊的簽署金鑰 (現已停用)。
  2. 從 IdP 下載 SAML 中繼資料 XML 文件。
  3. 使用 SAML 中繼資料文件更新工作團隊身分集區提供者資源。 Google Cloud 會拒絕以過期簽署金鑰簽署的聲明。如要更新文件,請執行下列指令:

    gcloud iam workforce-pools providers update-saml WORKFORCE_PROVIDER_ID \
        --workforce-pool=WORKFORCE_POOL_ID \
        --idp-metadata-path=SAML_METADATA_FILE_PATH \
        --location=global
    

    更改下列內容:

    • WORKFORCE_PROVIDER_ID:工作團隊身分集區供應商 ID
    • WORKFORCE_POOL_ID:員工身分集區 ID
    • SAML_METADATA_FILE_PATH:SAML 中繼資料路徑

刪除金鑰的限制

Google Cloud 會拒絕使用已刪除金鑰簽署的聲明。

主控台

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

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

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

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

  3. 在「供應商」表格中,按一下「新增供應商」

  4. 在「選取通訊協定」中,選取「SAML」

  5. 在「建立集區提供者」中,執行下列操作:

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

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

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

    4. 確認已啟用「Enabled provider」(已啟用供應商)

    5. 按一下「繼續」

  6. 在「設定供應商」中,執行下列操作:

    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. 選用:如要新增屬性條件,請按一下「新增條件」,然後輸入代表屬性條件的 CEL 運算式。 舉例來說,如要將 ipaddr 屬性限制在特定 IP 範圍內,可以設定 assertion.attributes.ipaddr.startsWith('98.11.12.') 條件。這個範例條件可確保只有 IP 位址開頭為 98.11.12. 的使用者,才能使用這個員工身分提供者登入。

    4. 按一下「繼續」

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

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

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

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

在 IAM 政策中代表工作團隊集區使用者

下表列出您用來將角色授予單一使用者、使用者群組、具有特定聲明的使用者,或工作人員集區中所有使用者的主體 ID。

身分 ID 格式
員工身分集區中的單一身分 principal://iam.googleapis.com/locations/global/workforcePools/POOL_ID/subject/SUBJECT_ATTRIBUTE_VALUE
群組中的所有員工身分 principalSet://iam.googleapis.com/locations/global/workforcePools/POOL_ID/group/GROUP_ID
具有特定屬性值的所有員工身分 principalSet://iam.googleapis.com/locations/global/workforcePools/POOL_ID/attribute.ATTRIBUTE_NAME/ATTRIBUTE_VALUE
工作團隊身分集區中的所有身分 principalSet://iam.googleapis.com/locations/global/workforcePools/POOL_ID/*

如需完整的主體 ID 清單,請參閱「主體 ID」。

將 IAM 角色授予主體

您可以將角色授予主體,例如單一身分、身分群組或整個集區。

如要將專案的角色授予主體,請執行下列指令:

gcloud projects add-iam-policy-binding PROJECT_ID \
    --role="ROLE" \
    --member="PRINCIPAL"

更改下列內容:

  • PROJECT_ID:專案 ID
  • ROLE:要設定的角色
  • PRINCIPAL:主體;請參閱員工身分聯盟的主體 ID

在下列範例中,指令會將 Storage Admin (roles/storage.admin) 授予群組 GROUP_ID 中的所有身分:

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

如要進一步瞭解主體格式,請參閱「員工身分聯盟的主體 ID」。

刪除使用者

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

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

後續步驟