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
-
Install the Google Cloud CLI.
-
Si usas un proveedor de identidad externo (IdP), primero debes acceder a la gcloud CLI con tu identidad federada.
-
Para inicializar gcloud CLI, ejecuta el siguiente comando:
gcloud init -
Después de inicializar gcloud CLI, actualízala y, luego, instala los componentes necesarios:
gcloud components update gcloud components install kubectl
- 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 | Sí | 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 | Sí | 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 | sí | 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 | Sí | 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.