使用 Okta 設定員工身分聯盟並登入使用者

本指南說明如何使用 Okta 做為身分識別提供者 (IdP) 設定員工身分聯盟、管理存取權,以及登入使用者以存取Google Cloud 支援員工身分聯盟的服務。

事前準備

  1. 確認您已 Google Cloud 設定機構。
  2. After installing the Google Cloud CLI, initialize it by running the following command:

    gcloud init

    If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.

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

費用

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

必要的角色

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

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

此外,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」頁面:

    前往工作團隊身分集區

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

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

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

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

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

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

建立 Okta 應用程式整合

本節提供使用 Okta 管理控制台建立 Okta 應用程式整合服務的步驟。詳情請參閱「建立自訂應用程式整合」。

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

詳情請參閱 Okta 的 OIDCSAML 整合指南。本節將說明基本設定。

OIDC

如要建立使用 OIDC 通訊協定的 Okta 應用程式整合服務,請按照下列步驟操作:

  1. 登入 Okta 管理控制台。
  2. 依序前往「應用程式」>「應用程式」
  3. 如要開始設定應用程式整合,請執行下列操作:

    1. 按一下「Create App Integration」
    2. 在「登入方式」中,選取「OIDC - OpenID Connect」
    3. 在「應用程式類型」中選取應用程式類型,例如「網頁應用程式」
    4. 如要建立應用程式,請按「Next」(下一步)
    5. 在「應用程式整合名稱」中,輸入應用程式名稱。
    6. 在「授權類型」部分,選取「隱含 (混合)」核取方塊。
    7. 在「Sign-in redirect URIs」部分,於文字欄位中輸入重新導向網址。使用者成功登入後,系統會將他們重新導向至這個網址。如要設定控制台 (聯盟) 的存取權,請使用下列網址格式:

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

      更改下列內容:

      • WORKFORCE_POOL_ID:您在本指南稍早建立的工作團隊集區 ID。
      • WORKFORCE_PROVIDER_ID:您選擇的員工身分識別提供者 ID,例如:okta-oidc-provider。如要瞭解如何設定 ID 格式,請參閱 API 說明文件中的「查詢參數」一節。
    8. 選取「暫時略過指派群組」核取方塊。

    9. 如要儲存應用程式整合,請按一下「儲存」

  4. 將應用程式整合指派給使用者

  5. 選用:如要為 Okta 使用者設定檔新增自訂屬性,請按照下列步驟操作:

    1. 在「資料類型」中,選取 string
    2. 在「Display name」(顯示名稱) 中輸入 Department
    3. 在「變數名稱」中輸入 department
    4. 如要儲存對應,請按一下「儲存」

    如要進一步瞭解如何新增自訂屬性,請參閱「在 Okta 使用者個人資料中新增自訂屬性」。

  6. 選用:如要為 OIDC 權杖中傳送的屬性建立對應,請在「目錄」中按一下「設定檔編輯器」,然後執行下列操作:

    1. 找出您在本指南稍早建立的 OIDC 應用程式。
    2. 按一下「對應」
    3. 選取「Okta User to App」(Okta 使用者對應至應用程式) 分頁標籤。
    4. 在「Okta User User Profile」(Okta 使用者設定檔) 分頁中,在可用的下拉式方塊中輸入 department。Okta 會自動填入 user.department
    5. 如要儲存對應關係,請按一下「儲存對應」。詳情請參閱「新增屬性對應」。

    如要進一步瞭解對應,請參閱「在設定檔編輯器中將 Okta 屬性對應至應用程式屬性」。

  7. 選用:如要設定群組聲明,請執行下列步驟:

    1. 如果您使用機構授權伺服器,請執行下列操作:

      1. 依序前往「應用程式」>「應用程式」
      2. 選取您在本節稍早建立的 OpenID Connect 用戶端應用程式。
      3. 前往「登入」分頁
      4. 在「OpenID Connect ID Token」專區中,按一下「Edit」
      5. 在「群組聲明類型」部分,您可以選取下列任一選項:
        • 選取「運算式」
        • 選取「與規則運算式相符」,然後輸入 .*
      6. 如要儲存群組擁有權聲明,請按一下「儲存」
      7. 如要讓使用者透過控制台 (已加入聯盟) 或 gcloud CLI 瀏覽器型登入流程登入,請在本文件稍後建立員工身分集區提供者時,執行下列操作:

        1. 請務必使用 gcloud CLI 指示,以便使用 --web-sso-additional-scopes 旗標。

        2. 建立工作團隊身分集區提供者時,請在 --web-sso-additional-scopes 中傳遞 groups 做為額外範圍。這樣做會在登入期間向 Okta 要求群組憑證附加資訊。

    2. 如果您使用自訂授權伺服器,請執行下列操作:

      1. 在管理控制台中,從「安全性」選單選取「API」
      2. 選取要設定的自訂授權伺服器。
      3. 前往「著作權聲明」分頁,然後按一下「新增著作權聲明」
      4. 輸入著作權聲明名稱。在本例中,請將其命名為 groups
      5. 在聲明中,於「Include in token type」(包含在權杖類型中) 選取「ID Token」(ID 權杖),然後選取「Always」(一律)
      6. 選取「群組」做為「值類型」
      7. 在「篩選條件」下拉式方塊中,選取「符合規則運算式」,然後輸入下列運算式做為值:.*
      8. 點選「建立」

