Blog

Autenticación SAML con Google Suite en Kibana 8

La seguridad y autenticación son aspectos críticos en la gestión de datos y acceso a aplicaciones de las empresas. En esta ocasión vamos a contaros cómo configurar autenticación mediante SAML (Security Assertion Markup Language) en Kibana y Elasticsearch, integrado en un proveedor de identidad confiable y extendido como Google Suite.

¿Qué es SAML?

SAML es un estándar abierto de autenticación y autorización entre diferentes dominios de seguridad. En términos simples, SAML permite a los usuarios iniciar sesión en múltiples aplicaciones con un solo conjunto de credenciales centralizado en un proveedor.

Debemos familiarizarnos con dos conceptos básicos en la comunicación SAML:

  • Proveedor de Identidad (IdP), que en nuestro caso de uso es Google Suite.
  • Proveedor de Servicios (SP) que es Kibana.

Paso 0: requisitos previos

  1. Elasticsearch y Kibana: Tener instalados Elasticsearch y Kibana.
  2. Google Suite: Una cuenta de Google Suite con permisos administrativos.
  3. Certificado SSL: Configurar Elasticsearch y Kibana para usar HTTPS.
  4. Licencia de Seguridad de Elasticsearch: Se requiere una licencia Gold o superior para esta funcionalidad.

Paso 1: Configurar el Proveedor de Identidad (IdP) en Google Suite

  1. Acceder a la Consola de Administración de Google:
    • Ir a la consola de administración de Google Suite y acceder con una cuenta de administrador.
  2. Agregar una Aplicación SAML:
    • En el menú de la izquierda seleccionar "Aplicaciones" > "Aplicaciones Web y Móviles".
    • Hacer clic en "Agregar Aplicación" y luego "Agregar Aplicación Personalizada".
  3. Configurar los Detalles de la Aplicación SAML:
    • Nombre de la aplicación: Ingresar un nombre descriptivo (por ejemplo, "Tutorial Kibana SAML").
    • Descripción: (Opcional) Ingresar una descripción de la aplicación.
  4. Descargar metadatos (IdP):
    • Descarga el fichero de metadatos: está en formato xml, (lo podemos descargar también posteriormente). Además, anota los datos necesarios para la configuración posterior del SP en Elasticsearch:
      • URL Inicio de Sesión: https ://accounts.google.com/o/saml2/idp?idpid=<num_idpid>
      • ID de Identidad: https ://accounts.google.com/o/saml2?idpid=<num_idpid>
  5. Proporcionar Información del Proveedor de Servicios (SP):
    • ACS URL: https://<tu_dominio_kibana>/api/security/saml/callback
    • ID de Entidad: https://<tu_dominio_kibana>
    • ID de nombre: en nuestro caso vamos a utilizar el email.
      • Formato: ID de nombre -> “EMAIL”
      • ID de nombre: “Basic Information -> Primary email”
  6. Configuración de Atributos:
    • Agregar los atributos necesarios para SAML. Por lo general, se agregan los siguientes (aunque puedes configurar el mapeo específico que necesites):
      • FirstName → firstName
      • Email → email
  7. Pulsa el botón “Guardar”.

Paso 2: Configurar Elasticsearch para SAML

Editamos el fichero principal de configuración de Elasticsearch  “elasticsearch.yml” en todos los nodos del cluster y agregamos la siguiente configuración:


# SAML
xpack.security.authc.token.enabled: true
xpack.security.authc.realms:
  native.native1:
    enabled: true    # mantenemos autenticación nativa
    order: 0
  saml.tutorial:     # autenticación SAML
    enabled: true
    order: 1
    idp:
      metadata.path: "saml/idp-metadata-google-tutorial.xml"
      entity_id: "https://accounts.google.com/o/saml2?idpid=<num_idpid>"
    sp:
      entity_id: "https://<tu_dominio_kibana>/"
      acs: "https:///<tu_dominio_kibana>/api/security/saml/callback"
      logout: "https:///<tu_dominio_kibana>/logout"
    attributes:
      principal: "nameid"
      groups: "groups"
      name: "firstName"
      mail: "email"
    nameid_format: "urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress"

Después procedemos a reiniciar el servicio de Elasticsearch y comprobamos en los logs que arranca correctamente.

Paso 3: Configurar Kibana para SAML

Editamos el fichero principal de configuración de kibana “kibana.yml” (en todos los nodos operativos) y añadimos las siguientes líneas:
 


# SESSIONS
xpack.security.session.idleTimeout: "1h"
xpack.security.session.lifespan: "2h"

# SAML
xpack.security.authc.providers:
  basic.basic1:
    order: 0
  saml.tutorial:
    order: 1
    realm: "tutorial"

Reiniciamos el servicio de Kibana y comprobamos en los logs que arranca correctamente.

Paso 4: Configuración de role-mappings en Kibana para usuarios externos

En este paso vamos a mapear los grupos definidos en Google Suite con los roles definidos en nuestro Kibana. Para ello necesitamos un usuario con permisos necesarios (recomendable con role superuser).

Accedemos a Stack Management -> Role Mappings -> Create role mapping.

Name: nombre que identifica el mapeo de roles.
Roles: roles de Kibana que se asignarán cuando se autentique un usuario con el grupo anterior asignado.
Mapping rules: definición de reglas para validar el acceso. Por ejemplo, que la aplicación SAML definida y el grupo (de Google Suite) coincidan (ambas a la vez). En formato json:
 


{
 "all": [
   {
     "field": {
       "realm.name": "tutorial"
     }
   },
   {
     "field": {
       "groups": "support-it”
     }
   }
 ]
}

Paso 5: Probar la Autenticación SAML

Accedemos a la url de nuestro servicio de Kibana y podremos ver dos opciones de configuración: nativa y mediante SAML. Elegimos la opción de SAML y nos logamos con las credenciales de Google Suite.

Si la configuración es correcta, deberías ser autenticado y redirigido de vuelta a Kibana. Si no es así toca depurar los errores que hayamos cometido por el camino.

Conclusiones

Debes tener en cuenta que la configuración de SAML en versiones anteriores de Elasticsearch + Kibana tiene ligeras diferencias que no lo hacen completamente compatible en versiones a 8.x. Consulta la documentación oficial para validarlo también si utilizas versiones superiores.

Configurar la autenticación mediante SAML en Kibana y Elasticsearch con Google Suite mejora significativamente la seguridad y facilita la gestión de accesos en un proveedor externo, con garantías de seguridad demostradas.

Siguiendo los pasos detallados en este artículo, podrás integrar de manera efectiva Google Suite como tu proveedor de identidad, permitiendo un acceso seguro y centralizado a Kibana y Elasticsearch.

 

Newsletter de STR Sistemas

Suscríbete a nuestra newsletter para recibir contenido interesante del mundo DevOps y artículos escritos por nuestros técnicos

¡Usamos cookies propias y de terceros para mejorar tu experiencia en esta web! Si sigues navegando, consientes y aceptas estas cookies en tu ordenador, móvil o tablet.

Más información sobre las cookies y cómo cambiar su configuración en tu navegador aquí.

x