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

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

事前準備

  1. 確認您已 Google Cloud 設定機構。
  2. Install the Google Cloud CLI. After installation, initialize the Google Cloud CLI 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://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,請執行下列操作:

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 使用者及其資料」。

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

後續步驟