如要進一步瞭解群組聲明,請參閱「新增群組聲明」。

SAML

如要建立使用 SAML 通訊協定的 Okta 應用程式整合,請按照下列步驟操作:

  1. 登入 Okta 管理控制台。
  2. 依序前往「應用程式」>「應用程式」
  3. 按一下「Create App Integration」
  4. 在「登入方法」中選取「SAML 2.0」,然後按一下「下一步」
  5. 輸入應用程式名稱,然後按一下「下一步」,繼續設定「設定 SAML」選項。
  6. 在「單一登入網址」中,輸入重新導向網址。這是使用者成功登入後重新導向的網址。如果您要設定控制台存取權,請使用下列網址格式。

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

  7. 輸入「目標對象 URI」 (SP Entity ID)。ID 格式如下:

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

    更改下列內容:

    • WORKFORCE_POOL_ID:您在本指南稍早建立的工作團隊身分集區 ID
    • WORKFORCE_PROVIDER_ID:您選擇的員工身分提供者 ID,例如:okta-saml-provider

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

  8. 選用:使用屬性陳述式指定要在 SAML 判斷中傳送的任何自訂屬性。設定完成後,您可以在 Google Cloud 中使用這些屬性建立存取管理政策,或在 attribute_condition 中使用;舉例來說,在本指南中,您會將部門對應至下列項目:

    名稱
    department user.department

    選用:如要新增群組聲明 (本指南稍後會用到),請參閱「如何在 SAML 聲明中傳遞使用者的群組成員資格」。

  9. 完成 Okta 應用程式整合服務的建立程序。

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

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

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

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

  1. 如要取得 Okta 應用程式整合項目的用戶端 ID,請按照下列步驟操作:

    1. 前往 Okta 應用程式整合。
    2. 按一下「一般」分頁標籤。
    3. 複製「用戶端 ID」欄位的內容。
  2. 如要為網頁式登入建立 OIDC 工作團隊身分集區提供者,請按照下列步驟操作:

    gcloud

    代碼流程

    在 Okta 中執行下列操作:

    1. 在「用戶端驗證」中,選取「用戶端密鑰」

    2. 在「Client Secrets」(用戶端密鑰) 表格中找到密鑰,然後按一下「Copy」(複製)

    在 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 瀏覽器型登入;例如,如果使用 Okta 的機構授權伺服器,可傳送 groups 向 Okta 要求群組聲明。
    • ATTRIBUTE_MAPPING屬性對應。 以下是屬性對應的範例:
      google.subject=assertion.sub,
      google.groups=assertion.group1,
      attribute.costcenter=assertion.costcenter
      這個範例會將 OIDC 聲明中的 IdP 屬性 subjectgroup1costcenter 分別對應至 google.subjectgoogle.groupsattribute.costcenter 屬性。
    • ATTRIBUTE_CONDITION屬性條件,例如 assertion.subject.endsWith('@example.com'),當先前對應的 subject 值包含結尾為 @example.com 的電子郵件地址時。
    • JWK_JSON_PATH本機上傳的 OIDC JWK 的選用路徑。 如果未提供這個參數, Google Cloud 會改用 IdP 的 /.well-known/openid-configuration 路徑,取得含有公開金鑰的 JWK。如要進一步瞭解本機上傳的 OIDC JWK,請參閱管理 OIDC JWK
    • 員工身分聯盟詳細稽核記錄會將從 IdP 收到的資訊記錄到 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 瀏覽器型登入;例如,如果使用 Okta 的機構授權伺服器,可傳送 groups 向 Okta 要求群組聲明。
    • ATTRIBUTE_MAPPING屬性對應。 以下是屬性對應的範例:
      google.subject=assertion.sub,
      google.groups=assertion.group1,
      attribute.costcenter=assertion.costcenter
      這個範例會將 OIDC 聲明中的 IdP 屬性 subjectgroup1costcenter 分別對應至 google.subjectgoogle.groupsattribute.costcenter 屬性。
    • ATTRIBUTE_CONDITION屬性條件,例如 assertion.subject.endsWith('@example.com'),當先前對應的 subject 值包含結尾為 @example.com 的電子郵件地址時。
    • JWK_JSON_PATH本機上傳的 OIDC JWK 的選用路徑。 如果未提供這個參數, Google Cloud 會改用 IdP 的 /.well-known/openid-configuration 路徑,取得含有公開金鑰的 JWK。如要進一步瞭解本機上傳的 OIDC JWK,請參閱管理 OIDC JWK
    • 員工身分聯盟詳細稽核記錄會將從 IdP 收到的資訊記錄到 Logging。詳細稽核記錄有助於排解工作團隊身分識別集區提供者設定問題。如要瞭解如何透過詳細的稽核記錄排解屬性對應錯誤,請參閱「一般屬性對應錯誤」。如要瞭解 Logging 定價,請參閱 Google Cloud Observability 定價

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

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

    控制台

    代碼流程

    1. 在 Okta 中執行下列操作:

      1. 在「用戶端驗證」中,選取「用戶端密鑰」

      2. 在「Client Secrets」(用戶端密鑰) 表格中找到密鑰,然後按一下「Copy」(複製)

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

      1. 前往 Google Cloud 控制台的「Workforce Identity Pools」頁面:

        前往工作團隊身分集區

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

      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.subject.endsWith('@example.com') 當先前對應的 subject 值包含結尾為 @example.com 的電子郵件地址時。
        4. 如要啟用詳細稽核記錄,請在「詳細記錄」中,點按「啟用詳細屬性值記錄」切換鈕。

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

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

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

    隱含流程

    1. 在 Google Cloud Google Cloud 控制台中,執行下列操作:

      1. 前往 Google Cloud 控制台的「Workforce Identity Pools」頁面:

        前往工作團隊身分集區

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

      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.subject.endsWith('@example.com') 當先前對應的 subject 值包含結尾為 @example.com 的電子郵件地址時。

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

          員工身分聯盟詳細稽核記錄會將從 IdP 收到的資訊記錄到 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

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

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

    1. 前往 Okta 應用程式。
    2. 按一下「登入」分頁標籤。
    3. 在「SAML 簽署憑證」部分,依序點選有效憑證的「動作」>「查看 IdP 中繼資料」
    4. 在隨即開啟的新頁面中,複製 XML 中繼資料。
    5. 將中繼資料儲存為本機 XML 檔案。
  2. 如要為 Okta 應用程式建立工作團隊供應商,請執行下列指令:

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

    更改下列內容:

    • WORKFORCE_PROVIDER_ID:您在本指南中稍早建立的員工提供者 ID。
    • WORKFORCE_POOL_ID:您在本指南稍早建立的員工身分集區 ID。
    • 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. 的使用者,才能使用這個員工身分提供者登入。

    • XML_METADATA_PATH:您在本指南稍早建立的 Okta 應用程式 XML 格式中繼資料檔案路徑。

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

    • 員工身分聯盟詳細稽核記錄會將從 IdP 收到的資訊記錄到 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 聲明

    如要設定 Okta 加密 SAML 聲明,請按照下列步驟操作:

    • 前往 Okta 資訊主頁並登入。
    • 依序前往「應用程式」>「應用程式」
    • 按一下您的應用程式。
    • 在「一般」分頁的「SAML 設定」部分,按一下「編輯」
    • 按一下「下一步」即可查看「SAML 設定」
    • 按一下 [顯示進階設定]
    • 在「SAML Settings」中,執行下列操作:
      • 在「回應」 (建議) 或「聲明簽章」中,選取 Signed
      • 在「Signature Algorithm」和「Digest Algorithm」中,選取任一選項。
      • 設定以下這些值:
        • 斷言加密:已加密。
        • 加密演算法:您可以選擇任何演算法。
        • Encryption Certificate:上傳您在本指南中稍早產生的憑證檔案。
    • 如要儲存設定,請依序點選「下一步」和「完成」

    將 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 加密演算法

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

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

