本指南說明如何使用 Okta 做為身分識別提供者 (IdP) 設定員工身分聯盟、管理存取權,以及登入使用者以存取Google Cloud 支援員工身分聯盟的服務。
事前準備
- 確認您已 Google Cloud 設定機構。
-
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.
- 如要登入,您的 IdP 必須提供已簽署的驗證資訊:OIDC IdP 必須提供 JWT,且 SAML IdP 回應必須經過簽署。
- 如要接收貴機構或產品的異動相關重要資訊,請務必提供必要聯絡人。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 秒) 之間。
主控台
如要建立工作團隊身分集區,請執行下列操作:
前往 Google Cloud 控制台的「Workforce Identity Pools」頁面:
選取工作團隊身分集區的機構。機構中的所有專案和資料夾都可使用 Workforce 身分集區。
按一下「建立集區」,然後執行下列操作:
在「Name」(名稱) 欄位中,輸入集區的顯示名稱。系統會在您輸入名稱時自動衍生集區 ID,並顯示在「名稱」欄位下方。如要更新集區 ID,請點選集區 ID 旁的「編輯」。
選用:在「說明」中輸入集區說明。
如要建立員工身分集區,請按「Next」(下一步)。
工作團隊身分集區的工作階段持續時間預設為一小時 (3600 秒)。 工作階段時間長度決定了從這個工作團隊集區取得的 Google Cloud 存取權杖、控制台 (聯盟) 和 gcloud CLI 登入工作階段的有效時間。建立集區後,您可以更新集區,設定自訂工作階段時間長度。工作階段持續時間必須介於 15 分鐘 (900 秒) 至 12 小時 (43,200 秒) 之間。
建立 Okta 應用程式整合
本節提供使用 Okta 管理控制台建立 Okta 應用程式整合服務的步驟。詳情請參閱「建立自訂應用程式整合」。
員工身分集區支援使用 OIDC 和 SAML 通訊協定的聯盟。
詳情請參閱 Okta 的 OIDC 和 SAML 整合指南。本節將說明基本設定。
OIDC
如要建立使用 OIDC 通訊協定的 Okta 應用程式整合服務,請按照下列步驟操作:
- 登入 Okta 管理控制台。
- 依序前往「應用程式」>「應用程式」。
如要開始設定應用程式整合,請執行下列操作:
- 按一下「Create App Integration」。
- 在「登入方式」中,選取「OIDC - OpenID Connect」。
- 在「應用程式類型」中選取應用程式類型,例如「網頁應用程式」。
- 如要建立應用程式,請按「Next」(下一步)。
- 在「應用程式整合名稱」中,輸入應用程式名稱。
- 在「授權類型」部分,選取「隱含 (混合)」核取方塊。
在「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 說明文件中的「查詢參數」一節。
選取「暫時略過指派群組」核取方塊。
如要儲存應用程式整合,請按一下「儲存」。
選用:如要為 Okta 使用者設定檔新增自訂屬性,請按照下列步驟操作:
- 在「資料類型」中,選取
string
。 - 在「Display name」(顯示名稱) 中輸入
Department
。 - 在「變數名稱」中輸入
department
。 - 如要儲存對應,請按一下「儲存」。
如要進一步瞭解如何新增自訂屬性,請參閱「在 Okta 使用者個人資料中新增自訂屬性」。
- 在「資料類型」中,選取
選用:如要為 OIDC 權杖中傳送的屬性建立對應,請在「目錄」中按一下「設定檔編輯器」,然後執行下列操作:
- 找出您在本指南稍早建立的 OIDC 應用程式。
- 按一下「對應」。
- 選取「Okta User to App」(Okta 使用者對應至應用程式) 分頁標籤。
- 在「Okta User User Profile」(Okta 使用者設定檔) 分頁中,在可用的下拉式方塊中輸入
department
。Okta 會自動填入user.department
。 - 如要儲存對應關係,請按一下「儲存對應」。詳情請參閱「新增屬性對應」。
如要進一步瞭解對應,請參閱「在設定檔編輯器中將 Okta 屬性對應至應用程式屬性」。
選用:如要設定群組聲明,請執行下列步驟:
如果您使用機構授權伺服器,請執行下列操作:
- 依序前往「應用程式」>「應用程式」
- 選取您在本節稍早建立的 OpenID Connect 用戶端應用程式。
- 前往「登入」分頁
- 在「OpenID Connect ID Token」專區中,按一下「Edit」。
- 在「群組聲明類型」部分,您可以選取下列任一選項:
- 選取「運算式」。
- 選取「與規則運算式相符」,然後輸入
.*
。
- 如要儲存群組擁有權聲明,請按一下「儲存」。
如要讓使用者透過控制台 (已加入聯盟) 或 gcloud CLI 瀏覽器型登入流程登入,請在本文件稍後建立員工身分集區提供者時,執行下列操作:
請務必使用 gcloud CLI 指示,以便使用
--web-sso-additional-scopes
旗標。建立工作團隊身分集區提供者時,請在
--web-sso-additional-scopes
中傳遞groups
做為額外範圍。這樣做會在登入期間向 Okta 要求群組憑證附加資訊。
如果您使用自訂授權伺服器,請執行下列操作:
- 在管理控制台中,從「安全性」選單選取「API」。
- 選取要設定的自訂授權伺服器。
- 前往「著作權聲明」分頁,然後按一下「新增著作權聲明」。
- 輸入著作權聲明名稱。在本例中,請將其命名為
groups
。 - 在聲明中,於「Include in token type」(包含在權杖類型中) 選取「ID Token」(ID 權杖),然後選取「Always」(一律)。
- 選取「群組」做為「值類型」。
- 在「篩選條件」下拉式方塊中,選取「符合規則運算式」,然後輸入下列運算式做為值:
.*
- 點選「建立」。
如要進一步瞭解群組聲明,請參閱「新增群組聲明」。
SAML
如要建立使用 SAML 通訊協定的 Okta 應用程式整合,請按照下列步驟操作:
- 登入 Okta 管理控制台。
- 依序前往「應用程式」>「應用程式」。
- 按一下「Create App Integration」。
- 在「登入方法」中選取「SAML 2.0」,然後按一下「下一步」。
- 輸入應用程式名稱,然後按一下「下一步」,繼續設定「設定 SAML」選項。
在「單一登入網址」中,輸入重新導向網址。這是使用者成功登入後重新導向的網址。如果您要設定控制台存取權,請使用下列網址格式。
https://auth.cloud.google/signin-callback/locations/global/workforcePools/WORKFORCE_POOL_ID/providers/WORKFORCE_PROVIDER_ID
輸入「目標對象 URI」 (
SP Entity ID
)。ID 格式如下:https://iam.googleapis.com/locations/global/workforcePools/WORKFORCE_POOL_ID/providers/WORKFORCE_PROVIDER_ID
更改下列內容:
WORKFORCE_POOL_ID
:您在本指南稍早建立的工作團隊身分集區 IDWORKFORCE_PROVIDER_ID
:您選擇的員工身分提供者 ID,例如:okta-saml-provider
如要瞭解如何設定 ID 格式,請參閱 API 說明文件中的「查詢參數」一節。
選用:使用屬性陳述式指定要在 SAML 判斷中傳送的任何自訂屬性。設定完成後,您可以在 Google Cloud 中使用這些屬性建立存取管理政策,或在 attribute_condition 中使用;舉例來說,在本指南中,您會將部門對應至下列項目:
名稱 值 department
user.department
選用:如要新增群組聲明 (本指南稍後會用到),請參閱「如何在 SAML 聲明中傳遞使用者的群組成員資格」。
完成 Okta 應用程式整合服務的建立程序。
建立工作團隊身分集區提供者
本節說明如何建立員工身分識別集區供應商,讓 IdP 使用者存取 Google Cloud。您可以設定提供者使用 OIDC 或 SAML 通訊協定。
建立 OIDC 工作團隊身分集區提供者
如要使用 OIDC 通訊協定,為 Okta 應用程式整合服務建立工作團隊身分集區提供者,請按照下列步驟操作:
如要取得 Okta 應用程式整合項目的用戶端 ID,請按照下列步驟操作:
- 前往 Okta 應用程式整合。
- 按一下「一般」分頁標籤。
- 複製「用戶端 ID」欄位的內容。
如要為網頁式登入建立 OIDC 工作團隊身分集區提供者,請按照下列步驟操作:
gcloud
代碼流程
在 Okta 中執行下列操作:
在「用戶端驗證」中,選取「用戶端密鑰」。
在「Client Secrets」(用戶端密鑰) 表格中找到密鑰,然後按一下「Copy」(複製)content_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
:屬性對應。 以下是屬性對應的範例: 這個範例會將 OIDC 聲明中的 IdP 屬性google.subject=assertion.sub, google.groups=assertion.group1, attribute.costcenter=assertion.costcenter
subject
、group1
和costcenter
分別對應至google.subject
、google.groups
和attribute.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
旗標。如要停用詳細稽核記錄,您也可以更新供應商。
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
:屬性對應。 以下是屬性對應的範例: 這個範例會將 OIDC 聲明中的 IdP 屬性google.subject=assertion.sub, google.groups=assertion.group1, attribute.costcenter=assertion.costcenter
subject
、group1
和costcenter
分別對應至google.subject
、google.groups
和attribute.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
旗標。如要停用詳細稽核記錄,您也可以更新供應商。
locations/global/workforcePools/enterprise-example-organization-employees
。控制台
代碼流程
在 Okta 中執行下列操作:
在「用戶端驗證」中,選取「用戶端密鑰」。
在「Client Secrets」(用戶端密鑰) 表格中找到密鑰,然後按一下「Copy」(複製)content_copy。
在 Google Cloud 控制台中,如要建立使用授權碼流程的 OIDC 提供者,請按照下列步驟操作:
前往 Google Cloud 控制台的「Workforce Identity Pools」頁面:
在「工作團隊身分集區」表格中,選取要建立提供者的集區。
在「供應商」表格中,按一下「新增供應商」。
在「選取通訊協定」中,選取「Open ID Connect (OIDC)」。
在「建立集區提供者」中,執行下列操作:
- 在「名稱」中輸入供應商名稱。
- 在「核發者 (網址)」中,輸入核發者 URI。OIDC 核發者 URI 必須採用有效的 URI 格式,且開頭為
https
,例如https://example.com/oidc
。 - 輸入「用戶端 ID」,也就是向 OIDC IdP 註冊的 OIDC 用戶端 ID;這個 ID 必須與 IdP 發行的 JWT 的
aud
聲明相符。 - 如要建立已啟用的供應商,請確認「已啟用供應商」已開啟。
- 按一下「繼續」。
在「流程類型」中,執行下列操作。流程類型僅適用於網頁式單一登入流程。
- 在「流程類型」中,選取「程式碼」。
- 在「用戶端密鑰」中,輸入 IdP 的用戶端密鑰。
在「聲明主張行為」中,選取下列任一選項:
- 使用者資訊和 ID 權杖
- 僅限 ID 權杖
按一下「繼續」。
在「設定供應商」中,您可以設定屬性對應和屬性條件。如要建立屬性對應,請按照下列步驟操作。您可以提供 IdP 欄位名稱,也可以提供傳回字串的 CEL 格式運算式。
必要:在「OIDC 1」中,輸入 IdP 的主體,例如
assertion.sub
。選用:如要新增其他屬性對應,請按照下列步驟操作:
- 按一下 [新增對應]。
- 在「Google n」中 (其中 n 是數字),輸入其中一個Google Cloud支援的按鍵。
- 在對應的 OIDC n 欄位中,以 CEL 格式輸入要對應的 IdP 特定欄位名稱。
如要建立屬性條件,請按照下列步驟操作:
- 按一下「新增條件」。
- 在「屬性條件」中,以 CEL 格式輸入條件;例如,
assertion.subject.endsWith('@example.com')
當先前對應的subject
值包含結尾為@example.com
的電子郵件地址時。
如要啟用詳細稽核記錄,請在「詳細記錄」中,點按「啟用詳細屬性值記錄」切換鈕。
員工身分聯盟詳細稽核記錄會將從 IdP 收到的資訊記錄到 Logging。詳細稽核記錄有助於排解工作團隊身分識別集區提供者設定問題。如要瞭解如何透過詳細的稽核記錄排解屬性對應錯誤,請參閱「一般屬性對應錯誤」。如要瞭解 Logging 定價,請參閱 Google Cloud Observability 定價。
如要為工作團隊身分集區提供者停用詳細稽核記錄,請在執行
gcloud iam workforce-pools providers create
時省略--detailed-audit-logging
旗標。如要停用詳細稽核記錄,您也可以更新供應商。
如要建立提供者,請按一下「提交」。
隱含流程
在 Google Cloud Google Cloud 控制台中,執行下列操作:
前往 Google Cloud 控制台的「Workforce Identity Pools」頁面:
在「工作團隊身分集區」表格中,選取要建立提供者的集區。
在「供應商」表格中,按一下「新增供應商」。
在「選取通訊協定」中,選取「Open ID Connect (OIDC)」。
在「建立集區提供者」中,執行下列操作:
- 在「名稱」部分,輸入供應商名稱。
- 在「核發者 (網址)」中,輸入核發者 URI。OIDC 核發者 URI 必須採用有效的 URI 格式,且開頭為
https
,例如https://example.com/oidc
。 - 輸入「用戶端 ID」,也就是向 OIDC IdP 註冊的 OIDC 用戶端 ID;這個 ID 必須與 IdP 發行的 JWT 的
aud
聲明相符。 - 如要建立已啟用的供應商,請確認「已啟用供應商」已開啟。
- 按一下「繼續」。
在「流程類型」中,執行下列操作。流程類型僅適用於網頁式單一登入流程。
- 在「流程類型」中,選取「ID 權杖」。
- 按一下「繼續」。
在「設定供應商」中,您可以設定屬性對應和屬性條件。如要建立屬性對應,請按照下列步驟操作。您可以提供 IdP 欄位名稱,也可以提供傳回字串的 CEL 格式運算式。
必要:在「OIDC 1」中,輸入 IdP 的主體,例如
assertion.sub
。選用:如要新增其他屬性對應,請按照下列步驟操作:
- 按一下 [新增對應]。
- 在「Google n」中 (其中 n 是數字),輸入其中一個Google Cloud支援的按鍵。
- 在對應的 OIDC n 欄位中,以 CEL 格式輸入要對應的 IdP 特定欄位名稱。
如要建立屬性條件,請按照下列步驟操作:
- 按一下「新增條件」。
在「屬性條件」中,以 CEL 格式輸入條件;例如,
assertion.subject.endsWith('@example.com')
當先前對應的subject
值包含結尾為@example.com
的電子郵件地址時。
如要啟用詳細稽核記錄,請在「詳細記錄」中,點按「啟用詳細屬性值記錄」切換鈕。
員工身分聯盟詳細稽核記錄會將從 IdP 收到的資訊記錄到 Logging。詳細稽核記錄有助於排解工作團隊身分識別集區提供者設定問題。如要瞭解如何透過詳細的稽核記錄排解屬性對應錯誤,請參閱「一般屬性對應錯誤」。如要瞭解 Logging 定價,請參閱 Google Cloud Observability 定價。
如要為工作團隊身分集區提供者停用詳細稽核記錄,請在執行
gcloud iam workforce-pools providers create
時省略--detailed-audit-logging
旗標。如要停用詳細稽核記錄,您也可以更新供應商。
如要建立提供者,請按一下「提交」。
建立 SAML 工作團隊身分集區提供者
在 SAML IdP 中,為 Google Cloud員工身分聯盟註冊新應用程式。
設定 SAML 宣告的目標對象。 通常是 IdP 設定中的
SP Entity ID
欄位。請務必將其設為下列網址:https://iam.googleapis.com/locations/global/workforcePools/WORKFORCE_POOL_ID/providers/WORKFORCE_PROVIDER_ID
設定重新導向網址,又稱為宣告客戶服務 (ACS) 網址。如要設定重新導向網址,請在 SAML IdP 中找到重新導向網址欄位,然後執行下列任一操作:
如要透過 Google Cloud 主控台或其他瀏覽器登入方法設定瀏覽器登入,請輸入下列網址:
https://auth.cloud.google/signin-callback/locations/global/workforcePools/WORKFORCE_POOL_ID/providers/WORKFORCE_PROVIDER_ID
更改下列內容:
WORKFORCE_POOL_ID
:工作團隊身分集區 IDWORKFORCE_PROVIDER_ID
:您稍後在本文件中建立的員工身分集區提供者 ID。
如要透過 IdP 設定程式輔助登入,請輸入下列網址:
localhost
如要進一步瞭解如何設定控制台登入,請參閱「設定使用者控制台存取權」。
在 Google Cloud中,使用 IdP 的 SAML 中繼資料文件建立 SAML 工作團隊身分識別集區供應商。您可以從 IdP 下載 SAML 中繼資料 XML 文件。文件至少須包含下列資訊:
- IdP 的 SAML 實體 ID。
- IdP 的單一登入網址。
- 至少一個簽署公開金鑰。如要瞭解簽署金鑰的詳細規定,請參閱本指南稍後的「金鑰規定」。
gcloud
如要使用 SAML 通訊協定,為 Okta 應用程式整合服務建立工作團隊身分集區提供者,請按照下列步驟操作:
如要儲存 Okta 應用程式的 SAML 中繼資料,請按照下列步驟操作:
- 前往 Okta 應用程式。
- 按一下「登入」分頁標籤。
- 在「SAML 簽署憑證」部分,依序點選有效憑證的「動作」>「查看 IdP 中繼資料」。
- 在隨即開啟的新頁面中,複製 XML 中繼資料。
- 將中繼資料儲存為本機 XML 檔案。
如要為 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
:屬性對應,例如: 這個範例會將 IdP 屬性google.subject=assertion.subject, google.groups=assertion.attributes['https://example.com/aliases'], attribute.costcenter=assertion.attributes.costcenter[0]
assertion.subject
、assertion.attributes['https://example.com/aliases']
和assertion.attributes.costcenter[0]
分別對應至 Google Cloud屬性google.subject
、google.groups
和google.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 聲明。
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
:集區 IDWORKFORCE_PROVIDER_ID
:工作團隊身分集區供應商 ID-
KEY_SPECIFICATION
:金鑰規格,可以是rsa-2048
、rsa-3072
和rsa-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
:集區 IDWORKFORCE_PROVIDER_ID
:工作團隊身分集區供應商 IDCERTIFICATE_PATH
:要寫入憑證的路徑,例如saml-certificate.cer
或saml-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
:集區 IDWORKFORCE_PROVIDER_ID
:工作團隊身分集區供應商 ID
支援的 SAML 加密演算法
員工身分聯盟支援下列金鑰傳輸演算法:
- http://www.w3.org/2001/04/xmlenc#rsa-oaep-mgf1p
- http://www.w3.org/2009/xmlenc11#rsa-oaep"
- http://www.w3.org/2001/04/xmlenc#rsa-1_5"
員工身分聯盟支援下列區塊加密演算法:
控制台
如要使用 Google Cloud 控制台設定 SAML 提供者,請按照下列步驟操作:
前往 Google Cloud 控制台的「Workforce Identity Pools」頁面:
在「Workforce Identity Pools」(工作團隊身分集區) 表格中,選取要建立提供者的集區。
在「供應商」表格中,按一下「新增供應商」。
在「選取通訊協定」中,選取「SAML」。
在「建立集區提供者」中,執行下列操作:
在「名稱」部分,輸入供應商名稱。
選用:在「說明」中輸入供應商說明。
在「IdP 中繼資料檔案 (XML)」中,選取您在本指南稍早產生的中繼資料 XML 檔案。
確認已啟用「Enabled provider」(已啟用供應商)。
按一下「繼續」。
在「設定供應商」中,執行下列操作:
在「屬性對應」中,輸入
google.subject
的 CEL 運算式。選用:如要輸入其他對應,請按一下「新增對應」,然後輸入其他對應,例如:
這個範例會將 IdP 屬性google.subject=assertion.subject, google.groups=assertion.attributes['https://example.com/aliases'], attribute.costcenter=assertion.attributes.costcenter[0]
assertion.subject
、assertion.attributes['https://example.com/aliases']
和assertion.attributes.costcenter[0]
分別對應至 Google Cloud屬性google.subject
、google.groups
和google.costcenter
。選用:如要新增屬性條件,請按一下「新增條件」,然後輸入代表屬性條件的 CEL 運算式。 舉例來說,如要將
ipaddr
屬性限制在特定 IP 範圍內,可以設定assertion.attributes.ipaddr.startsWith('98.11.12.')
條件。這個範例條件可確保只有 IP 位址開頭為98.11.12.
的使用者,才能使用這個員工身分提供者登入。按一下「繼續」。
如要啟用詳細稽核記錄,請在「詳細記錄」中,點按「啟用詳細屬性值記錄」切換鈕。
員工身分聯盟詳細稽核記錄會將從 IdP 收到的資訊記錄到 Logging。詳細稽核記錄有助於排解工作團隊身分識別集區提供者設定問題。如要瞭解如何透過詳細的稽核記錄排解屬性對應錯誤,請參閱「一般屬性對應錯誤」。如要瞭解 Logging 定價,請參閱 Google Cloud Observability 定價。
如要為工作團隊身分集區提供者停用詳細稽核記錄,請在執行
gcloud iam workforce-pools providers create
時省略--detailed-audit-logging
旗標。如要停用詳細稽核記錄,您也可以更新供應商。
如要建立提供者,請按一下「提交」。
管理 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
:專案 IDWORKFORCE_POOL_ID
:工作團隊身分集區 IDSUBJECT_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
:專案 IDWORKFORCE_POOL_ID
:工作團隊身分集區 IDDEPARTMENT_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
:專案 IDWORKFORCE_POOL_ID
:工作團隊身分集區 IDGROUP_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
:工作團隊集區 IDPROVIDER_ID
:供應商 IDLOGIN_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
讓使用者登入 Okta 應用程式,並從 Okta 取得 OIDC 權杖。
將 Okta 傳回的 OIDC 權杖儲存在本機電腦的安全位置。
如要產生設定檔 (如本步驟稍後的範例所示),請執行下列指令:
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
:員工身分集區 IDWORKFORCE_PROVIDER_ID
:供應商 IDPATH_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
讓使用者登入 Okta 應用程式,並從 Okta 取得 SAML 回應。
將 Okta 傳回的 SAML 回應儲存在本機電腦的安全位置,然後儲存路徑,如下所示:
SAML_ASSERTION_PATH=SAML_ASSERTION_PATH
如要產生設定檔,請執行下列指令:
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 員工身分聯盟控制台 (又稱聯合控制台),請按照下列步驟操作:
測試存取權
您現在可以存取支援員工身分聯盟,且您已獲授權存取的 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 使用者及其資料」。
您可能會發現資源仍與已刪除的使用者相關聯。 這是因為刪除使用者中繼資料和資源需要長時間執行的作業。啟動刪除使用者身分識別程序後,使用者在刪除前啟動的程序會繼續執行,直到完成或取消為止。
後續步驟
- 刪除 Workforce Identity Federation 使用者及其資料
- 瞭解 Google Cloud 支援員工身分聯盟的產品
- 設定使用者對控制台 (聯合) 的存取權