3 SAML
Descripción general
La autenticación SAML 2.0 puede utilizarse para iniciar sesión en Zabbix.
Si solo se configura el inicio de sesión SAML, el usuario también debe existir en Zabbix; sin embargo, su contraseña de Zabbix no se utilizará. Si la autenticación es exitosa, Zabbix emparejará un nombre de usuario local con el atributo de nombre de usuario devuelto por SAML.
Aprovisionamiento de usuarios
Es posible configurar el aprovisionamiento de usuarios JIT (just-in-time) para usuarios SAML. En este caso, no es necesario que el 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 desprovisionados en la pestaña Authentication.
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 el aprovisionamiento de usuarios. El aprovisionamiento SCIM requiere un token de API de Zabbix (con permisos de Super admin) para autenticarse 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 desprovisionados.
Si SCIM está habilitado y configurado, un usuario SAML se aprovisionará en el momento en que el usuario inicie sesión en Zabbix y se actualizará continuamente en función de los cambios en SAML. Los usuarios SAML ya existentes no se aprovisionarán, y solo los usuarios aprovisionados se actualizarán. Tenga en cuenta que solo se añadirán medios válidos a un usuario cuando el usuario sea aprovisionado o actualizado.
Si SCIM no está habilitado, un usuario SAML se aprovisionará (y posteriormente se actualizará) en el momento en que el usuario 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:
- Assertion Consumer URL debe establecerse en
<path_to_zabbix_ui>/index_sso.php?acs - Single Logout URL debe establecerse en
<path_to_zabbix_ui>/index_sso.php?sls
Ejemplos de <path_to_zabbix_ui>: https://example.com/zabbix/ui,
http://another.example.com/zabbix, http://<any_public_ip_address>/zabbix
Configuración de Zabbix
Es necesario instalar php-openssl si desea usar autenticación SAML en el frontend.
Para usar autenticación SAML, Zabbix debe configurarse de la siguiente manera:
1. La clave privada y el certificado deben almacenarse en ui/conf/certs/, a menos que se proporcionen rutas personalizadas en zabbix.conf.php.
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
2. Todas las opciones más importantes se pueden configurar en el frontend de Zabbix. Sin embargo, es posible especificar opciones adicionales en el archivo de configuración.