控制台

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

  1. 前往 Google Cloud 控制台的「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 收到的資訊記錄到 Logging。詳細稽核記錄有助於排解工作團隊身分識別集區提供者設定問題。如要瞭解如何透過詳細的稽核記錄排解屬性對應錯誤,請參閱「一般屬性對應錯誤」。如要瞭解 Logging 定價,請參閱 Google Cloud Observability 定價

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

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

管理 Google Cloud 資源存取權

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

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

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

單一身分

如要將「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

使用對應群組

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

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聲明中的群組。

登入並測試存取權

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

登入

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

透過瀏覽器登入 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://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,請執行下列操作:

OIDC

  1. 讓使用者登入 Okta 應用程式,並從 Okta 取得 OIDC 權杖

  2. 將 Okta 傳回的 OIDC 權杖儲存在本機電腦的安全位置。

  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_TOKEN:OIDC IdP 憑證檔案的路徑
  • WORKFORCE_POOL_USER_PROJECT:與工作團隊集區使用者專案相關聯的專案編號

主體必須具備這項專案的 serviceusage.services.use 權限。

執行指令後,系統會產生 OIDC IdP 設定檔,格式類似於下列範例:

{
  "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_FILE"
  }
}

SAML

  1. 讓使用者登入 Okta 應用程式,並從 Okta 取得 SAML 回應

  2. 將 Okta 傳回的 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"
    }
    

