設定員工身分聯盟

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

如需特定 IdP 的操作說明,請參閱下列文章:

事前準備

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

    gcloud init

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

  3. 啟用 Identity and Access Management (IAM) 和 Resource Manager API。

    啟用 API 時所需的角色

    如要啟用 API,您需要服務使用情形管理員 IAM 角色 (roles/serviceusage.serviceUsageAdmin),其中包含 serviceusage.services.enable 權限。瞭解如何授予角色

    啟用 API

  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。在 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 小時 (43200 秒) 之間。

控制台

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

  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 秒) 之間。

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

本節說明如何建立員工身分集區提供者,讓 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,格式為以 https 開頭的有效 URI,例如 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.oid
      google.groups=assertion.groups,
      attribute.costcenter=assertion.costcenter
      這個範例會將 OIDC 聲明中的 IdP 屬性 assertion.oidassertion.groupsassertion.costcenter,分別對應至 Google Cloud 屬性 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,格式為以 https 開頭的有效 URI,例如 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.oid
      google.groups=assertion.groups,
      attribute.costcenter=assertion.costcenter
      這個範例會將 OIDC 聲明中的 IdP 屬性 assertion.oidassertion.groupsassertion.costcenter,分別對應至 Google Cloud 屬性 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. 在「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. 在「與 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
      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 旗標。如要停用詳細稽核記錄,您也可以更新供應商

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

    隱含流程

    如要在 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. 在「與 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
      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 旗標。如要停用詳細稽核記錄,您也可以更新供應商

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

建立 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.oid
    attribute.costcenter=assertion.attributes.costcenter[0]
    這個範例會將 IdP 屬性 assertion.oidassertion.attributes.costcenter[0] 分別對應至 Google Cloud 屬性 google.subjectattribute.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 加密 provider 金鑰,員工身分聯盟仍可處理明文聲明。

建立員工身分聯盟 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 聲明後,建議您檢查聲明是否確實經過加密。即使已設定 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. 在「Select a Provider vendor」(選取提供者) 清單中,選取您的 IdP。

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

  5. 在「選取驗證通訊協定」中,選取「SAML」
  6. 在「建立供應商」部分,執行下列操作:
    1. 在「名稱」部分,輸入供應商名稱。
    2. 選用:在「Description」(說明) 中輸入供應商說明。
    3. 在「IdP 中繼資料檔案 (XML)」中,選取您在本指南稍早產生的中繼資料 XML 檔案。
    4. 如要建立已啟用的供應商,請確認「啟用供應商」已開啟。
    5. 按一下「繼續」
  7. 在「分享供應商資訊」部分,複製網址。在 IdP 中,將第一個網址設為實體 ID,用來向 IdP 識別應用程式。將另一個網址設為重新導向 URI,讓 IdP 瞭解登入後要將斷言權杖傳送至何處。
  8. 按一下「繼續」
  9. 在「設定供應商」部分,執行下列操作:
    1. 在「屬性對應」中,輸入 google.subject 的 CEL 運算式。
    2. 選用:如要輸入其他對應,請按一下「新增對應」,然後輸入其他對應,例如:
      google.subject=assertion.oid
      attribute.costcenter=assertion.attributes.costcenter[0]
      這個範例會將 IdP 屬性 assertion.oidassertion.attributes.costcenter[0] 分別對應至 Google Cloud 屬性 google.subjectattribute.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 旗標。如要停用詳細稽核記錄,您也可以更新供應商

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

驗證供應商設定

測試使用者登入流程前,請先確認 provider 設定正確無誤,且 Google Cloud 可以與 IdP 交換權杖。

Google Cloud 控制台的「驗證供應商屬性」頁面包含屬性檢視器,可讓您以互動方式測試設定,並偵錯通用運算式語言 (CEL) 運算式。您可以使用屬性檢視器執行下列操作:

  • 查看 IdP 聲明中傳送的原始屬性。
  • 確認屬性對應和條件可正確轉換這些屬性。
  • 即時偵錯複雜的 CEL 運算式。

如要驗證供應商設定,請按照下列步驟操作:

  1. 如要為員工身分聯盟啟用瀏覽器登入流程,請將 https://auth.cloud.google/signin-callback/locations/global/workforcePools/POOL_ID/providers/PROVIDER_ID 新增至 IdP 的允許重新導向 URI 清單。
  2. 前往 Google Cloud 控制台的「Workforce Identity Pools」(員工身分集區) 頁面。

    前往「Workforce Identity Pools」(員工身分集區) 頁面
  3. 在集區清單中,按一下要驗證的集區名稱。
  4. 在「員工集區詳細資料」頁面中,按一下要驗證的 IdP 名稱。
  5. 在「供應商詳細資料」頁面中,按一下「偵錯 IdP 權杖」
  6. 在「登入」對話方塊中,以測試使用者身分登入 IdP。

「驗證提供者屬性」頁面會顯示對應的屬性,以及屬性條件的結果。

「IdP 權杖中的對應屬性」部分會顯示 Google 屬性 (例如 google.subject) 如何根據對應設定,從 IdP 權杖填入。如果對應不正確,系統會顯示錯誤圖示。

「屬性條件」部分會顯示條件的布林結果。如果條件評估結果為 false,系統就會封鎖登入作業。

如要查看完整斷言權杖,請按一下「查看完整權杖」。這會顯示 IdP 的原始 JSON 物件。使用 assertion.PROPERTY_NAME 格式,在對應中參照頂層屬性。

編輯提供者設定

如要修正錯誤,請編輯設定:

  1. 在「驗證提供者屬性」頁面中,按一下「編輯」圖示
  2. 進行必要變更。
  3. 如要開始新的測試並查看更新結果,請按一下「儲存並重新擷取權杖」

IAM 政策的工作團隊主體 ID

下表列出可用於授予個別使用者和使用者群組角色的主體 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

在下列範例中,指令會將「儲存空間管理員」角色 (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中明確刪除這些資源。如要這麼做,請參閱「刪除員工身分聯盟使用者及其資料」。

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

後續步驟