連線至識別資訊提供者

本頁說明如何將 Google Distributed Cloud (GDC) 氣隙網路連線至貴機構現有的身分識別提供者 (IdP)。IdP 是一種系統,可集中管理及保護使用者身分,並提供驗證服務。連結至現有 IdP 後,使用者就能使用機構的憑證存取 GDC,不必在 GDC 中建立或管理個別帳戶。這個程序可確保登入體驗流暢安全。由於 IdP 是全域資源,使用者無論在哪個區域工作,都能透過同一個 IdP 存取 GDC。

本頁面適用於平台管理員群組的對象,例如 IT 管理員或安全工程師,他們想要連線至 IdP。詳情請參閱 GDC air-gapped 說明文件適用對象

您可以透過下列任一方式連結至現有的身分識別提供者:

事前準備

連線至現有身分識別提供者之前,請確認已完成初始設定,並具備必要權限。

初始識別資訊提供者連線設定

貴機構的基礎架構營運人員群組成員必須先設定與 IdP 的初始連線,使用者才能存取 GDC 的叢集或資訊主頁。

如要提出要求,請在 ServiceNow票證系統中開立支援單,並提供下列身分識別提供者資訊:

  • 伺服器數量和類型。
  • 區塊儲存空間量 (以 TB 為單位)。
  • 物件儲存空間大小 (以 TB 為單位)。
  • OIDC 的必要參數:
    • clientID:向 OpenID 供應商提出驗證要求時使用的用戶端應用程式 ID。
    • clientSecret:只有應用程式和 OpenID 供應商知道的密鑰。
    • issuerURL:授權要求傳送給 OpenID 的網址。
    • scopes:要傳送給 OpenID 提供者的其他範圍。
    • userclaim:要用做使用者名稱的 JSON Web Token (JWT) 憑證。
    • certificateAuthorityData:OIDC 供應商的 PEM 編碼憑證 (採用 Base64 編碼)。
  • SAML 提供者的必要參數:
    • idpCertificateDataList:用於驗證 SAML 回應的 IdP 憑證。這些憑證必須採用標準 Base64 編碼,且為 PEM 格式。為方便 IdP 憑證輪替,最多僅支援兩個憑證。
    • idpEntityID:SAML 供應商的 SAML 實體 ID,以 URI 格式指定。例如:https://www.idp.com/saml
    • idpSingleSignOnURI:SAML 提供者的單一登入端點 URI。例如:https://www.idp.com/saml/sso
  • 初始管理員的使用者名稱或使用者名稱群組。

所需權限

如要取得連線現有身分識別提供者所需的權限,請按照下列步驟操作:

  • 請機構 IAM 管理員授予您 IdP 聯盟管理員 (idp-federation-admin) 角色。
  • 請確認您在連結身分提供者時指定的初始管理員,具備機構 IAM 管理員 (organization-iam-admin) 角色。

連結至現有識別資訊提供者

如要連結識別資訊提供者,您必須擁有來自識別資訊提供者的單一客戶 ID 和密碼。您可以連線至現有的 OIDCSAML 提供者。

連結至現有的 OIDC 供應商

如要連線至現有的 OIDC 供應商,請完成下列步驟:

