Este documento está dirigido a administradores de clústeres u operadores de aplicaciones que quieran configurar GKE Identity Service en clústeres concretos para que los desarrolladores y otros usuarios puedan iniciar sesión en los clústeres con sus credenciales de identidad de un proveedor de lenguaje de marcado para confirmaciones de seguridad (SAML). En esta guía se da por hecho que has leído la descripción general de Identity Service para GKE. Las instrucciones de este documento presuponen que GKE Identity Service ya se ha registrado con tu proveedor de identidades como aplicación cliente.
Antes de empezar
- Antes de empezar la configuración, asegúrate de que el administrador de tu plataforma te ha proporcionado toda la información necesaria de Registrar el servicio de identidad de GKE con tu proveedor.
Asegúrate de que tienes instaladas las siguientes herramientas de línea de comandos:
- Usa la versión 466.0.0 de Google Cloud CLI o una 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 instalarkubectl
, sigue estas instrucciones.
Si usas Cloud Shell como entorno de shell para interactuar con Google Cloud, estas herramientas ya están instaladas.
- Usa la versión 466.0.0 de Google Cloud CLI o una posterior, que incluye
Asegúrate de haber inicializado la CLI de gcloud para usarla con el proyecto en el que están registrados los clústeres.
Configurar el clúster
El servicio de identidad de GKE usa un tipo de recurso personalizado de Kubernetes (CRD) especial llamado ClientConfig para configurar los clústeres, con campos para obtener información sobre el proveedor de identidades y los parámetros que necesita para devolver información de los usuarios.
kubectl
Para editar tu ClientConfig predeterminado, asegúrate de que puedes conectarte a tu clúster con kubectl
y ejecuta el siguiente comando:
kubectl --kubeconfig=KUBECONFIG_PATH edit ClientConfigs default -n kube-public
Sustituye KUBECONFIG_PATH
por la ruta al archivo kubeconfig de tu clúster (por ejemplo, $HOME/.kube/config
).
Un editor de texto carga el recurso ClientConfig de tu clúster. Añade 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.
...
Puedes configurar varios proveedores de identidades en tu ClientConfig
según tus requisitos. De esta forma, se simplifica la gestión y se ofrece flexibilidad, ya que puedes configurar diversos métodos de autenticación en un recurso de configuración unificado. En el siguiente ejemplo ClientConfig
se definen varios proveedores de identidad en el orden de precedencia de autenticación requerido.
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
...
En la siguiente tabla se describen los campos del objeto ClientConfig saml
. Los campos que debes añadir dependen de tu proveedor de identidad y de las opciones de configuración que haya elegido el administrador de tu plataforma al configurar el proveedor para Identity Service for GKE.
Campo | Obligatorio | Descripción | Formato |
---|---|---|---|
name | Sí | El nombre que quieras usar para identificar esta configuración, normalmente el nombre del proveedor de identidades. El nombre de una configuración debe empezar por una letra, seguida de un máximo de 39 letras minúsculas, números o guiones, y no puede acabar en guion. | Cadena |
idpEntityID | Sí | El ID de entidad SAML del proveedor de SAML, especificado en formato URI. Por ejemplo: https://www.idp.com/saml . |
URL String |
idpSingleSignOnURI | yes | El endpoint de inicio de sesión único del proveedor de SAML, especificado en formato URI. Por ejemplo: https://www.idp.com/saml/sso . |
URL String |
idpCertificateDataList | Sí | Corresponde a los certificados del proveedor de identidades que se usan para verificar la respuesta SAML. Estos certificados deben estar codificados en Base64 estándar y tener formato PEM. Solo se admiten dos certificados como máximo para facilitar la rotación de certificados del proveedor de identidades. | Cadena |
userAttribute | No | Nombre del atributo de la respuesta SAML que contiene el nombre de usuario. | Cadena |
groupsAttribute | No | Nombre del atributo de la respuesta SAML que contiene la información del grupo del usuario. | Cadena |
userPrefix | No | El prefijo que quiere añadir a las reclamaciones de usuario para evitar conflictos con nombres ya existentes, si no quiere usar el prefijo predeterminado. | Cadena |
groupPrefix | No | El prefijo que quieres anteponer a los nombres de los grupos de seguridad. De esta forma, se evitan conflictos con los nombres de las reglas de control de acceso si tienes configuraciones de varios proveedores de identidades (normalmente, el nombre del proveedor). | Cadena |
attributeMapping | No | La asignación de atributos de usuario adicionales. | Cadena |
certificateAuthorityData | No | Si el administrador de la plataforma lo proporciona, se trata de una cadena de certificado codificada en PEM para el proveedor de identidades. Incluye la cadena resultante en certificateAuthorityData como una sola línea. |
Cadena |
preferredAuthentication | No | Nombre del método de autenticación preferido configurado en el clúster. | Cadena |
Una vez que hayas completado el archivo ClientConfig, guárdalo para actualizar el archivo ClientConfig de tu clúster. Si has cometido algún error de sintaxis, se te pedirá que vuelvas a editar la configuración para corregirlo.
Siguientes pasos
Una vez que se haya aplicado la configuración, configura el acceso de los usuarios a los clústeres.