使用 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 環境,系統會為您安裝這些工具。
- 使用 466.0.0 以上版本的 Google Cloud CLI,其中包含
請確認您已初始化 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。如果發生任何語法錯誤,系統會提示您重新編輯設定來修正錯誤。
後續步驟
套用設定後,請繼續設定叢集的使用者存取權。