控制台

  1. 登入 GDC 控制台。以下範例顯示登入名為「org-1」的機構後,控制台的畫面:控制台歡迎頁面,提供常見工作的快速存取連結
  2. 在導覽選單中,依序點選「Identity and Access」>「Identity」
  3. 按一下「設定新的身分識別提供者」

  4. 在「設定識別資訊提供者」部分,完成下列步驟,然後按一下「下一步」

    1. 在「Identity provider」下拉式選單中,選取「Open ID Connect (OIDC)」
    2. 輸入識別資訊提供者名稱
    3. 在「Google Distributed Cloud URL」(Google Distributed Cloud 網址) 欄位中,輸入您用來存取 GDC 的網址。
    4. 在「核發者 URI」欄位中,輸入授權要求傳送至識別資訊提供者的網址。Kubernetes API 伺服器會使用這個網址探索公開金鑰,以驗證權杖。網址必須使用 HTTPS。
    5. 在「Client ID」欄位中,輸入向身分識別提供者提出驗證要求的用戶端應用程式 ID。
    6. 在「用戶端密鑰」部分,選取「設定用戶端密鑰 (建議)」
      1. 在「用戶端密鑰」欄位中,輸入用戶端密鑰,這是身分識別提供者與 Distributed Cloud 之間共用的密鑰。
    7. 選用:在「前置字元」欄位中輸入前置字元。系統會在使用者聲明和群組聲明開頭加入前置字元。前置字串用於區分不同的身分提供者設定。舉例來說,如果您將前置字元設為 myidp,使用者聲明可能為 myidpusername@example.com,群組聲明可能為 myidpgroup@example.com。將角色型存取權控管 (RBAC) 權限指派給群組時,也必須包含這個前置字元。

    8. 選用步驟:在「Encryption」(加密) 部分,選取「Enable encrypted tokens」(啟用加密權杖)

      如要啟用加密權杖,您必須具備 IdP 聯盟管理員角色。請機構 IAM 管理員授予您 IdP 聯盟管理員 (idp-federation-admin) 角色。

      1. 在「金鑰 ID」欄位中,輸入金鑰 ID。金鑰 ID 是 JSON Web Encryption Token (JWT) 的公開金鑰。OIDC 提供者會設定及佈建金鑰 ID。
      2. 在「解密金鑰」欄位中,以 PEM 格式輸入解密金鑰。解密金鑰是一種非對稱金鑰,可解密加密內容。OIDC 供應商會設定並佈建解密金鑰。
  5. 在「設定屬性」部分,完成下列步驟並按一下「下一步」

    1. 在「OIDC 供應商的憑證授權單位」欄位中,輸入身分識別提供者的 PEM 編碼憑證 (採用 Base64 編碼)。詳情請參閱 https://en.wikipedia.org/wiki/Privacy-Enhanced_Mail
      1. 如要建立字串,請將憑證 (包含標頭) 的編碼方式改為 base64
      2. 並以獨立一行的形式加入。範例:LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tC...k1JSUN2RENDQWFT==
    2. 在「群組聲明」欄位中,輸入身分識別提供者權杖中聲明的名稱,該聲明會保留使用者的群組資訊。
    3. 在「使用者聲明」欄位中,輸入用於識別每位使用者的聲明。許多供應商的預設聲明為 sub。視身分識別提供者而定,您可以選擇其他憑證附加資訊,例如 emailnameemail 以外的聲明會在前方加上核發者網址,以免發生命名衝突。
    4. 選用:在「自訂屬性」部分中,按一下「新增」,然後輸入使用者其他聲明的鍵/值組合,例如部門或個人資料相片網址。
    5. 如果身分識別提供者需要其他範圍,請在「範圍」欄位中,輸入以半形逗號分隔的範圍,傳送給身分識別提供者。
    6. 在「Extra parameters」(額外參數) 區段中,輸入身分識別提供者要求的任何額外鍵值組合 (以半形逗號分隔)。如要授權群組,請傳遞 resource=token-groups-claim
  6. 在「指定初始管理員」部分,完成下列步驟並按一下「下一步」

    1. 選擇要將個別使用者或群組新增為初始管理員。
    2. 在「使用者名稱或群組別名」欄位中,輸入要用來存取機構的使用者或群組電子郵件地址。如果您是管理員,請輸入您的電子郵件地址,例如 kiran@example.com。前置字串會加在使用者名稱前面,例如 myidp-kiran@example.com
  7. 檢查選取的項目,然後按一下「設定」

新的身分識別提供者設定檔會顯示在「身分識別設定檔」清單中。

API

