本指南說明如何使用支援 OIDC 或 SAML 2.0 的識別資訊提供者 (IdP),設定員工身分聯盟。
如需特定 IdP 的操作說明,請參閱下列文章:
事前準備
- 確認您已 Google Cloud 設定機構。
-
安裝 Google Cloud CLI。 完成後,執行下列指令來初始化 Google Cloud CLI:
gcloud init若您採用的是外部識別資訊提供者 (IdP),請先使用聯合身分登入 gcloud CLI。
-
Enable the Identity and Access Management (IAM) and Resource Manager APIs.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles. - 如要登入,您的 IdP 必須提供已簽署的驗證資訊:OIDC IdP 必須提供 JWT,且 SAML IdP 回應必須經過簽署。
- 如要接收貴機構或產品異動的重要資訊,請務必提供必要聯絡人。 Google Cloud 詳情請參閱「員工身分聯盟總覽」。
費用
員工身分聯盟是免付費功能。不過,員工身分聯盟詳細稽核記錄會使用 Cloud Logging。如要瞭解 Logging 定價,請參閱「Google Cloud Observability 定價」。
必要的角色
如要取得設定員工身分聯盟所需的權限,請要求管理員授予您組織的員工身分集區管理員 (roles/iam.workforcePoolAdmin) IAM 角色。如要進一步瞭解如何授予角色,請參閱「管理專案、資料夾和組織的存取權」。
此外,擁有者基本角色 (roles/owner) 也包含設定員工身分聯盟的權限。您不應在正式環境中授予基本角色,但可以在開發或測試環境中授予。
設定員工身分聯盟
如要設定員工身分聯盟,請建立工作團隊身分集區和工作團隊身分集區提供者。
建立工作團隊身分集區
如要建立集區,請執行下列指令:
gcloud
如要建立員工身分識別集區,請執行下列指令:
gcloud iam workforce-pools create WORKFORCE_POOL_ID \
--organization=ORGANIZATION_ID \
--display-name="DISPLAY_NAME" \
--description="DESCRIPTION" \
--session-duration=SESSION_DURATION \
--location=global
更改下列內容:
WORKFORCE_POOL_ID:您選擇代表 Google Cloud 工作團隊集區的 ID。如要瞭解如何設定 ID 格式,請參閱 API 說明文件中的「查詢參數」一節。ORGANIZATION_ID:員工身分集區的組織數字 ID。 Google Cloud 員工身分集區適用於機構中的所有專案和資料夾。DISPLAY_NAME:選用。工作團隊身分集區的顯示名稱。DESCRIPTION:選用。工作團隊身分集區 說明。SESSION_DURATION:選用。工作階段時間長度,以附加s的數字表示,例如3600s。工作階段時間長度決定了從這個工作團隊集區取得的 Google Cloud 存取權杖、控制台 (聯盟) 登入工作階段,以及 gcloud CLI 登入工作階段的有效時間。工作階段持續時間預設為一小時 (3600 秒)。工作階段持續時間值必須介於 15 分鐘 (900 秒) 和 12 小時 (43,200 秒) 之間。
控制台
如要建立工作團隊身分識別集區,請執行下列操作:
前往 Google Cloud 控制台的「Workforce Identity Pools」(員工身分集區) 頁面:
選取員工身分集區的機構。機構中的所有專案和資料夾都可使用 Workforce 身分集區。
按一下「建立集區」,然後執行下列操作:
在「名稱」欄位中,輸入集區的顯示名稱。系統會在您輸入名稱時自動衍生集區 ID,並顯示在「名稱」欄位下方。如要更新集區 ID,請點選集區 ID 旁的「編輯」。
選用:在「Description」(說明) 中輸入集區說明。
如要建立員工身分集區,請按「Next」(下一步)。
工作團隊身分集區的工作階段持續時間預設為一小時 (3600 秒)。 工作階段時間長度決定了這個工作團隊集區的 Google Cloud 存取權杖、控制台 (已加入聯盟) 和 gcloud CLI 登入工作階段的有效時間。建立集區後,您可以更新集區,設定自訂工作階段時間長度。工作階段持續時間必須介於 15 分鐘 (900 秒) 至 12 小時 (43,200 秒) 之間。
建立工作團隊身分集區提供者
本節說明如何建立員工身分集區供應商,讓 IdP 使用者存取 Google Cloud。您可以設定提供者使用 OIDC 或 SAML 通訊協定。
建立 OIDC 工作團隊集區提供者
如要使用 OIDC 通訊協定建立工作團隊身分集區提供者,請執行下列步驟:
在 OIDC IdP 中,為 Google Cloud員工身分聯盟註冊新應用程式。記下 IdP 提供的用戶端 ID 和簽發者 URI。您會在本文中使用這些值。
如要設定使用者存取控制台的權限,請將下列重新導向網址新增至 OIDC IdP:
https://auth.cloud.google/signin-callback/locations/global/workforcePools/WORKFORCE_POOL_ID/providers/WORKFORCE_PROVIDER_ID更改下列內容:
WORKFORCE_POOL_ID:員工身分集區 IDWORKFORCE_PROVIDER_ID:您稍後在本文件中建立的員工身分集區提供者 ID。
如要瞭解如何設定控制台 (聯盟) 登入,請參閱「設定控制台 (聯盟) 的使用者存取權」。
在 Google Cloud中,如要建立提供者,請執行下列步驟:
gcloud
代碼流程
如要建立使用授權碼流程的 OIDC 提供者,以進行網頁登入,請執行下列指令:
gcloud iam workforce-pools providers create-oidc WORKFORCE_PROVIDER_ID \ --workforce-pool=WORKFORCE_POOL_ID \ --display-name="DISPLAY_NAME" \ --description="DESCRIPTION" \ --issuer-uri="ISSUER_URI" \ --client-id="OIDC_CLIENT_ID" \
--client-secret-value="OIDC_CLIENT_SECRET" \ --web-sso-response-type="code" \ --web-sso-assertion-claims-behavior="merge-user-info-over-id-token-claims" \ --web-sso-additional-scopes="WEB_SSO_ADDITIONAL_SCOPES" \ --attribute-mapping="ATTRIBUTE_MAPPING" \ --attribute-condition="ATTRIBUTE_CONDITION" \ --jwk-json-path="JWK_JSON_PATH" \ --detailed-audit-logging \ --location=global取代下列項目:
WORKFORCE_PROVIDER_ID:工作團隊身分集區提供者專屬 ID。前置字串「gcp-」為預留字串,不得用於工作團隊身分集區或工作團隊身分集區提供者 ID。WORKFORCE_POOL_ID:要連結 IdP 的員工身分集區 ID。DISPLAY_NAME:供應商的選用易記顯示名稱,例如idp-eu-employees。DESCRIPTION:員工供應商說明 (選填),例如IdP for Partner Example Organization employees。ISSUER_URI:OIDC 核發者 URI,格式必須為有效的 URI,且開頭為https,例如https://example.com/oidc。注意:基於安全考量,ISSUER_URI必須使用 HTTPS 通訊協定。OIDC_CLIENT_ID:向 OIDC IdP 註冊的 OIDC 用戶端 ID;這個 ID 必須與 IdP 發行的 JWT 的aud聲明相符。OIDC_CLIENT_SECRET:OIDC 用戶端密鑰。WEB_SSO_ADDITIONAL_SCOPES:要傳送至 OIDC IdP 的選用額外範圍,適用於主控台 (聯合) 或 gcloud CLI 瀏覽器型登入。ATTRIBUTE_MAPPING:屬性對應。 以下是屬性對應的範例: 這個範例會將 OIDC 判斷中的 IdP 屬性google.subject=assertion.sub, google.groups=assertion.groups, attribute.costcenter=assertion.costcentersubject、groups和costcenter分別對應至google.subject、google.groups和attribute.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旗標。如要停用詳細稽核記錄,也可以更新供應商。
locations/global/workforcePools/enterprise-example-organization-employees。隱含流程
如要建立使用隱含流程的 OIDC 提供者,以供網頁登入,請執行下列指令:
gcloud iam workforce-pools providers create-oidc WORKFORCE_PROVIDER_ID \ --workforce-pool=WORKFORCE_POOL_ID \ --display-name="DISPLAY_NAME" \ --description="DESCRIPTION" \ --issuer-uri="ISSUER_URI" \ --client-id="OIDC_CLIENT_ID" \ --web-sso-response-type="id-token" \ --web-sso-assertion-claims-behavior="only-id-token-claims" \ --web-sso-additional-scopes="WEB_SSO_ADDITIONAL_SCOPES" \ --attribute-mapping="ATTRIBUTE_MAPPING" \ --attribute-condition="ATTRIBUTE_CONDITION" \ --jwk-json-path="JWK_JSON_PATH" \ --detailed-audit-logging \ --location=global取代下列項目:
WORKFORCE_PROVIDER_ID:工作團隊身分集區提供者專屬 ID。前置字串「gcp-」為預留字串,不得用於工作團隊身分集區或工作團隊身分集區提供者 ID。WORKFORCE_POOL_ID:要連結 IdP 的員工身分集區 ID。DISPLAY_NAME:供應商的選用易記顯示名稱,例如idp-eu-employees。DESCRIPTION:員工供應商說明 (選填),例如IdP for Partner Example Organization employees。ISSUER_URI:OIDC 核發者 URI,格式必須為有效的 URI,且開頭為https,例如https://example.com/oidc。注意:基於安全考量,ISSUER_URI必須使用 HTTPS 通訊協定。OIDC_CLIENT_ID:向 OIDC IdP 註冊的 OIDC 用戶端 ID;這個 ID 必須與 IdP 發行的 JWT 的aud聲明相符。WEB_SSO_ADDITIONAL_SCOPES:要傳送至 OIDC IdP 的選用額外範圍,適用於主控台 (聯合) 或 gcloud CLI 瀏覽器型登入。ATTRIBUTE_MAPPING:屬性對應。 以下是屬性對應的範例: 這個範例會將 OIDC 判斷中的 IdP 屬性google.subject=assertion.sub, google.groups=assertion.groups, attribute.costcenter=assertion.costcentersubject、groups和costcenter分別對應至google.subject、google.groups和attribute.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旗標。如要停用詳細稽核記錄,也可以更新供應商。
locations/global/workforcePools/enterprise-example-organization-employees。前置字串「
gcp-」為預留字串,不得用於工作團隊身分集區或工作團隊身分集區提供者 ID。如果是 OIDC 聯盟,您可以使用
assertion.NAME:與 ID 權杖酬載中同名附加資訊的值相等的字串。控制台
代碼流程
在 Google Cloud 控制台中,如要建立使用授權碼流程的 OIDC 提供者,請按照下列步驟操作:
前往 Google Cloud 控制台的「Workforce Identity Pools」(員工身分集區) 頁面:
在「Workforce Identity Pools」(員工身分集區) 表格中,選取要建立提供者的集區。
在「供應商」部分中,按一下「新增供應商」。
在「Select a Provider vendor」(選取提供者) 清單中,選取您的 IdP。
如果您的 IdP 未列在清單中,請選取「一般身分識別提供者」。
在「選取驗證通訊協定」中,選取「OpenID Connect (OIDC)」。
在「建立供應商」部分中,執行下列操作:
- 在「名稱」中,輸入供應商的名稱。
- 在「說明」中,輸入提供者的說明。
- 在「核發者 (網址)」中輸入核發者 URI。OIDC 核發者 URI 必須採用有效的 URI 格式,且開頭為
https,例如https://example.com/oidc。 - 在「用戶端 ID」中,輸入向 OIDC IdP 註冊的 OIDC 用戶端 ID;這個 ID 必須與 IdP 發行的 JWT 的
aud聲明相符。 如要建立已啟用的供應商,請確認「啟用供應商」已開啟。
- 按一下「繼續」。
在「Share your provider information with IdP」(與 IdP 分享提供者資訊) 部分,複製網址。 在 IdP 中,將這個網址設為重新導向 URI,讓 IdP 瞭解登入後要將斷言權杖傳送至何處。
按一下「繼續」。
在「設定 OIDC 網頁登入功能」部分,完成下列步驟:
- 在「流程類型」清單中,選取「程式碼」。
在「Assertion claims behavior」(聲明主張行為) 清單中,選取下列任一選項:
- 使用者資訊和 ID 權杖
- 僅限 ID 權杖
在「用戶端密鑰」欄位中,輸入 IdP 的用戶端密鑰。
選用:如果您選取 Okta 做為 IdP,請在「openid、profile 和 email 以外的額外範圍」欄位中,新增任何額外 OIDC 範圍。
按一下「繼續」。
在「設定供應商」中,您可以設定屬性對應和屬性條件。如要建立屬性對應,請按照下列步驟操作。您可以提供 IdP 欄位名稱,也可以提供傳回字串的 CEL 格式運算式。
必要:在「OIDC 1」中,輸入 IdP 的主體,例如
assertion.sub。選用:如要新增其他屬性對應,請按照下列步驟操作:
- 按一下 [新增對應]。
- 在「Google n」(其中 n 是數字) 中,輸入其中一個Google Cloud支援的按鍵。
- 在對應的「OIDC n」欄位中,以 CEL 格式輸入要對應的 IdP 特定欄位名稱。
如果您選取 Microsoft Entra ID 做為 IdP,可以增加群組數量。
- 選取「使用額外的屬性」。
- 在「額外屬性核發者 URI」欄位中,輸入核發者網址。
- 在「Extra Attributes Client ID」(額外屬性用戶端 ID) 欄位中,輸入用戶端 ID。
- 在「Extra Attributes Client Secret」(額外屬性用戶端密鑰) 欄位中,輸入用戶端密鑰。
- 在「額外屬性類型」清單中,選取額外屬性的屬性類型。
- 在「額外屬性篩選器」欄位中,輸入透過 Microsoft Graph API 查詢群組時使用的篩選運算式。
如要建立屬性條件,請按照下列步驟操作:
- 按一下「新增條件」。
- 在「屬性條件」欄位中,以 CEL 格式輸入條件,例如
assertion.role == 'gcp-users'。這個範例條件可確保只有具備gcp-users角色的使用者,才能透過這個供應商登入。
如要啟用詳細稽核記錄,請在「詳細記錄」中,點選「啟用屬性值稽核記錄」切換鈕。
員工身分聯盟詳細稽核記錄會將從 IdP 收到的資訊記錄到 Cloud Logging。詳細稽核記錄有助於排解工作團隊身分集區提供者設定問題。如要瞭解如何透過詳細稽核記錄排解屬性對應錯誤,請參閱「一般屬性對應錯誤」。如要瞭解 Logging 定價,請參閱「Google Cloud Observability 定價」一文。
如要停用工作團隊身分集區提供者的詳細稽核記錄功能,請在執行
gcloud iam workforce-pools providers create時省略--detailed-audit-logging旗標。如要停用詳細稽核記錄,也可以更新供應商。
如要建立提供者,請按一下「提交」。
隱含流程
在 Google Cloud 控制台中,如要建立使用隱含流程的 OIDC 供應商,請按照下列步驟操作:
前往 Google Cloud 控制台的「Workforce Identity Pools」(員工身分集區) 頁面:
在「Workforce Identity Pools」(員工身分集區) 表格中,選取要建立提供者的集區。
在「供應商」部分中,按一下「 新增供應商」。
在「Select a Provider vendor」(選取提供者) 清單中,選取您的 IdP。
如果您的 IdP 未列在清單中,請選取「一般身分識別提供者」。
在「選取驗證通訊協定」中,選取「OpenID Connect (OIDC)」。
在「建立供應商」部分中,執行下列操作:
- 在「名稱」中,輸入供應商的名稱。
- 在「說明」中,輸入提供者的說明。
- 在「核發者 (網址)」中輸入核發者 URI。OIDC 核發者 URI 必須採用有效的 URI 格式,且開頭為
https,例如https://example.com/oidc。 - 在「用戶端 ID」中,輸入向 OIDC IdP 註冊的 OIDC 用戶端 ID;這個 ID 必須與 IdP 發行的 JWT 的
aud聲明相符。 - 如要建立已啟用的供應商,請確認「啟用供應商」已開啟。
- 按一下「繼續」。
在「Share your provider information with IdP」(與 IdP 分享提供者資訊) 部分,複製網址。 在 IdP 中,將這個網址設為重新導向 URI,讓 IdP 瞭解登入後要將斷言權杖傳送至何處。
按一下「繼續」。
在「設定 OIDC 網頁登入功能」部分,完成下列步驟:
在「Flow type」(流程類型) 清單中,選取「ID Token」(ID 權杖)。
在「Assertion claims behavior」(斷言聲明行為) 清單中,選取「ID token」(ID 權杖)。
選用:如果您選取 Okta 做為 IdP,請在「openid、profile 和 email 以外的額外範圍」欄位中,新增任何額外 OIDC 範圍。
按一下「繼續」。
在「設定供應商」中,您可以設定屬性對應和屬性條件。如要建立屬性對應,請按照下列步驟操作。您可以提供 IdP 欄位名稱,也可以提供傳回字串的 CEL 格式運算式。
必要:在「OIDC 1」中,輸入 IdP 的主體,例如
assertion.sub。選用:如要新增其他屬性對應,請按照下列步驟操作:
- 按一下 [新增對應]。
- 在「Google n」(其中 n 是數字) 中,輸入其中一個Google Cloud支援的按鍵。
- 在對應的「OIDC n」欄位中,以 CEL 格式輸入要對應的 IdP 特定欄位名稱。
如果您選取 Microsoft Entra ID 做為 IdP,可以增加群組數量。
- 選取「使用額外的屬性」。
- 在「額外屬性核發者 URI」欄位中,輸入核發者網址。
- 在「Extra Attributes Client ID」(額外屬性用戶端 ID) 欄位中,輸入用戶端 ID。
- 在「Extra Attributes Client Secret」(額外屬性用戶端密鑰) 欄位中,輸入用戶端密鑰。
- 在「額外屬性類型」清單中,選取額外屬性的屬性類型。
- 在「額外屬性篩選器」欄位中,輸入透過 Microsoft Graph API 查詢群組時使用的篩選運算式。
如要建立屬性條件,請按照下列步驟操作:
- 按一下「新增條件」。
- 在「屬性條件」欄位中,以 CEL 格式輸入條件,例如
assertion.role == 'gcp-users'。這個範例條件可確保只有具備gcp-users角色的使用者,才能透過這個供應商登入。
如要啟用詳細稽核記錄,請在「詳細記錄」中,點選「啟用屬性值稽核記錄」切換鈕。
員工身分聯盟詳細稽核記錄會將從 IdP 收到的資訊記錄到 Cloud 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
如要使用 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:屬性對應,例如: 這個範例會將 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.的使用者,才能使用這個員工身分提供者登入。
供應商可能需要幾分鐘才會開始接受要求。
如果是 SAML 聯盟,您可以在屬性對應和條件中使用下列關鍵字:
assertion.subject:與 SAML 聲明中的NameID屬性相等的字串。assertion.attributes.NAME:字串清單,等同於 SAML 聲明中同名屬性的值。
選用:接受來自 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 聲明
將 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:集區 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"
員工身分聯盟支援下列區塊加密演算法:
- http://www.w3.org/2001/04/xmlenc#aes128-cbc
- http://www.w3.org/2001/04/xmlenc#aes192-cbc
- http://www.w3.org/2001/04/xmlenc#aes256-cbc
- http://www.w3.org/2009/xmlenc11#aes128-gcm
- http://www.w3.org/2009/xmlenc11#aes256-gcm
SAML X.509 簽署金鑰規定
下列金鑰規格適用於 SAML X.509 簽署金鑰:
包裝在 X.509 v3 憑證中的 RSA 公開金鑰。
憑證效期規定:
notBefore:時間戳記,不得晚於 7 天後notAfter:時間戳記,不得超過 25 年
建議使用的演算法:
- RSAwithSHA256 (支援的金鑰大小 (位元):2048、3072、4096)
- ECDSAwithSHA256
員工身分集區提供者在特定時間最多可設定三個簽署金鑰。如果有多個金鑰, Google Cloud會逐一迭代,並嘗試使用每個未過期的金鑰來完成權杖交換要求。
為確保安全,我們強烈建議您不要將同一組金鑰與其他服務共用。
金鑰管理
如要更新 IdP 的簽署金鑰,請按照下列步驟操作:
建立新的非對稱金鑰組,並使用該金鑰組設定 SAML 識別資訊提供者。您會先將其標示為無效,然後在後續步驟中啟用。
從 IdP 下載 SAML 中繼資料 XML 文件。
使用 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:員工身分集區提供者 IDWORKFORCE_POOL_ID:員工身分集區 IDSAML_METADATA_FILE_PATH:SAML 中繼資料檔案的路徑
等待上一個步驟傳回的作業完成 (作業會標示為完成),然後在 SAML IdP 中啟用新的簽署金鑰。舊的簽署金鑰會標示為無效。 IdP 發出的聲明會使用新金鑰簽署。
下列步驟為選用步驟,但建議您執行,以確保最佳做法:
- 從 IdP 刪除舊的簽署金鑰 (現已停用)。
- 從 IdP 下載 SAML 中繼資料 XML 文件。
使用 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:員工身分集區提供者 IDWORKFORCE_POOL_ID:員工身分集區 IDSAML_METADATA_FILE_PATH:SAML 中繼資料路徑
刪除金鑰的限制
Google Cloud 會拒絕使用已刪除金鑰簽署的聲明。
控制台
如要使用 Google Cloud 控制台設定 SAML 提供者,請按照下列步驟操作:
前往 Google Cloud 控制台的「Workforce Identity Pools」(員工身分集區) 頁面:
在「Workforce Identity Pools」(工作團隊身分集區) 表格中,選取要建立提供者的集區。
在「供應商」部分中,按一下「新增供應商」。
在「Select a Provider vendor」(選取提供者) 清單中,選取您的 IdP。
如果清單中沒有您的 IdP,請選取「Generic Identity Provider」(一般身分識別提供者)。
在「選取驗證通訊協定」中,選取「SAML」。
在「建立供應商」部分中,執行下列操作:
在「名稱」部分,輸入供應商名稱。
選用:在「Description」(說明) 中輸入供應商說明。
在「IdP 中繼資料檔案 (XML)」中,選取您在本指南稍早產生的中繼資料 XML 檔案。
如要建立已啟用的供應商,請確認「啟用供應商」已開啟。
按一下「繼續」。
在「Share your provider information」部分,複製網址。 在 IdP 中,將第一個網址設為實體 ID,向 IdP 識別您的應用程式。 將其他網址設為重新導向 URI,讓 IdP 瞭解登入後要將斷言權杖傳送至何處。
按一下「繼續」。
在「設定供應商」部分,完成下列步驟:
在「屬性對應」中,輸入
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。如果您選取 Microsoft Entra ID 做為 IdP,可以透過下列方式增加群組數量:
- 選取「使用額外的屬性」。
- 在「額外屬性核發者 URI」欄位中,輸入核發者網址。
- 在「Extra Attributes Client ID」(額外屬性用戶端 ID) 欄位中,輸入用戶端 ID。
- 在「Extra Attributes Client Secret」(額外屬性用戶端密鑰) 欄位中,輸入用戶端密鑰。
- 在「額外屬性類型」清單中,選取額外屬性的屬性類型。
- 在「額外屬性篩選器」欄位中,輸入透過 Microsoft Graph API 查詢群組時使用的篩選運算式。
選用:如要新增屬性條件,請按一下「新增條件」,然後輸入代表屬性條件的 CEL 運算式。舉例來說,如要將
ipaddr屬性限制在特定 IP 範圍內,可以設定assertion.attributes.ipaddr.startsWith('98.11.12.')條件。這個範例條件可確保只有 IP 位址開頭為98.11.12.的使用者,才能使用這個員工身分提供者登入。按一下「繼續」。
如要啟用詳細稽核記錄,請在「詳細記錄」中,點選「啟用屬性值稽核記錄」切換鈕。
員工身分聯盟詳細稽核記錄會將從 IdP 收到的資訊記錄到 Cloud Logging。詳細稽核記錄有助於排解工作團隊身分集區提供者設定問題。如要瞭解如何透過詳細稽核記錄排解屬性對應錯誤,請參閱「一般屬性對應錯誤」。如要瞭解 Logging 定價,請參閱「Google Cloud Observability 定價」一文。
如要停用工作團隊身分集區提供者的詳細稽核記錄功能,請在執行
gcloud iam workforce-pools providers create時省略--detailed-audit-logging旗標。如要停用詳細稽核記錄,也可以更新供應商。
如要建立提供者,請按一下「提交」。
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:專案 IDROLE:要授予的角色- :主體;請參閱員工身分聯盟的主體 ID。
PRINCIPAL
在下列範例中,指令會將「儲存空間管理員」角色 (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中明確刪除這些資源。如要這麼做,請參閱「刪除員工身分聯盟使用者及其資料」。
您可能會發現資源仍與已刪除的使用者相關聯。 這是因為刪除使用者中繼資料和資源需要長時間執行的作業。啟動刪除使用者身分識別程序後,使用者在刪除前啟動的程序會繼續執行,直到完成或取消為止。
設定 SCIM
本節說明如何在員工身分集區中設定 SCIM 租戶。
每個員工身分集區僅支援一個 SCIM 租戶。如要在已包含 SCIM 租戶的集區中設定新的租戶,請先強制刪除現有租戶。
SCIM 租戶的 --claim-mapping 旗標只能包含特定的一般運算式語言 (CEL) 運算式。如要瞭解支援哪些運算式,請參閱「對應權杖和 SCIM 屬性」。
如要設定跨網域身分管理系統 (SCIM),請完成下列步驟:
- 在 Google Cloud中設定 SCIM 租戶和權杖
- 在 IdP 中設定 SCIM
在 Google Cloud中設定 SCIM 租戶和權杖
如要在 Google Cloud中設定 SCIM 租戶,請按照下列步驟操作:
-
建立 SCIM 租戶。
gcloud iam workforce-pools providers scim-tenants create SCIM_TENANT_ID \ --workforce-pool="WORKFORCE_POOL_ID" \ --provider="PROVIDER_ID" \ --display-name="SCIM_TENANT_DISPLAY_NAME" \ --description="SCIM_TENANT_DESCRIPTION" \ --claim-mapping="CLAIM_MAPPING" \ --location="global"更改下列內容:
SCIM_TENANT_ID:SCIM 租戶的 ID。WORKFORCE_POOL_ID:您在本文件中先前建立的員工集區 ID。PROVIDER_ID:您在本文件中稍早建立的員工身分集區提供者 ID。SCIM_TENANT_DISPLAY_NAME:SCIM 租戶的顯示名稱。SCIM_TENANT_DESCRIPTION:SCIM 租戶的說明。CLAIM_MAPPING:以半形逗號分隔的屬性對應清單。建議您使用下列屬性對應: 您在 SCIM 租戶中對應的google.subject=user.externalId,google.group=group.externalId
google.subject屬性,必須使用--attribute-mapping旗標,在員工身分集區提供者的google.subject屬性中,專指相同的對應身分。建立 SCIM 租戶後,您就無法更新聲明對應。如要更換,可以強制刪除 SCIM 租戶,然後立即建立新的租戶。如要進一步瞭解使用 SCIM 的注意事項,請參閱「SCIM 支援」。
-
指令完成後,請執行下列操作:
-
在輸出內容的
baseUri欄位中,儲存格式為https://iamscim.googleapis.com/v1alpha1/tenants/SCIM_TENANT_UID的完整 URI。您必須將這個 URI 提供給 IdP。 -
此外,請只儲存 URI 中的
SCIM_TENANT_UID。 您需要這個 UID,才能在本文件的後續步驟中,在 SCIM 租戶上設定 IAM 政策。
-
在輸出內容的
-
建立 SCIM 權杖:
gcloud iam workforce-pools providers scim-tenants tokens create SCIM_TOKEN_ID \ --display-name DISPLAY_NAME \ --scim-tenant SCIM_TENANT_ID \ --workforce-pool WORKFORCE_POOL_ID \ --provider PROVIDER_ID \ --location global更改下列內容:
SCIM_TOKEN_ID:SCIM 權杖的 IDDISPLAY_NAME:SCIM 權杖的顯示名稱WORKFORCE_POOL_ID:工作團隊集區的 IDSCIM_TENANT_ID:SCIM 租戶的 IDPROVIDER_ID:員工身分集區提供者的 ID
-
gcloud iam workforce-pools providers scim-tenants tokens create指令完成後,請執行下列操作:-
在輸出中,將
SCIM_TOKEN的值儲存在securityToken欄位中。您必須將這個安全權杖提供給 IdP。安全權杖只會顯示在輸出內容中, 如果遺失,就必須建立新的 SCIM 權杖。 -
如要檢查
SCIM_TOKEN是否遭機構政策拒絕,請執行下列指令: 如果指令失敗並顯示權限相關錯誤,請執行curl -v -H "Authorization: Bearer SCIM_TOKEN" https://iamscim.googleapis.com/v1alpha1/tenants/SCIM_TENANT_UID/Users
gcloud organizations add-iam-policy-binding(詳見後續步驟)。如果指令成功,可以略過該步驟。
-
在輸出中,將
-
為 SCIM 租戶和權杖設定 IAM 政策。如果上一個步驟中的
curl指令因權限相關錯誤而失敗,請執行下列指令:gcloud organizations add-iam-policy-binding ORGANIZATION_ID \ --member=serviceAccount:SERVICE_AGENT_EMAIL \ --role roles/iam.scimSyncer取代下列項目:
- ORGANIZATION_ID:組織 ID。
- SERVICE_AGENT_EMAIL:服務專員的電子郵件地址。電子郵件地址的格式如下:
o-ORGANIZATION_ID-SCIM_TENANT_UID@gcp-sa-iamscim.iam.gserviceaccount.com。建立 SCIM 租戶時,系統會傳回 SCIM_TENANT_UID。
在 IdP 中佈建群組時,請確保每個群組的顯示名稱 (在 displayName 欄位中提供) 在 SCIM 租戶中是唯一的。如要進一步瞭解 Microsoft Entra ID 中的群組和 SCIM,請參閱「群組」。
在 OIDC 或 SAML IdP 中設定 SCIM
在 IdP 中,按照 IdP 說明文件設定 SCIM。使用上一步取得的 SCIM 網址和 SCIM 權杖。
更新供應商以啟用 SCIM
如要為供應商啟用 SCIM,請按照下列步驟操作:
OIDC
gcloud iam workforce-pools providers update-oidc PROVIDER_ID \
--workforce-pool=WORKFORCE_POOL_ID \
--location=LOCATION \
--scim-usage=enabled-for-groups
取代下列項目:
PROVIDER_ID:員工身分集區提供者的 IDWORKFORCE_POOL_ID:工作團隊集區的 IDLOCATION:工作團隊集區的位置
SAML
gcloud iam workforce-pools providers update-saml PROVIDER_ID \
--workforce-pool=WORKFORCE_POOL_ID \
--location=LOCATION \
--scim-usage=enabled-for-groups
取代下列項目:
PROVIDER_ID:員工身分集區提供者的 IDWORKFORCE_POOL_ID:工作團隊集區的 IDLOCATION:工作團隊集區的位置
對應權杖和 SCIM 屬性
您必須在工作團隊身分集區提供者和為提供者設定的 SCIM 租戶中,一致地對應屬性。如果是工作團隊身分集區提供者,請使用 --attribute-mapping 標記;如果是 SCIM 租戶,請使用 --claim-mapping 標記。無論是在權杖或 SCIM 對應中定義,對應至使用者 google.subject 的 IdP 屬性都必須專指同一身分。如要進一步瞭解使用 SCIM 時如何對應屬性,請參閱「
SCIM 支援」一節。下表說明如何對應權杖聲明中的屬性和 SCIM 屬性:
| Google 屬性 | 工作團隊身分集區提供者對應 | SCIM 租戶對應 |
|---|---|---|
google.subject |
assertion.oid |
user.externalId |
google.subject |
assertion.email |
user.emails[0].value |
google.subject |
assertion.email.lowerAscii() |
user.emails[0].value.lowerAscii() |
google.subject |
assertion.preferred_username |
user.userName |
google.group請務必向供應商提供--scim-usage=enabled-for-groups |
N/A |
group.externalId |
強制刪除 SCIM 用戶端
如要強制刪除 SCIM 租戶,請按照下列步驟操作:
- 如果供應商已設定
--scim-usage=enabled-for-groups,請從供應商設定中停用:gcloud iam workforce-pools providers update-oidc --provider=PROVIDER_ID \ --workforce-pool=WORKFORCE_POOL_ID \ --location= global --scim-usage=SCIM_USAGE_UNSPECIFIED取代下列項目:
PROVIDER_ID:員工身分集區提供者的 IDWORKFORCE_POOL_ID:工作團隊集區的 ID
- 刪除 SCIM 租戶:
gcloud iam workforce-pools providers scim-tenants delete SCIM_TENANT_ID \ --workforce-pool=WORKFORCE_POOL_ID \ --provider=PROVIDER_ID \ --hard-delete \ --location=global取代下列項目:
SCIM_TENANT_ID:要刪除的 SCIM 租戶 IDWORKFORCE_POOL_ID:工作團隊集區的 IDPROVIDER_ID:員工身分集區提供者的 ID
後續步驟
- 取得員工身分聯盟的短期憑證
- 管理員工身分集區提供者
- 刪除員工身分聯盟使用者及其資料
- 瞭解 Google Cloud 支援員工身分聯盟的產品
- 設定使用者對控制台 (聯合) 的存取權