为 SAML 身份验证设置舰队成员集群

本文档介绍了集群管理员或应用运维人员如何配置 Kubernetes 集群以支持来自第三方安全断言标记语言 (SAML) 提供方的身份验证。如需了解详情,请参阅关于使用第三方身份进行身份验证

限制

您必须使用支持 SAML 的集群类型

准备工作

  1. Install the Google Cloud CLI.

  2. 如果您使用的是外部身份提供方 (IdP),则必须先使用联合身份登录 gcloud CLI

  3. 如需初始化 gcloud CLI,请运行以下命令:

    gcloud init
  4. 初始化 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 对象的字段。您需要添加的字段取决于您的身份提供方令牌以及平台管理员配置提供方的方式。

字段 必需 说明 格式
name 您要用于标识此配置的名称,通常是身份提供方名称。配置名称必须以字母开头,后面最多可跟 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。如果有任何语法错误,系统会提示您重新修改配置以修复错误。

后续步骤

应用配置后,继续设置用户对集群的访问权限