12 Configuración de SAML con Microsoft Entra ID

Descripción general

Esta sección proporciona pautas para configurar el inicio de sesión único y el aprovisionamiento de usuarios en Zabbix desde Microsoft Entra ID (anteriormente Microsoft Azure Active Directory) utilizando la autenticación SAML 2.0.

Configuración de Microsoft Entra ID

Creación de una aplicación

1. Inicie sesión en Microsoft Entra admin center en Microsoft Entra ID. Para fines de prueba, puede crear una cuenta de prueba gratuita en Microsoft Entra ID.

2. En Microsoft Entra admin center, seleccione Applications -> Enterprise applications -> New application -> Create your own application.

3. Agregue el nombre de su aplicación y seleccione la opción Integrate any other application.... Después de eso, haga clic en Create.

Configuración de inicio de sesión único

1. En la página de tu aplicación, ve a Set up single sign on y haz clic en Get started. Luego selecciona SAML.

2. Edita Basic SAML Configuration:

  • En Identifier (Entity ID) establece un nombre único para identificar tu aplicación en Microsoft Entra ID, por ejemplo, zabbix;
  • En Reply URL (Assertion Consumer Service URL) establece el endpoint de inicio de sesión único de Zabbix: https://<path-to-zabbix-ui>/index_sso.php?acs:

Ten en cuenta que "https" es obligatorio. Para que esto funcione con Zabbix, es necesario añadir a conf/zabbix.conf.php la siguiente línea:

$SSO['SETTINGS'] = ['use_proxy_headers' => true];

3. Edita Attributes & Claims. Debes añadir todos los atributos que quieras pasar a Zabbix (user_name, user_lastname, user_email, user_mobile, groups).

Los nombres de los atributos son arbitrarios. Se pueden usar nombres de atributos diferentes; sin embargo, es necesario que coincidan con el valor del campo correspondiente en la configuración SAML de Zabbix.

  • Haz clic en Add new claim para añadir un atributo:

  • Haz clic en Add a group claim para añadir un atributo para pasar grupos a Zabbix:

Es importante en este claim que los nombres de grupo (en lugar de los IDs de grupo) se pasen a Zabbix mediante el Source attribute seleccionado. De lo contrario, el aprovisionamiento de usuarios JIT no funcionará correctamente.

4. En SAML Certificates descarga el certificado Base64 proporcionado por Entra ID y colócalo en conf/certs de la instalación del frontend de Zabbix.

Asigna permisos 644 ejecutando:

chmod 644 entra.cer

5. Usa los valores de Set up <your app name> en Entra ID para configurar la autenticación SAML de Zabbix (consulta la siguiente sección):

Configuración de Zabbix

1. En Zabbix, vaya a SAML settings y complete las opciones de configuración según la configuración de Entra ID:

Zabbix field Setup field in Entra ID Sample value
IdP entity ID Microsoft Entra identifier
SSO service URL Login URL
SLO service URL Logout URL
SP entity ID Identifier (Entity ID)
Username attribute Custom attribute (claim) user_email
Group name attribute Custom attribute (claim) groups
User name attribute Custom attribute (claim) user_name
User last name attribute Custom attribute (claim) user_lastname

2. Agregue el certificado Base64 proporcionado por Entra ID.

Si $SSO['CERT_STORAGE'] = 'database' está configurado en zabbix.conf.php, puede pegar el texto del certificado o cargar el archivo del certificado en el frontend durante la configuración de SAML; no se requieren archivos en el sistema de archivos.

Si $SSO['CERT_STORAGE'] = 'file' está configurado en zabbix.conf.php, el certificado debe estar disponible en el sistema de archivos (de forma predeterminada en ui/conf/certs o en la ruta configurada en zabbix.conf.php) y el frontend no almacenará certificados en la base de datos. Tenga en cuenta que si $SSO['CERT_STORAGE'] no está configurado o está comentado, se asume almacenamiento en archivos y los certificados se leen desde ui/conf/certs.

También es necesario configurar la asignación de grupos de usuarios. La asignación de medios es opcional.

3. Haga clic en el botón Update para guardar esta configuración.

Aprovisionamiento de usuarios SCIM

1. En la página de tu aplicación de Entra ID, desde el menú principal abre la página Provisioning. Haz clic en Get started y luego selecciona el modo de aprovisionamiento automático:

  • En Tenant URL, establece el siguiente valor: https://<path-to-zabbix-ui>/api_scim.php
  • En Secret token, introduce un token de API de Zabbix con permisos de Super admin.
  • Haz clic en Test connection para comprobar si la conexión se establece.

2. Ahora puedes añadir todos los atributos que se pasarán con SCIM a Zabbix. Para ello, haz clic en Mappings y luego en Provision Microsoft Entra ID Users.

En la parte inferior de la lista Attribute Mapping, habilita Show advanced options y luego haz clic en Edit attribute list for customappsso.

En la parte inferior de la lista de atributos, añade tus propios atributos con tipo 'String':

Guarda la lista.

3. Ahora puedes añadir asignaciones para los atributos añadidos. En la parte inferior de la lista Attribute Mapping, haz clic en Add New Mapping y crea las asignaciones como se muestra a continuación:

Cuando se hayan añadido todas las asignaciones, guarda la lista de asignaciones.

4. Como requisito previo para el aprovisionamiento de usuarios en Zabbix, debes tener usuarios y grupos configurados en Entra ID.

Para ello, ve a Microsoft Entra admin center y luego añade usuarios/grupos en las páginas correspondientes de Users y Groups.

5. Cuando se hayan creado usuarios y grupos en Entra ID, puedes ir al menú Users and groups de tu aplicación y añadirlos a la app.

6. Ve al menú Provisioning de tu app y haz clic en Start provisioning para aprovisionar usuarios en Zabbix.

Ten en cuenta que la solicitud PATCH de Users en Entra ID no admite cambios en media.

Firma de solicitud de autenticación

Es posible configurar Entra ID para validar la firma de las solicitudes de autenticación firmadas.

Para que esto funcione, cree claves pública/privada:

openssl req -x509 -newkey rsa:4096 -keyout /usr/share/zabbix/conf/certs/request-sign.key -out /usr/share/zabbix/conf/certs/request-sign.pem -sha256 -days 1825 -nodes

Asigne permisos:

chown apache /usr/share/zabbix/conf/certs/request-sign.key 
chmod 400 /usr/share/zabbix/conf/certs/request-sign.key

Actualice la configuración del frontend de Zabbix agregando:

$SSO['SP_KEY'] = 'conf/certs/request-sign.key';
$SSO['SP_CERT'] = 'conf/certs/request-sign.crt';

Resolución de problemas

Pueden ocurrir problemas de autenticación con los navegadores MicroSoft Edge cuando un usuario, al intentar iniciar sesión en Zabbix mediante SAML, ya ha iniciado sesión con el perfil de MicroSoft Edge. Como señal de este problema, el usuario puede ser capaz de iniciar sesión en Zabbix usando MicroSoft Edge en modo privado.

Para evitar problemas de autenticación en este caso, puede ser necesario establecer requestedAuthnContext en "false" en el archivo de configuración del frontend de Zabbix (zabbix.conf.php).

$SSO['SETTINGS'] = [
    'security' => [
        'requestedAuthnContext' => false
    ]
];