Configura clústeres miembros de la flota para la autenticación de SAML

En este documento, se describe cómo los administradores de clústeres o los operadores de aplicaciones pueden configurar clústeres de Kubernetes para admitir la autenticación desde un proveedor externo de lenguaje de marcado para confirmaciones de seguridad (SAML). Para obtener más información, consulta Acerca de la autenticación con identidades de terceros.

Limitaciones

Debes usar un tipo de clúster que admita SAML.

Antes de comenzar

  1. Install the Google Cloud CLI.

  2. Si usas un proveedor de identidad externo (IdP), primero debes acceder a la gcloud CLI con tu identidad federada.

  3. Para inicializar gcloud CLI, ejecuta el siguiente comando:

    gcloud init
  4. Después de inicializar gcloud CLI, actualízala y, luego, instala los componentes necesarios:

    gcloud components update
    gcloud components install kubectl
  5. Asegúrate de que el administrador de tu plataforma te haya proporcionado toda la información del proveedor que necesitas. Para obtener más información, consulta Comparte los detalles del proveedor.

Configura el clúster

Para configurar un clúster para la autenticación con SAML, debes configurar un recurso personalizado de Kubernetes llamado ClientConfig con información sobre el proveedor de identidad y los parámetros que el proveedor necesita para devolver información del usuario.

Para editar el ClientConfig de default, asegúrate de que puedes conectarte a tu clúster kubectl y, luego, ejecuta el siguiente comando:

kubectl --kubeconfig USER_CLUSTER_KUBECONFIG -n kube-public edit clientconfig default

Reemplaza KUBECONFIG_PATH por la ruta de acceso al archivo kubeconfig de tu clúster, por ejemplo, $HOME/.kube/config.

Un editor de texto carga el recurso ClientConfig de tu clúster. Agrega el objeto spec.authentication.saml como se muestra en el siguiente ejemplo. No modifiques ningún dato predeterminado que ya se haya escrito.

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.
...

Puedes agregar varias configuraciones de proveedores de identidad de OIDC, LDAP y SAML al mismo ClientConfig. El clúster intenta autenticarse con cada configuración en el orden en que se definen y se detiene después de la primera autenticación exitosa. El siguiente ejemplo de ClientConfig define varios proveedores de identidad en un orden específico:

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.

Campos de ClientConfig SAML

En la siguiente tabla, se describen los campos del objeto de ClientConfig saml. Los campos que debes agregar dependen de los tokens de tu proveedor de identidad y de cómo el administrador de la plataforma configuró el proveedor.

Campo Obligatorio Descripción Formato
nombre El nombre que deseas usar para identificar esta configuración, que suele ser el nombre del proveedor de identidad. El nombre de configuración debe comenzar con una letra minúscula seguida con un máximo de 39 letras minúsculas, números o guiones, y no puede terminar con un guion. String
idpEntityID El ID de la entidad SAML para el proveedor de SAML, especificado en un formato de URI. Por ejemplo: https://www.idp.com/saml. String de URL
idpSingleSignOnURI El extremo de SSO del proveedor de SAML, especificado en un formato de URI. Por ejemplo: https://www.idp.com/saml/sso. String de URL
idpCertificateDataList Corresponde a los certificados del proveedor de identidad que se usaron para verificar la respuesta de SAML. Estos certificados deben estar codificados en base64 estándar y tener el formato PEM. Solo se admite un máximo de dos certificados para facilitar la rotación de certificados del proveedor de identidad. String
userAttribute No Nombre del atributo en la respuesta de SAML que contiene el nombre de usuario. String
groupsAttribute No Nombre del atributo en la respuesta de SAML que contiene la información del grupo del usuario. String
userPrefix No El prefijo que deseas anteponer a las reclamaciones de los usuarios para evitar conflictos con los nombres existentes, si no deseas usar el prefijo predeterminado. String
groupPrefix No El prefijo que quieres anteponer a los nombres de los grupos de seguridad para evitar conflictos con los nombres existentes en las reglas de control de acceso si tienes configuraciones para varios proveedores de identidad (por lo general, el nombre del proveedor). String
attributeMapping No La asignación de atributos de usuario adicionales. String
certificateAuthorityData No Si el administrador de la plataforma lo proporciona, es una cadena de certificado con codificación PEM para el proveedor de identidad. Incluye la string resultante en certificateAuthorityData como una certificateAuthorityData sola línea. String
preferredAuthentication No Nombre del método de autenticación preferido configurado en el clúster. String

Después de completar tu ClientConfig, guarda el archivo, que actualiza el ClientConfig en tu clúster. Si cometiste algún error de sintaxis, se te solicitará que vuelvas a editar la configuración para corregirlos.

Próximos pasos

Después de aplicar la configuración, continúa con la configuración del acceso de los usuarios a los clústeres.