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

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

限制

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

事前準備

  1. 安裝 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 是 以 URI 格式指定的 SAML 供應商單一登入端點。例如:https://www.idp.com/saml/sso。 網址字串
idpCertificateDataList 是 對應至用於驗證 SAML 回應的識別資訊提供者憑證。這些憑證必須採用標準 Base64 編碼和 PEM 格式。最多僅支援兩個憑證,以利識別資訊提供者輪換憑證。 字串
userAttribute 否 SAML 回應中含有使用者名稱的屬性名稱。 字串
groupsAttribute 否 SAML 回應中含有使用者群組資訊的屬性名稱。 字串
userPrefix 否 如不想使用預設前置字串,請輸入要加在使用者憑證附加資訊前方的前置字串,避免與現有名稱衝突。 字串
groupPrefix 否 要附加至安全群組名稱的前置字元。如果您有多個識別資訊提供者的設定 (通常是提供者名稱),這樣做可避免與存取控管規則中的現有名稱衝突。 字串
attributeMapping 否 額外使用者屬性的對應關係。 字串
certificateAuthorityData 否 如果平台管理員提供,這是身分識別供應商的 PEM 編碼憑證字串。並把產生的字串另列一行加入 certificateAuthorityData。 字串
preferredAuthentication 否 叢集中設定的偏好驗證方式名稱。 字串

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

後續步驟

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