Parámetros de configuración, disponibles en el frontend de Zabbix:
| Parameter | Description |
|---|---|
| Enable SAML authentication | Marque la casilla para habilitar la autenticación SAML. |
| Enable JIT provisioning | Marque la casilla para habilitar el aprovisionamiento de usuarios JIT. |
| IDP entity ID | El identificador único de entidad dentro del proveedor de identidad SAML. |
| SSO service URL | La URL a la que se redirigirá a los usuarios al iniciar sesión. |
| SLO service URL | La URL a la que se redirigirá a los usuarios al cerrar sesión. Si se deja vacía, no se usará el servicio SLO. |
| Username attribute | Atributo SAML que se usará como nombre de usuario al iniciar sesión en Zabbix. La lista de valores admitidos la determina 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 |
| SP entity ID | El identificador único del proveedor de servicios (si no coincide, la operación será rechazada). Es posible especificar una URL o cualquier cadena de datos. |
| SP name ID format | Solicite un formato de name ID 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 |
| Sign | Marque las casillas para seleccionar las entidades para las que debe habilitarse la firma SAML: Messages Assertions AuthN requests Logout requests Logout responses |
| Encrypt | Marque las casillas para seleccionar las entidades para las que debe habilitarse el cifrado SAML: Name ID Assertions |
| Case-sensitive login | 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" incluso si el usuario de Zabbix es "Admin" o "ADMIN". Tenga en cuenta que si el inicio de sesión sensible a mayúsculas y minúsculas está deshabilitado y hay varios usuarios de Zabbix con nombres de usuario similares (por ejemplo, Admin y admin), el inicio de sesión para esos usuarios siempre será denegado con el siguiente mensaje de error: "Authentication failed: supplied credentials are not unique." |
| Configure JIT provisioning | Marque esta casilla para mostrar las opciones relacionadas con el aprovisionamiento de usuarios JIT. |
| Group name attribute | Especifique el atributo de nombre de grupo para el aprovisionamiento de usuarios JIT. |
| User name attribute | Especifique el atributo de nombre de usuario para el aprovisionamiento de usuarios JIT. |
| User last name attribute | Especifique el atributo de apellido del usuario para el aprovisionamiento de usuarios JIT. |
| User group mapping | 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/rol de usuario obtendrá el usuario aprovisionado en Zabbix. Haga clic en Add para agregar una asignación. El campo SAML group pattern admite comodines. El nombre del grupo debe coincidir con un grupo existente. Si un usuario SAML coincide con varios grupos de usuarios de Zabbix, el usuario pasará a ser miembro de todos ellos. Si un usuario coincide con varios roles de usuario de Zabbix, obtendrá el nivel de permisos más alto entre ellos. |
| Media type mapping | Asigne los atributos de medios SAML del usuario (por ejemplo, correo electrónico) a los medios de usuario de Zabbix para enviar notificaciones. |
| Enable SCIM provisioning | Marque esta casilla para habilitar el aprovisionamiento SCIM 2.0. |
Consulte ejemplos de configuración de proveedores de identidad SAML para el inicio de sesión y el aprovisionamiento de usuarios en Zabbix en:
Notas sobre el aprovisionamiento SCIM
Para el aprovisionamiento SCIM, especifique la ruta a la interfaz web de Zabbix y añada api_scim.php al final, en el lado del proveedor de identidad, es decir:
https://<ruta-a-la-ui-de-zabbix>/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):
- $SSO['SP_KEY'] = '<ruta al archivo de clave privada del SP>';
- $SSO['SP_CERT'] = '<ruta al archivo de certificado del SP>';
- $SSO['IDP_CERT'] = '<ruta al archivo de certificado del IDP>';
- $SSO['SETTINGS']
El array $SSO['SETTINGS'] debe seguir la misma estructura esperada por la librería SAML PHP Toolkit (suministrada con Zabbix).
Para una descripción completa de las opciones de configuración disponibles, consulte la documentación oficial de la librería.
Solo se pueden establecer las siguientes opciones como parte de $SSO['SETTINGS']:
- strict
- baseurl
- compress
- contactPerson
- organization
- sp (solo las opciones especificadas en esta lista)
- attributeConsumingService
- x509certNew
- idp (solo las opciones especificadas en esta lista)
- singleLogoutService (solo una opción)
- responseUrl
- certFingerprint
- certFingerprintAlgorithm
- x509certMulti
- singleLogoutService (solo una opción)
- security (solo las opciones especificadas en esta lista)
- signMetadata
- wantNameId
- requestedAuthnContext
- requestedAuthnContextComparison
- wantXMLValidation
- relaxDestinationValidation
- destinationStrictlyMatches
- rejectUnsolicitedResponsesWithInResponseTo
- signatureAlgorithm
- digestAlgorithm
- lowercaseUrlencoding
Todas las demás opciones se tomarán de la base de datos y no se pueden sobrescribir. La opción debug será ignorada.
Además, si la interfaz de Zabbix está detrás de un proxy o un balanceador de carga, se puede utilizar la opción personalizada use_proxy_headers:
- false (por defecto): ignora la opción;
- true: utiliza las cabeceras HTTP X-Forwarded-* para construir la URL base.
Si utiliza un balanceador de carga para conectarse a la instancia de Zabbix, donde el balanceador de carga utiliza TLS/SSL y Zabbix no, debe indicar 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 de configuración:
$SSO['SETTINGS'] = [
'security' => [
'signatureAlgorithm' => 'http://www.w3.org/2001/04/xmldsig-more#rsa-sha384'
'digestAlgorithm' => 'http://www.w3.org/2001/04/xmldsig-more#sha384',
// ...
],
// ...
];
Configuración del frontend con Kerberos/ADFS
El archivo de configuración del frontend de Zabbix (zabbix.conf.php) se puede usar para configurar SSO con autenticación Kerberos y 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