如要使用權杖交換登入 gcloud,請執行下列指令:

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

gcloud,然後以透明方式將 Okta 憑證換成臨時存取權杖,讓您能對 gcloud Google Cloud發出其他呼叫。Google Cloud

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

Authenticated with external account user credentials for:
[principal://iam.googleapis.com/locations/global/workforcePools/WORKFORCE_POOL_ID/subject/USER_ID].

如要列出已通過驗證的帳戶和目前使用中的帳戶,請執行下列指令:

gcloud auth list

控制台 (聯盟) 登入

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

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

    前往主控台 (已同盟)

  2. 輸入提供者名稱,格式如下:
    locations/global/workforcePools/WORKFORCE_POOL_ID/providers/WORKFORCE_PROVIDER_ID
    1. 系統提示時,請在 Okta 應用程式整合服務中輸入使用者憑證。

    如果您啟動 IdP 起始登入,請在巢狀「Default RelayState」 參數的「SAML 設定」中使用下列網址: https://console.cloud.google/

測試存取權

您現在可以存取支援員工身分聯盟,且您已獲授權存取的 Google Cloud 服務。在本指南稍早的內容中,您已將「儲存空間管理員」角色 (roles/storage.admin) 授予專案 TEST_PROJECT_ID 中特定部門的所有身分。現在列出 Cloud Storage 值區,即可測試您是否擁有存取權。

gcloud CLI

如要列出您有權存取的專案 Cloud Storage bucket 和物件,請執行下列指令:

gcloud storage ls --project="TEST_PROJECT_ID"

主體必須具備指定專案的 serviceusage.services.use 權限。

主控台 (已聯邦)

如要使用控制台 (已同盟) 列出 Cloud Storage bucket,請按照下列步驟操作:

  • 前往 Cloud Storage 頁面。
  • 確認您可以看到 TEST_PROJECT_ID 的現有 bucket 清單。

刪除使用者

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

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

後續步驟