本文說明叢集管理員或應用程式運算子如何設定 Kubernetes 叢集,以支援來自第三方安全宣告標記語言 (SAML) 供應商的驗證。詳情請參閱「關於使用第三方身分驗證」。
限制
您必須使用支援 SAML 的叢集類型。
事前準備
-
Install the Google Cloud CLI.
-
若您採用的是外部識別資訊提供者 (IdP),請先使用聯合身分登入 gcloud CLI。
-
執行下列指令,初始化 gcloud CLI:
gcloud init -
初始化 gcloud CLI 後,請更新 gcloud CLI 並安裝必要元件:
gcloud components update gcloud components install kubectl
- 請確認平台管理員已提供所有必要的供應商資訊。詳情請參閱「分享供應商詳細資料」。
設定叢集
如要設定叢集,以便使用 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。如有任何語法錯誤,系統會提示你重新編輯設定來修正錯誤。
後續步驟
套用設定後,請繼續設定叢集的使用者存取權。