如要將識別資訊提供者連結至機構,請建立全域IdentityProviderConfig自訂資源。

  1. 建立 IdentityProviderConfig 自訂資源 YAML 檔案,例如 pa-idp-oidc.yaml

    apiVersion: iam.global.gdc.goog/v1
    kind: IdentityProviderConfig
    metadata:
      name: pa-idp-oidc
      namespace: platform
    spec:
      oidc:
        certificateAuthorityData: "IDP_BASE64_ENCODED_CERTIFICATE"
        clientID: IDP_CLIENT_ID
        clientSecret: IDP_CLIENT_SECRET
        groupPrefix: IDP_GROUP_PREFIX
        groupsClaim: IDP_GROUP_CLAIM
        issuerURI: IDP_ISSUER_URI
        scopes: openid email profile
        userClaim: IDP_USER_CLAIM
        userPrefix: IDP_USER_PREFIX
    

    請替換下列變數:

    • IDP_BASE64_ENCODED_CERTIFICATE:IdP 的 Base64 編碼憑證。
    • IDP_CLIENT_ID:IdP 的用戶端 ID。
    • IDP_CLIENT_SECRET:IdP 的用戶端密碼。
    • IDP_GROUP_PREFIX:IdP 中群組的前置字串。
    • IDP_GROUP_CLAIM:IdP 權杖中包含群組資訊的聲明名稱。
    • IDP_ISSUER_URI:IdP 的核發者 URI。
    • IDP_USER_CLAIM:使用者 IdP 權杖中的聲明名稱。
    • IDP_USER_PREFIX:使用者 IdP 的前置字串。
  2. IdentityProviderConfig 自訂資源套用至全域 API 伺服器:

    kubectl --kubeconfig GLOBAL_API_SERVER_KUBECONFIG apply -f pa-idp-oidc.yaml
    

    GLOBAL_API_SERVER_KUBECONFIG 變數替換為全域 API 伺服器的 kubeconfig 檔案路徑。

連結至現有的 SAML 提供者

如要連線至現有的 SAML 提供者,請完成下列步驟:

控制台

  1. 登入 GDC 控制台。
  2. 在導覽選單中,依序點選「Identity and Access」>「Identity」
  3. 在「設定識別資訊提供者」部分,完成下列步驟,然後按一下「下一步」

    1. 在「Identity provider」下拉式選單中,選取「Security Assertion Markup Language (SAML)」
    2. 輸入識別資訊提供者名稱
    3. 在「身分 ID」欄位中,輸入向身分識別提供者提出驗證要求的用戶端應用程式 ID。
    4. 在「SSO URI」欄位中,輸入供應商的單一登入端點網址。例如:https://www.idp.com/saml/sso
    5. 在「身分提供者前置字元」欄位中輸入前置字元。前置字串會加到使用者和群組聲明的開頭。前置字元可區分不同的識別資訊提供者設定。舉例來說,如果您將前置字串設為 myidp,使用者聲明可能會顯示為 myidpusername@example.com,群組聲明則可能會顯示為 myidpgroup@example.com。為群組指派 RBAC 權限時,也必須加入前置字元。

    6. 為提升安全性,請將 SAML 提供者設定為發出生命週期為 5 到 10 分鐘的聲明。這項設定可在 SAML 供應商的設定中進行設定。

    7. 選用:在「SAML Assertions」部分,選取「Enable encrypted SAML assertions」

      如要啟用加密的 SAML 聲明,您必須具備 IdP 聯盟管理員角色。請要求機構 IAM 管理員授予您 IdP 聯盟管理員 (idp-federation-admin) 角色。

      1. 在「Encryption certificate」(加密憑證) 欄位中,輸入 PEM 格式的加密憑證。產生 SAML 供應商後,您會收到加密憑證。
      2. 在「解密金鑰」欄位中輸入解密金鑰。產生 SAML 提供者後,您會收到解密金鑰。
    8. 選用:在「SAML Signed requests」部分,勾選「Enable signed SAML requests」

      1. 在「Signing certificate」欄位中,輸入 PEM 檔案格式的簽署憑證。SAML 供應商會設定並產生簽署憑證。
      2. 在「簽署金鑰」欄位中,以 PEM 檔案格式輸入簽署金鑰。SAML 供應商會設定並產生簽署金鑰。
  4. 在「設定屬性」頁面中,完成下列步驟並按一下「下一步」

    1. 在「IDP certificate」欄位中,輸入身分識別提供者的 PEM 編碼憑證 (採用 Base64 編碼)。詳情請參閱 https://en.wikipedia.org/wiki/Privacy-Enhanced_Mail
      1. 如要建立字串,請將憑證 (包含標頭) 的編碼方式改為 base64
      2. 並把產生的字串另列一行加入。例如 LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tC...k1JSUN2RENDQWFT==
    2. 在「Additional IDP certificate」欄位中輸入其他憑證。
    3. 在「使用者屬性」欄位中,輸入用來識別每位使用者的屬性。許多供應商的預設屬性為 sub。視身分提供者而定,您可以選擇其他屬性,例如 emailnameemail 以外的屬性都必須在前方加上核發者網址,以免發生命名衝突。
    4. 在「群組屬性」欄位中,輸入身分識別提供者權杖中屬性的名稱,該屬性會保留使用者的群組資訊。
    5. 選用:在「屬性對應」區域中,按一下「新增」,然後輸入使用者其他屬性的鍵值組,例如部門或個人資料相片網址。
  5. 在「指定初始管理員」部分,完成下列步驟並按一下「下一步」

    1. 選擇要將個別使用者或群組新增為初始管理員。
    2. 在「使用者名稱」欄位中,輸入使用者或群組的電子郵件地址,即可存取機構。如果您是管理員,請輸入您的電子郵件地址,例如 kiran@example.com。前置字串會加在使用者名稱前面,例如 myidp-kiran@example.com
  6. 在「查看」頁面中,請先檢查每個身分設定的所有值,再繼續操作。按一下「返回」返回上一個頁面,並進行必要的修正。根據規格設定所有值後,按一下「設定」

