Configura clústeres para GKE Identity Service con SAML

Este documento está dirigido a los administradores de clústeres o los operadores de aplicaciones que deseen configurar GKE Identity Service en clústeres individuales, lo que permite que los desarrolladores y otros usuarios accedan a los clústeres con sus detalles de identidad existentes desde un Security Proveedor de lenguaje de marcado para confirmaciones (SAML) En la guía se supone que leíste la descripción general de GKE Identity Service. En las instrucciones de este documento, se da por sentado que GKE Identity Service ya está registrado en tu proveedor de identidad como una aplicación cliente.

Antes de comenzar

  • Asegúrate de que el administrador de la plataforma te haya brindado toda la información necesaria de Registra GKE Identity Service con tu proveedor antes de comenzar la configuración.
  • Asegúrate de tener instaladas las siguientes herramientas de línea de comandos:

    • Usa la versión 466.0.0 de Google Cloud CLI o una versión posterior, que incluye gcloud, la herramienta de línea de comandos para interactuar con Google Cloud. Si necesitas instalar Google Cloud CLI, consulta la Guía de instalación.
    • kubectl para ejecutar comandos en clústeres de Kubernetes. Si necesitas instalar kubectl, sigue estas instrucciones.

    Si usas Cloud Shell como entorno de shell para interactuar con Google Cloud, estas herramientas están instaladas.

  • Asegúrate de haber inicializado la CLI de gcloud para usarla con el proyecto en el que se registran los clústeres.

Configura el clúster

GKE Identity Service usa un tipo especial de recurso personalizado (CRD) de Kubernetes para configurar tus clústeres llamados ClientConfig, con campos para la información sobre el proveedor de identidad y los parámetros que necesita para mostrar información del usuario.

kubectl

Para editar tu ClientConfig predeterminada, asegúrate de que puedes conectarte al clúster a través de kubectl y ejecuta el siguiente comando:

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

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 saml como se indica en el fragmento.

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

En la siguiente tabla, se describen los campos del objeto de ClientConfig saml. Los campos que debes agregar dependen de tu proveedor de identidad y las opciones de configuración que elige el administrador de la plataforma cuando configuras el proveedor de GKE Identity Service.

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 entidad SAML para el proveedor 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 Es el 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, esta es una string 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 errores de sintaxis, se te solicitará que vuelvas a editar la configuración para solucionarlos.

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.