本文說明如何設定員工身分聯盟,並以 PingOne Advanced Identity Cloud (AIC) 做為識別資訊提供者 (IdP),以及如何管理Cloud de Confiance的存取權。設定 PingOne AIC IdP 後,聯合使用者就能使用 SAML 2.0 通訊協定,存取 Cloud de Confiance 支援員工身分聯盟的服務。
事前準備
- 請確認已設定 Cloud de Confiance 機構。
-
將
GOOGLE_CLOUD_UNIVERSE_DOMAIN環境變數設為s3nsapis.fr。 -
安裝 Google Cloud CLI,然後 使用聯合身分登入 gcloud CLI。登入後,執行下列指令來初始化 Google Cloud CLI:
gcloud init - 登入時,IdP 必須提供已簽署的驗證資訊:SAML IdP 回應必須經過簽署。
- 如要接收貴機構或Cloud de Confiance 產品異動的重要資訊,請務必提供必要聯絡人。詳情請參閱「員工身分聯盟總覽」。
費用
員工身分聯盟是免付費功能。不過,員工身分聯盟詳細稽核記錄會使用 Cloud Logging。如要瞭解 Logging 定價,請參閱「Google Cloud Observability 定價」。
必要的角色
如要取得設定員工身分聯盟所需的權限,請要求管理員授予您組織的 IAM 工作團隊集區管理員 (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:您選擇代表 Cloud de Confiance 工作團隊集區的 ID。集區 ID 在 Cloud de Confiance的所有工作團隊身分集區中,不得重複。如要瞭解如何設定 ID 格式,請參閱 API 說明文件中的「查詢參數」一節。ORGANIZATION_ID:您的 Cloud de Confiance 員工身分集區的組織 ID。員工身分集區適用於機構中的所有專案和資料夾。DISPLAY_NAME:選用。員工身分集區的顯示名稱。DESCRIPTION:選用。員工身分集區 說明。SESSION_DURATION:選用。工作階段持續時間,以附加s的數字表示,例如3600s。工作階段時間決定了從這個工作團隊集區取得的 Cloud de Confiance 存取權杖、控制台 (聯盟) 登入工作階段,以及 gcloud CLI 登入工作階段的有效時間。工作階段持續時間預設為一小時 (3600 秒)。工作階段持續時間值必須介於 15 分鐘 (900 秒) 和 12 小時 (43200 秒) 之間。
控制台
如要建立工作團隊身分集區,請執行下列操作:
前往 Cloud de Confiance 控制台的「Workforce Identity Pools」(員工身分集區) 頁面:
選取員工身分集區的機構。工作人員身分識別集區適用於機構中的所有專案和資料夾。
點選「建立集區」,然後執行下列操作:
在「名稱」欄位中,輸入集區的顯示名稱。系統會在您輸入名稱時自動衍生集區 ID,並顯示在「名稱」欄位下方。如要更新集區 ID,請按一下集區 ID 旁的「編輯」。
選用:在「Description」(說明) 中,輸入集區的說明。
如要建立員工身分集區,請按「Next」(下一步)。
員工身分集區的工作階段持續時間預設為一小時 (3600 秒)。工作階段持續時間決定了這個工作團隊集區的 Cloud de Confiance 存取權杖、控制台 (聯盟) 和 gcloud CLI 登入工作階段的有效時間。建立集區後,您可以更新集區,設定自訂工作階段持續時間。工作階段持續時間必須介於 15 分鐘 (900 秒) 至 12 小時 (43,200 秒) 之間。
建立 PingOne AIC 應用程式
本節說明如何建立 PingOne AIC 應用程式整合。
建立代管的 IdP
- 在「Native Consoles」> Access Management 中,依序前往「Realms」> REALM_NAME >「Dashboard」,然後按一下「SAML Applications」。
- 依序點選「新增實體提供者」>「代管」。
輸入實體 ID。請記下這個值,稍後會用到。
- 確認「實體供應商基本網址」值正確無誤。Advanced Identity Cloud 會將這個值用於所有 SAML 2.0 相關端點。
- 在「Meta Aliases」部分,於「Identity Provider Meta Alias」屬性中提供適合網址的值。這個別名在信任圈中不得重複。
- 點選「建立」。
- 在「Assertion Processing」分頁的「Attribute Mapper」部分,將 SAML 屬性名稱對應至本機屬性名稱。SAML 屬性名稱是判斷結果中使用的名稱。
- 針對每個對應項目,按一下「新增」或「更新」。
- 按一下 [儲存變更]。
使用屬性
本節說明如何使用 SAML 判斷中的屬性。
在下列範例中,SAML 判斷中的屬性會對應至本機屬性:
| SAML 屬性 | 店面屬性 |
|---|---|
IDPEmail |
mail |
FirstName |
givenName |
groups |
groups |
在屬性對應部分設定必要屬性。稍後在本指南中建立工作團隊身分集區提供者時,您會對應這些屬性。
匯出供應商中繼資料
您可以透過下列任一方式,存取代管供應商的 SAML 2.0 中繼資料:
透過 REST
執行下列指令:
curl --output METADATA_XML \ "https://TENANT_ENV_FQDN/am/ExportSamlMetadata?entityid=ENTITY_ID&realm=/REALM"使用瀏覽器
在瀏覽器中開啟租戶環境的中繼資料網址,下載 XML 檔案:
https://TENANT_ENV_FQDN/am/ExportSamlMetadata?entityid=ENTITY_ID&realm=/REALM
- 將 XML 檔案儲存至本機電腦。
將 Google 匯入為遠端 SP
準備 Cloud de Confiance SP 中繼資料 XML。請使用下列範本,並替換預留位置值:
<?xml version="1.0" encoding="UTF-8"?> <md:EntityDescriptor xmlns:md="urn:oasis:names:tc:SAML:2.0:metadata" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" entityID="https://iam.googleapis.com/locations/global/workforcePools/WORKFORCE_POOL_ID/providers/WORKFORCE_PROVIDER_ID"> <md:SPSSODescriptor AuthnRequestsSigned="false" WantAssertionsSigned="true" protocolSupportEnumeration="urn:oasis:names:tc:SAML:2.0:protocol"> <md:NameIDFormat>urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified</md:NameIDFormat> <md:NameIDFormat>urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress</md:NameIDFormat> <md:AssertionConsumerService Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST" Location="https://auth.cloud.s3nscloud.fr/signin-callback/locations/global/workforcePools/WORKFORCE_POOL_ID/providers/WORKFORCE_PROVIDER_ID" index="0" isDefault="true"/> </md:SPSSODescriptor> </md:EntityDescriptor>你可以透過下列任一方式匯入中繼資料:
在控制台中
- 在 PingOne AIC 管理控制台中,前往「SAML Applications」。
- 依序點選「新增實體提供者」>「遠端」。
- 上傳您剛建立的 Cloud de Confiance 服務供應商中繼資料 XML 檔案。
- 點選「建立」。
透過 REST
- 將 XML 中繼資料轉換為 base64url 編碼字串。
- 取得存取權杖。
執行下列指令:
curl --request POST \ --header 'authorization: Bearer ACCESS_TOKEN' \ --header 'Content-Type: application/json' \ --header 'Accept-API-Version: resource=1.0' \ --data-raw '{"standardMetadata": "BASE64URL_ENCODED_METADATA"}' \ 'https://TENANT_ENV_FQDN/am/json/realms/root/realms/alpha/realm-config/saml2/remote?_action=importEntity'
建立信任圈 (CoT)
- 依序前往「Realms」> REALM_NAME >「Applications」>「Federation」>「Circles of Trust」。
- 按一下「新增信任圈」。
- 輸入名稱並按一下 [建立]。
- 在「信任圈」頁面的「實體供應商」屬性中,選取代管的 IdP 和 Cloud de Confiance 遠端 SP。
- 按一下 [儲存變更]。
建立 PingOne AIC 工作團隊身分集區提供者
本節說明如何建立工作團隊身分集區提供者,讓 IdP 使用者存取 Cloud de Confiance。您可以設定供應商使用 SAML 通訊協定。
建立 SAML 工作團隊身分集區提供者
如要建立 SAML 工作團隊身分集區提供者,請確保識別資訊提供者中繼資料至少包含 SAML 實體 ID、單一登入網址和一組簽署用公開金鑰。詳細步驟如下:
gcloud
儲存 PingOne AIC 應用程式的 SAML 中繼資料。
如要建立 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="XML_METADATA_PATH" \ --attribute-mapping="ATTRIBUTE_MAPPING" \ --attribute-condition="ATTRIBUTE_CONDITION" \ --location=global更改下列內容:
WORKFORCE_PROVIDER_ID:供應商 ID。WORKFORCE_POOL_ID:員工身分集區 ID。DISPLAY_NAME:顯示名稱。DESCRIPTION:說明。XML_METADATA_PATH:從 PingOne AIC 匯出的 XML 格式中繼資料檔案路徑。ATTRIBUTE_MAPPING:屬性對應,例如google.subject=assertion.subject,google.groups=assertion.attributes.groups,attribute.department=assertion.attributes.department[0]。ATTRIBUTE_CONDITION:選用的屬性條件;舉例來說,如要將ipaddr屬性限制在特定 IP 範圍內,可以設定assertion.ipaddr.startsWith('98.11.12.')條件。
詳情請參閱「屬性對應」。
這項指令會將 SAML 判斷中的
subject、groups和department分別指派給google.subject、google.groups和attribute.department屬性。屬性條件也會確保只有特定 IP 範圍內的使用者,才能使用這個員工身分提供者登入。
控制台
如要使用 Cloud de Confiance 控制台設定 SAML 提供者,請按照下列步驟操作:
- 前往 Cloud de Confiance 控制台的「Workforce Identity Pools」(員工身分集區) 頁面: 前往「Workforce Identity Pools」(員工身分集區)
- 在「Workforce Identity Pools」(員工身分集區) 表格中,選取要建立提供者的集區。
- 在「供應商」部分,按一下「新增供應商」。
- 在「Select a Provider vendor」(選取提供者) 清單中,選取「Generic Identity Provider」(一般身分識別提供者)。
- 在「選取驗證通訊協定」中,選取「SAML」。
- 在「建立供應商」部分,執行下列操作:
- 在「名稱」部分,輸入供應商名稱。
- 選用:在「Description」(說明) 中輸入提供者的說明。
- 在「IdP metadata file (XML)」中,選取從 PingOne AIC 匯出的中繼資料 XML 檔案。
- 如要建立已啟用的供應商,請確認「啟用供應商」已開啟。
- 按一下「繼續」。
- 在「分享供應商資訊」部分中,按一下「繼續」。
- 選用:如要啟用詳細稽核記錄,請在「設定供應商」部分的「詳細記錄」中,點選「啟用屬性值稽核記錄」切換鈕。
員工身分聯盟詳細稽核記錄會將從 IdP 收到的資訊記錄到 Cloud Logging。詳細的稽核記錄有助於排解工作團隊身分識別集區提供者設定問題。如要瞭解如何透過詳細的稽核記錄排解屬性對應錯誤,請參閱「一般屬性對應錯誤」。如要瞭解 Logging 定價,請參閱「Google Cloud Observability 定價」。
如要為工作團隊身分集區提供者停用詳細稽核記錄,請在建立提供者時,將「啟用屬性值稽核記錄」切換鈕設為關閉。如要停用詳細稽核記錄,您也可以更新供應商。
- 如要建立提供者,請按一下「提交」。
建立供應商後,系統會將您重新導向至供應商屬性頁面。
如要設定屬性對應和條件,請按照下列步驟操作:
- 系統提示時,請登入外部 IdP,驗證預設屬性對應。
在提供者屬性頁面,查看及編輯屬性對應和條件:
如要新增或編輯屬性對應項目,請按照下列步驟操作:
- 按一下「新增對應」新增對應,或編輯現有對應。
- 在「Google n」欄位中 (n 為數字),選取支援的 Cloud de Confiance金鑰。
在對應的「SAML n」欄位中,輸入 IdP 屬性名稱或 CEL 運算式,例如:
google.subject=assertion.subject, google.groups=assertion.attributes['https://example.com/aliases'], attribute.costcenter=assertion.attributes.costcenter[0]
如要新增屬性條件,請按照下列步驟操作:
- 按一下「新增條件」。
- 在「屬性條件」欄位中,以 CEL 格式輸入條件,例如
assertion.attributes.ipaddr.startsWith('98.11.12.')。
如要驗證對應項目,請按一下「儲存並重新擷取權杖」。
如要完成設定,請按一下「儲存並結束」。
管理 Cloud de Confiance 資源存取權
本節說明如何管理 PingOne AIC 使用者的資源存取權。 Cloud de Confiance
本指南中使用的範例專案,可能與您設定員工身分聯盟時使用的專案不同。
您可以管理單一身分、身分群組或整個集區的角色。詳情請參閱「允許政策的員工主體 ID」。
使用對應的部門屬性
如要為 TEST_PROJECT_ID 專案中特定部門的所有身分授予「儲存空間管理員」角色 (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/attribute.department/DEPARTMENT_VALUE"
更改下列內容:
TEST_PROJECT_ID:專案 ID。WORKFORCE_POOL_ID:員工身分集區 ID。DEPARTMENT_VALUE:對應的attribute.department值。
使用對應群組
如要為 TEST_PROJECT_ID 專案的 GROUP_ID 群組內所有身分授予「儲存空間管理員」角色 (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聲明中的群組。
登入並測試存取權
在本節中,您將以工作團隊身分集區使用者身分登入,並測試存取權。
登入
控制台 (聯盟) 登入
如要登入 Cloud de Confiance by S3NS 員工身分聯盟控制台 (又稱聯合控制台),請按照下列步驟操作:
-
前往控制台 (聯合) 登入頁面。
-
輸入提供者名稱,格式如下:
locations/global/workforcePools/WORKFORCE_POOL_ID/providers/WORKFORCE_PROVIDER_ID
系統提示時,輸入 PingOne AIC 憑證。
Google Cloud CLI 瀏覽器式登入
如要使用瀏覽器登入流程登入 gcloud CLI,請按照下列步驟操作:
執行下列指令,建立登入設定檔:
Linux 和 macOS
gcloud iam workforce-pools create-login-config \ locations/global/workforcePools/WORKFORCE_POOL_ID/providers/WORKFORCE_PROVIDER_ID \ --output-file=LOGIN_CONFIG_PATH
Windows (PowerShell)
gcloud iam workforce-pools create-login-config ` locations/global/workforcePools/WORKFORCE_POOL_ID/providers/WORKFORCE_PROVIDER_ID ` --output-file=LOGIN_CONFIG_PATH
更改下列內容:
WORKFORCE_POOL_ID:員工身分聯盟集區 ID。WORKFORCE_PROVIDER_ID:員工身分聯盟供應商 ID。-
LOGIN_CONFIG_PATH:要寫入登入設定檔的路徑。例如:login-config.json。
登入設定檔包含 gcloud CLI 啟動瀏覽器式驗證流程時使用的端點,並將對象設為工作團隊身分集區提供者中設定的 IdP。檔案不含機密資訊。
登入設定檔內容類似於下列範例:
{ "universe_domain": "s3nsapis.fr", "universe_cloud_web_domain": "cloud.s3nscloud.fr", "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.s3nscloud.fr/authorize", "token_url": "https://sts.s3nsapis.fr/v1/oauthtoken", "token_info_url": "https://sts.s3nsapis.fr/v1/introspect" }
使用環境變數、有效 gcloud CLI 設定中的屬性,或直接搭配 gcloud auth login 指令,指向登入設定檔:
環境變數
如要搭配環境變數使用登入設定檔,請完成下列操作說明:
-
將
CLOUDSDK_AUTH_LOGIN_CONFIG_FILE環境變數設為登入設定檔的路徑。 -
執行下列指令:
gcloud auth login
- gcloud CLI 會參照環境變數來尋找登入設定檔,然後啟動驗證程序。按照瀏覽器流程驗證及授權 gcloud CLI,以便代表您存取資源,執行後續指令。
如要停止使用 gcloud auth login 指令的登入設定檔,請清除 CLOUDSDK_AUTH_LOGIN_CONFIG_FILE 環境變數。
gcloud CLI 設定
如要搭配使用登入設定檔和 gcloud CLI 設定屬性,請完成下列操作說明:
-
使用下列指令,將有效 gcloud CLI 設定的
auth/login_config_file屬性設為登入設定檔的路徑:gcloud config set auth/login_config_file LOGIN_CONFIG_PATH
-
執行下列指令:
gcloud auth login
- gcloud CLI 會參照設定屬性來尋找登入設定檔,然後啟動驗證程序。按照瀏覽器流程驗證及授權 gcloud CLI,以便代表您存取資源,執行後續指令。
如要停止使用 gcloud auth login 指令的登入設定檔,請使用下列指令取消設定屬性:
gcloud config unset auth/login_config_file
gcloud auth login
如要直接使用登入設定檔搭配 gcloud auth login
指令,請完成下列操作說明:
-
如果您在建立登入設定檔時使用
--activate旗標,請執行下列指令:gcloud auth login
-
如果您在建立登入設定檔時未使用
--activate旗標,請執行下列指令:Linux 和 macOS
gcloud auth login \ --login-config=LOGIN_CONFIG_PATH
Windows (PowerShell)
gcloud auth login ` --login-config=LOGIN_CONFIG_PATH
將 LOGIN_CONFIG_PATH 替換為登入設定檔的路徑。
gcloud auth login 指令會將存取憑證儲存在主目錄中。經過驗證的主體會成為有效 gcloud CLI 設定中的有效主體。除非遭到覆寫,否則 gcloud CLI 會使用這些儲存的憑證存取 Cloud de Confiance by S3NS。
gcloud CLI 無頭登入
如要使用 SAML 通訊協定透過 gcloud CLI 登入 PingOne AIC,請按照下列步驟操作:
- 讓使用者登入 PingOne AIC 應用程式,並取得 SAML 回應。
- 將 PingOne AIC 傳回的 SAML 回應儲存在本機電腦的安全位置。將路徑儲存在環境變數中,例如:
SAML_ASSERTION_PATH=/tmp/saml_assertion.xml。 產生設定檔:
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更改下列內容:
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 CLI,請執行下列指令:
gcloud auth login --cred-file=config.jsongcloud,然後以透明方式將您的 PingOne AIC 憑證換成臨時 Cloud de Confiance 存取權杖,讓您對gcloud發出其他呼叫 Cloud de Confiance。輸出結果會與下列內容相似:Authenticated with external account user credentials for: [principal://iam.googleapis.com/locations/global/workforcePools/WORKFORCE_POOL_ID/subject/USER_ID].如要列出已通過驗證的帳戶和有效帳戶,請執行下列指令:
gcloud auth list
測試存取權
您可以存取獲准使用的 Cloud de Confiance 支援員工身分聯盟的服務。在本指南稍早的內容中,您已為專案 TEST_PROJECT_ID 的特定部門或群組內的所有身分授予「儲存空間管理員」角色。您可以列出 Cloud Storage bucket,測試自己是否具備存取權。
控制台 (聯盟) 登入
如要在控制台 (已聯合) 中驗證存取權,請按照下列步驟操作:
gcloud CLI
如要列出您有權存取的專案 Cloud Storage bucket 和物件,請執行下列指令:
gcloud alpha storage ls --project="TEST_PROJECT_ID"
主體必須具備 gcloud CLI 工作階段中設定專案的 serviceusage.services.use 權限:PROJECT_ID。
後續步驟
- 刪除員工身分聯盟使用者及其資料。
- 瞭解哪些 Cloud de Confiance 產品支援員工身分聯盟。
- 設定使用者對控制台的存取權 (已聯合)。