API

如要將識別資訊提供者連結至機構,請建立全域IdentityProviderConfig自訂資源。

  1. 建立 IdentityProviderConfig 自訂資源 YAML 檔案,例如 pa-idp-saml.yaml

    apiVersion: iam.global.gdc.goog/v1
    kind: IdentityProviderConfig
    metadata:
      name: pa-idp-saml
      namespace: platform
    spec:
      saml:
        groupPrefix: IDP_GROUP_PREFIX
        groupsAttribute: IDP_GROUP_ATTRIBUTE
        idpCertificateDataList:
        - "IDP_BASE64_ENCODED_CERTIFICATE"
        idpEntityID: IDP_SAML_ENTITY_ID
        idpSingleSignOnURI: IDP_SAML_SSO_URI
        userAttribute: IDP_USER_ATTRIBUTE
        userPrefix: IDP_USER_PREFIX
    

    請替換下列變數:

    • IDP_GROUP_PREFIX:IdP 中群組的前置字串。
    • IDP_GROUP_ATTRIBUTE:IdP 中群組的屬性。
    • IDP_BASE64_ENCODED_CERTIFICATE:IdP 的 Base64 編碼憑證。
    • IDP_SAML_ENTITY_ID:可唯一識別 IdP 的網址或 URI。
    • IDP_SAML_SSO_URI:IdP 的核發者 URI。
    • IDP_USER_ATTRIBUTE:IdP 使用者的屬性,例如電子郵件地址。
    • IDP_USER_PREFIX:使用者 IdP 權杖中的聲明名稱。
  2. IdentityProviderConfig 自訂資源套用至全域 API 伺服器:

    kubectl --kubeconfig GLOBAL_API_SERVER_KUBECONFIG apply -f pa-idp-saml.yaml
    

    GLOBAL_API_SERVER_KUBECONFIG 變數替換為全域 API 伺服器的 kubeconfig 檔案路徑。

刪除現有識別資訊提供者

使用 GDC 控制台刪除現有識別資訊提供者:

  1. 登入 GDC 控制台。
  2. 在專案選取器中,選取要刪除身分識別提供者的機構。
  3. 在導覽選單中,依序點選「Identity and Access」>「Identity」
  4. 勾選一或多個身分識別提供者名稱旁邊的方塊。

    畫面上會顯示您選取的識別資訊提供者數量,以及「刪除」按鈕。

  5. 點選「刪除」。