使用 SAML 設定 GKE Identity Service 的叢集

本文適用於叢集管理員或應用程式運算子,他們想在個別叢集上設定 GKE Identity Service,讓開發人員和其他使用者能透過安全宣告標記語言 (SAML) 提供者現有的身分詳細資料登入叢集。本指南假設您已閱讀 GKE Identity Service 總覽。本文的操作說明假設您已向身分識別提供者註冊 GKE Identity Service,將其視為用戶端應用程式。

事前準備

  • 開始設定前,請確認平台管理員已提供「向供應商註冊 GKE Identity Service」中的所有必要資訊。
  • 確認您已安裝下列指令列工具:

    • 使用 466.0.0 以上版本的 Google Cloud CLI,其中包含 gcloud,這是與 Google Cloud互動的指令列工具。如需安裝 Google Cloud CLI,請參閱安裝指南
    • kubectl,可對 Kubernetes 叢集執行指令。如需安裝 kubectl,請按照這些操作說明操作。

    如果您使用 Cloud Shell 做為與 Google Cloud互動的 Shell 環境,系統會為您安裝這些工具。

  • 請確認您已初始化 gcloud CLI,以便搭配註冊叢集的專案使用。

設定叢集

GKE Identity Service 會使用特殊的 Kubernetes 自訂資源類型 (CRD) 設定叢集,稱為 ClientConfig,其中包含身分識別提供者資訊的欄位,以及傳回使用者資訊所需的參數。

kubectl

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

kubectl --kubeconfig=KUBECONFIG_PATH edit ClientConfigs default -n kube-public

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

文字編輯器會載入叢集的 ClientConfig 資源。按照程式碼片段所示新增 saml 物件。

apiVersion: authentication.gke.io/v2alpha1
kind: ClientConfig
metadata:
  name: default
  namespace: kube-public
spec:
  authentication:
  - name: NAME
   saml:
     idpEntityID: ENTITY_ID
     idpSingleSignOnURI: SIGN_ON_URI
     idpCertificateDataList: IDP_CA_CERT
     userAttribute: USER_ATTRIBUTE
     groupsAttribute: {'<var name="user attribute">GROUPS_ATTRIBUTE</var>'}}
     userPrefix: USER_PREFIX
     groupPrefix: GROUP_PREFIX
     attributeMapping:
       ATTRIBUTE_KEY_1 : ATTRIBUTE_CEL_EXPRESSION_1
       ATTRIBUTE_KEY_2 : ATTRIBUTE_CEL_EXPRESSION_2
  certificateAuthorityData: CERTIFICATE_STRING
  preferredAuthentication: PREFERRED_AUTHENTICATION
  server: <>

# Rest of the resource is managed by Google. DO NOT MODIFY.
...

您可以根據需求,在 ClientConfig 中設定多個身分識別提供者。這項功能可簡化管理作業並提供彈性,讓您在統一的設定資源中設定各種驗證方法。下列範例 ClientConfig 會以驗證優先順序的必要順序,定義多個身分識別提供者。

apiVersion: v1
items:
- apiVersion: authentication.gke.io/v2alpha1
  kind: ClientConfig
...
  spec:
    authentication:
    - aws:
        region: us-west-2
      name: AWS Login
    - ldap:
    ...
    - saml:
      ...
    - azureAD:
      ...
    - oidc:
      name: Okta OIDC
      ...
    -oidc:
      name: Google OIDC
      ...

下表說明 ClientConfig saml 物件的欄位。您需要新增的欄位取決於身分識別提供者,以及平台管理員為 GKE Identity Service 設定提供者時選擇的設定選項。

欄位 必填 說明 格式
名稱 您要用來識別這項設定的名稱,通常是身分識別提供者名稱。設定名稱開頭須為英文字母,其後最多可接 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。如果發生任何語法錯誤,系統會提示您重新編輯設定來修正錯誤。

後續步驟

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