SAML
Resumen
SAML 2.0 authentication se puede usar para iniciar sesión en Zabbix.
Si el inicio de sesión SAML se configura sin aprovisionamiento de usuarios JIT, el usuario debe existir previamente en Zabbix; la contraseña de Zabbix del usuario no se usa para la autenticación. Después de una autenticación SAML correcta, Zabbix compara el atributo de nombre de usuario recibido desde SAML con un nombre de usuario local existente en Zabbix.
Aprovisionamiento de usuarios
Es posible configurar el aprovisionamiento de usuarios JIT (just-in-time) para usuarios SAML. En este caso, no se requiere que un usuario ya exista en Zabbix. La cuenta de usuario puede crearse cuando el usuario inicia sesión en Zabbix por primera vez.
Si el aprovisionamiento JIT está habilitado, se debe especificar un grupo de usuarios para los usuarios desaprovisionados en la pestaña Autenticación.
Además del aprovisionamiento JIT, también es posible habilitar y configurar el aprovisionamiento SCIM (System for Cross-domain Identity Management): la gestión continua de cuentas de usuario para aquellos usuarios que han sido creados mediante aprovisionamiento de usuarios. El aprovisionamiento SCIM requiere un token de API de Zabbix (con permisos de Superadministrador) para la autenticación en Zabbix.
Por ejemplo, si un usuario se mueve de un grupo SAML a otro, el usuario también se moverá de un grupo a otro en Zabbix; si un usuario se elimina de un grupo SAML, el usuario también se eliminará del grupo en Zabbix y, si no pertenece a ningún otro grupo, se añadirá al grupo de usuarios para usuarios desaprovisionados.
Si SCIM está habilitado y configurado, un usuario SAML será aprovisionado en el momento en que inicie sesión en Zabbix y se actualizará continuamente en función de los cambios en SAML. Los usuarios SAML ya existentes no serán aprovisionados, y solo los usuarios aprovisionados serán actualizados. Tenga en cuenta que solo los medios válidos se añadirán a un usuario cuando este sea aprovisionado o actualizado.
Si SCIM no está habilitado, un usuario SAML será aprovisionado (y posteriormente actualizado) en el momento en que inicie sesión en Zabbix.
Si la autenticación SAML está habilitada, los usuarios podrán elegir entre iniciar sesión localmente o mediante inicio de sesión único SAML. Si se utiliza el aprovisionamiento JIT, entonces solo es posible el inicio de sesión único.
Configuración del proveedor de identidad
Para trabajar con Zabbix, un proveedor de identidad SAML (onelogin.com, auth0.com, okta.com, etc.) debe configurarse de la siguiente manera:
- La URL de consumidor de aserciones debe establecerse en
<ruta_a_la_ui_de_zabbix>/index_sso.php?acs - La URL de cierre de sesión único debe establecerse en
<ruta_a_la_ui_de_zabbix>/index_sso.php?sls
Ejemplos de <ruta_a_la_ui_de_zabbix>: https://example.com/zabbix/ui,
http://another.example.com/zabbix, http://<cualquier_dirección_ip_pública>/zabbix
Configuración de Zabbix
Es necesario instalar php-openssl si desea utilizar la autenticación SAML en el frontend.
Para utilizar la autenticación SAML, Zabbix debe configurarse de la siguiente manera:
1. Proporcione la clave privada y los certificados del SP. Debe proporcionarse un certificado del IdP (pegando el contenido o seleccionando un archivo) para activar SAML mediante el frontend. Deben proporcionarse un certificado del SP y una clave privada del SP si se seleccionan las opciones Firmar o Cifrar.
Si se establece $SSO['CERT_STORAGE'] = 'database' en el archivo de configuración del frontend (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 se establece $SSO['CERT_STORAGE'] = 'file' en el archivo de configuración, el certificado debe estar disponible en el sistema de archivos (de forma predeterminada, en ui/conf/certs o en la ruta configurada en el archivo de configuración) y el frontend no almacenará los certificados en la base de datos.
Tenga en cuenta que, si $SSO['CERT_STORAGE'] no está establecido o está comentado, se asumirá el almacenamiento en archivos.
De forma predeterminada, Zabbix buscará en las siguientes ubicaciones:
- ui/conf/certs/sp.key - archivo de clave privada del SP
- ui/conf/certs/sp.crt - archivo de certificado del SP
- ui/conf/certs/idp.crt - archivo de certificado del IdP
El material de los certificados puede importarse mediante el frontend pegando el texto o cargando archivos.
Aunque en algunos entornos se permiten importaciones sin cifrar por comodidad, se recomienda encarecidamente utilizar transporte cifrado (por ejemplo, habilitar HTTPS/TLS para el frontend de Zabbix).
Cuando los certificados o las claves SAML se almacenan en la base de datos, habilite TLS/SSL para las conexiones de la base de datos con el fin de proteger el tráfico entre la aplicación y la base de datos.
Cifre las copias de seguridad de la base de datos que puedan contener certificados SAML o claves privadas, y limite el acceso a los archivos de copia de seguridad y a las tablas de la base de datos que almacenan material SAML.
Restrinja los privilegios del usuario de la base de datos al mínimo necesario.
2. Todos los ajustes más importantes pueden configurarse en el frontend de Zabbix. Sin embargo, es posible especificar ajustes adicionales en el archivo de configuración.

Parámetros de configuración disponibles en el frontend de Zabbix:
| Parámetro | Descripción |
|---|---|
| Habilitar la autenticación SAML | Marque la casilla para habilitar la autenticación SAML. |
| Habilitar el aprovisionamiento JIT | Marque la casilla para habilitar el aprovisionamiento de usuarios JIT. |
| ID de entidad del IDP | El identificador único de entidad dentro del proveedor de identidad SAML. |
| URL del servicio SSO | La URL a la que se redirigirá a los usuarios al iniciar sesión. |
| URL del servicio SLO | La URL a la que se redirigirá a los usuarios al cerrar sesión. Si se deja vacía, no se utilizará el servicio SLO. |
| Atributo de nombre de usuario | Atributo SAML que se utilizará como nombre de usuario al iniciar sesión en Zabbix. La lista de valores compatibles está determinada por el proveedor de identidad. Ejemplos: uid userprincipalname samaccountname username userusername urn:oid:0.9.2342.19200300.100.1.1 urn:oid:1.3.6.1.4.1.5923.1.1.1.13 urn:oid:0.9.2342.19200300.100.1.44 |
| ID de entidad del SP | El identificador único del proveedor de servicios (si no coincide, la operación se rechazará). Es posible especificar una URL o cualquier cadena de datos. |
| Formato de ID de nombre del SP | Solicita un formato de ID de nombre específico en la respuesta. Ejemplos: urn:oasis:names:tc:SAML:2.0:nameid-format:persistent urn:oasis:names:tc:SAML:2.0:nameid-format:unspecified urn:oasis:names:tc:SAML:2.0:nameid-format:transient |
| Certificado del IdP | Contenido del certificado del proveedor de servicios (SP) para la configuración del servicio de inicio de sesión único (SSO) SAML. |
| Clave privada del SP | Contenido de la clave privada del proveedor de servicios (SP) para la configuración del servicio de inicio de sesión único (SSO) SAML. Proporciona autenticación segura e intercambio de datos con el proveedor de identidad (IdP). |
| Certificado del SP | Contenido del certificado del proveedor de servicios (SP) para la configuración del servicio de inicio de sesión único (SSO) SAML. |
| Firmar | Marque las casillas para seleccionar las entidades para las que se debe habilitar la firma SAML: Mensajes Aserciones Solicitudes AuthN Solicitudes de cierre de sesión Respuestas de cierre de sesión |
| Cifrar | Marque las casillas para seleccionar las entidades para las que se debe habilitar el cifrado SAML: ID de nombre Aserciones |
| Inicio de sesión sensible a mayúsculas y minúsculas | Desmarque la casilla para deshabilitar el inicio de sesión sensible a mayúsculas y minúsculas para los nombres de usuario (habilitado de forma predeterminada). Deshabilitar esta opción permite, por ejemplo, iniciar sesión como "admin" aunque el usuario de Zabbix sea "Admin" o "ADMIN". Tenga en cuenta que, si se deshabilita el inicio de sesión sensible a mayúsculas y minúsculas y existen varios usuarios de Zabbix con nombres de usuario similares (por ejemplo, Admin y admin), el inicio de sesión de esos usuarios siempre se rechazará con el siguiente mensaje de error: "Authentication failed: supplied credentials are not unique." |
| Configurar el aprovisionamiento JIT | Marque esta casilla para mostrar las opciones relacionadas con el aprovisionamiento de usuarios JIT. |
| Atributo de nombre del grupo | Especifique el atributo del nombre del grupo para el aprovisionamiento de usuarios JIT. |
| Atributo de nombre del usuario | Especifique el atributo del nombre del usuario para el aprovisionamiento de usuarios JIT. |
| Atributo de apellido del usuario | Especifique el atributo del apellido del usuario para el aprovisionamiento de usuarios JIT. |
| Asignación de grupos de usuarios | Asigne un patrón de grupo de usuarios SAML a un grupo de usuarios y un rol de usuario de Zabbix. Esto es necesario para determinar qué grupo o rol de usuario recibirá el usuario aprovisionado en Zabbix. Haga clic en Añadir para agregar una asignación. El campo Patrón de grupo SAML admite comodines. El nombre del grupo debe coincidir con un grupo existente. Si un usuario SAML coincide con varios grupos de usuarios de Zabbix, pasará a ser miembro de todos ellos. Si un usuario coincide con varios roles de usuario de Zabbix, recibirá el nivel de permisos más alto entre ellos. |
| Asignación de tipos de medios | Asigne los atributos de medios SAML del usuario (por ejemplo, el correo electrónico) a los medios del usuario de Zabbix para enviar notificaciones. |
| Habilitar el aprovisionamiento SCIM | Marque esta casilla para habilitar el aprovisionamiento SCIM 2.0. |
Consulte ejemplos de configuración de proveedores de identidad SAML para iniciar sesión y aprovisionar usuarios en Zabbix con:
Notas sobre el aprovisionamiento SCIM
Para el aprovisionamiento SCIM, especifique la ruta al frontend de Zabbix y añada api_scim.php al final, en el lado del proveedor de identidad, es decir:
https://<path-to-zabbix-ui>/api_scim.php
Los atributos de usuario que se utilizan en Zabbix (nombre de usuario, nombre, apellido y atributos de medios) deben añadirse como atributos personalizados y, si es necesario, el espacio de nombres externo debe ser el mismo que el esquema de usuario: urn:ietf:params:scim:schemas:core:2.0:User.
Configuración avanzada
Se pueden configurar parámetros SAML adicionales en el archivo de configuración del frontend de Zabbix (zabbix.conf.php):
Ejemplos de configuración
Ejemplo 1: Conexión a una instancia de Zabbix con un balanceador de carga mediante TLS/SSL
Si se utiliza un balanceador de carga para conectarse a una instancia de Zabbix y el balanceador de carga utiliza TLS/SSL mientras que Zabbix no lo utiliza, especifique los parámetros baseurl, strict y use_proxy_headers de la siguiente manera:
$SSO['SETTINGS'] = [
'strict' => false,
'baseurl' => 'https://zabbix.example.com/zabbix/',
'use_proxy_headers' => true
];
Ejemplo 2: Configuración de algoritmos personalizados de firma y resumen SAML
$SSO['SETTINGS'] = [
'security' => [
'signatureAlgorithm' => 'http://www.w3.org/2001/04/xmldsig-more#rsa-sha384'
'digestAlgorithm' => 'http://www.w3.org/2001/04/xmldsig-more#sha384',
// ...
],
// ...
];
Ejemplo 3: Configuración de SSO con autenticación Kerberos mediante ADFS
$SSO['SETTINGS'] = [
'security' => [
'requestedAuthnContext' => [
'urn:oasis:names:tc:SAML:2.0:ac:classes:Kerberos',
],
'requestedAuthnContextComparison' => 'exact'
]
];
En este caso, en el campo SP name ID de la configuración SAML, establezca:
urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified