為機群成員叢集設定 SAML 驗證

本文說明叢集管理員或應用程式運算子如何設定 Kubernetes 叢集,以支援來自第三方安全宣告標記語言 (SAML) 供應商的驗證。詳情請參閱「關於使用第三方身分驗證」。

限制

您必須使用支援 SAML 的叢集類型

事前準備

  1. Install the Google Cloud CLI.

  2. 若您採用的是外部識別資訊提供者 (IdP),請先使用聯合身分登入 gcloud CLI

  3. 執行下列指令,初始化 gcloud CLI:

    gcloud init
  4. 初始化 gcloud CLI 後,請更新 gcloud CLI 並安裝必要元件:

    gcloud components update
    gcloud components install kubectl
  5. 請確認平台管理員已提供所有必要的供應商資訊。詳情請參閱「分享供應商詳細資料」。

設定叢集

如要設定叢集,以便使用 SAML 進行驗證,請設定名為 ClientConfig 的 Kubernetes 自訂資源,其中包含身分識別提供者和提供者需要傳回使用者資訊的參數。

如要編輯 default ClientConfig,請確認您可以連線至叢集 kubectl,然後執行下列指令:

kubectl --kubeconfig USER_CLUSTER_KUBECONFIG -n kube-public edit clientconfig default

KUBECONFIG_PATH 替換為叢集 kubeconfig 檔案的路徑,例如 $HOME/.kube/config

文字編輯器會載入叢集的 ClientConfig 資源。新增 spec.authentication.saml 物件,如下列範例所示。請勿修改任何已寫入的預設資料。

apiVersion: authentication.gke.io/v2alpha1
kind: ClientConfig
metadata:
  name: default
  namespace: kube-public
spec:
  authentication:
  - name: NAME
    saml:
      attributeMapping:
        ATTRIBUTE_KEY_1: ATTRIBUTE_CEL_EXPRESSION_1
        ATTRIBUTE_KEY_2: ATTRIBUTE_CEL_EXPRESSION_2
      groupsAttribute: GROUPS_ATTRIBUTE
      groupPrefix: GROUP_PREFIX
      idpEntityID: ENTITY_ID
      idpSingleSignOnURI: SIGN_ON_URI
      idpCertificateDataList: IDP_CA_CERT
      userAttribute: USER_ATTRIBUTE
      userPrefix: USER_PREFIX
    certificateAuthorityData: CERTIFICATE_AUTHORITY_DATA
    preferredAuthentication: PREFERRED_AUTHENTICATION
    server: <>
# Rest of the resource is managed by Google. DO NOT MODIFY.
...

您可以在同一個 ClientConfig 中新增多個 OIDC、LDAP 和 SAML 識別資訊提供者設定。叢集會依定義順序,嘗試使用每項設定進行驗證,並在首次驗證成功後停止。以下 ClientConfig 範例會依特定順序定義多個身分識別提供者:

apiVersion: authentication.gke.io/v2alpha1
kind: ClientConfig
metadata:
  name: default
  namespace: kube-public
spec:
  authentication:
  - aws:
      region: us-west-2
    name: AWS Login
  - ldap:
  # Multiple lines are omitted here.
  - saml:
  # Multiple lines are omitted here.
  - azureAD:
  # Multiple lines are omitted here.
  - oidc:
    name: Okta OIDC
  # Multiple lines are omitted here.
  - oidc:
    name: Google OIDC
  # Multiple lines are omitted here.

ClientConfig SAML 欄位

下表說明 ClientConfig saml 物件的欄位。您需要新增的欄位取決於識別資訊提供者權杖,以及平台管理員設定提供者的方式。

欄位 必填 說明 格式
名稱 您要用來識別這項設定的名稱,通常是身分識別提供者名稱。設定名稱開頭須為英文字母,其後最多可接 39 個小寫英文字母、數字或連字號,但結尾不得為連字號。 字串
idpEntityID SAML 供應商的 SAML 實體 ID,以 URI 格式指定。例如 https://www.idp.com/saml 網址字串
idpSingleSignOnURI SAML 提供者單一登入 (SSO) 端點,以 URI 格式指定。例如 https://www.idp.com/saml/sso 網址字串
idpCertificateDataList 對應於用於驗證 SAML 回應的識別資訊提供者憑證。 這些憑證必須採用標準 Base64 編碼和 PEM 格式。最多僅支援兩個憑證,以利識別資訊提供者憑證輪替。 字串
userAttribute SAML 回應中含有使用者名稱的屬性名稱。 字串
groupsAttribute SAML 回應中包含使用者群組資訊的屬性名稱。 字串
userPrefix 如不想使用預設前置字串,請輸入要加在使用者憑證附加資訊前方的字串,避免與現有名稱衝突。 字串
groupPrefix 要加在安全群組名稱前方的字首。如果您為多個身分識別提供者 (通常是提供者名稱) 設定了存取控管規則,這樣做可避免與現有名稱發生衝突。 字串
attributeMapping 額外使用者屬性的對應。 字串
certificateAuthorityData 如果平台管理員提供,這是身分識別提供者的 PEM 編碼憑證字串。並把產生的字串另列一行加入 certificateAuthorityData 字串
preferredAuthentication 叢集中設定的偏好驗證方法名稱。 字串

完成 ClientConfig 後,請儲存檔案,這會更新叢集上的 ClientConfig。如有任何語法錯誤,系統會提示你重新編輯設定來修正錯誤。

後續步驟

套用設定後,請繼續設定叢集的使用者存取權