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 se requiere "https". 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 los grupos (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

Asegúrate de que conf/zabbix.conf.php contenga la línea:

$SSO['IDP_CERT'] = 'conf/certs/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

También es necesario configurar el mapeo de grupos de usuarios. El mapeo de medios es opcional.

Haga clic en Update para guardar estos ajustes.

Aprovisionamiento de usuarios SCIM

1. En la página de la aplicación de Entra ID, en el menú principal abra la página Provisioning. Haga clic en Get started y luego seleccione el modo de aprovisionamiento automático:

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

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

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

En la parte inferior de la lista de atributos, agregue sus propios atributos con tipo 'String':

Guarde la lista.

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

Cuando se hayan agregado todas las asignaciones, guarde la lista de asignaciones.

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

Para ello, vaya a Microsoft Entra admin center y luego agregue usuarios/grupos en las respectivas páginas de Users y Groups.

5. Cuando se hayan creado usuarios y grupos en Entra ID, puede ir al menú Users and groups de su aplicación y agregarlos a la app.

6. Vaya al menú Provisioning de su app y haga clic en Start provisioning para que los usuarios se aprovisionen en Zabbix.

Tenga 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';

Solución de problemas

Pueden producirse 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 indicio 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
    ]
];