La autenticación SAML 2.0 puede utilizarse para iniciar sesión en Zabbix.
Si solo se configura el inicio de sesión SAML, entonces 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 buscará un nombre de usuario local que coincida con el atributo de nombre de usuario devuelto por SAML.
Es posible configurar el aprovisionamiento de usuarios JIT (just-in-time) para usuarios SAML. En este caso, no es necesario 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): 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 Super administrador) 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 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 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 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.
Para trabajar con Zabbix, es necesario configurar un proveedor de identidad SAML (onelogin.com, auth0.com, okta.com, etc.) de la siguiente manera:
<path_to_zabbix_ui>/index_sso.php?acs
<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
Es necesario instalar php-openssl si desea utilizar la autenticación SAML en la interfaz web.
Para utilizar la 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.
Por defecto, Zabbix buscará en las siguientes ubicaciones:
2. Todas las configuraciones más importantes pueden configurarse en la interfaz web de Zabbix. Sin embargo, es posible especificar configuraciones adicionales en el archivo de configuración.
Parámetros de configuración disponibles en la interfaz web de Zabbix:
Parámetro | Descripción |
---|---|
Habilitar autenticación SAML | Marque la casilla para habilitar la autenticación SAML. |
Habilitar aprovisionamiento JIT | Marque la casilla para habilitar el aprovisionamiento de usuarios JIT. |
ID de entidad IDP | El identificador único de la entidad dentro del proveedor de identidad SAML. |
URL del servicio SSO | La URL a la que los usuarios serán redirigidos al iniciar sesión. |
URL del servicio SLO | La URL a la que los usuarios serán redirigidos al cerrar sesión. Si se deja vacío, 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 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 |
ID de entidad SP | 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. |
Formato de nombre de ID SP | Solicitar un formato de nombre de ID particular 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 |
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: Nombre de ID Aserciones |
Inicio de sesión sensible a mayúsculas/minúsculas | Desmarque la casilla para deshabilitar el inicio de sesión sensible a mayúsculas/minúsculas para los nombres de usuario (habilitado por defecto). Deshabilitar el inicio de sesión sensible a mayúsculas/minúsculas 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/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: "Autenticación fallida: las credenciales proporcionadas no son únicas." |
Configurar aprovisionamiento JIT | Marque esta casilla para mostrar opciones relacionadas con el aprovisionamiento de usuarios JIT. |
Atributo de nombre de grupo | Especifique el atributo de nombre de grupo para el aprovisionamiento de usuarios JIT. |
Atributo de nombre de usuario | Especifique el atributo de nombre de usuario para el aprovisionamiento de usuarios JIT. |
Atributo de apellido de usuario | Especifique el atributo de apellido de usuario para el aprovisionamiento de usuarios JIT. |
Mapeo de grupo de usuario | Asocie un patrón de grupo de usuario SAML con un grupo de usuarios y un rol de usuario de Zabbix. Esto es necesario para determinar qué grupo/rol de usuario recibirá el usuario aprovisionado en Zabbix. Haga clic en Agregar para añadir una asociació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, el usuario se convierte en miembro de todos ellos. Si un usuario coincide con varios roles de usuario de Zabbix, el usuario obtendrá el nivel de permiso más alto entre ellos. |
Mapeo de tipo de medio | Asocie los atributos de medios SAML del usuario (por ejemplo, correo electrónico) con los medios de usuario de Zabbix para el envío de notificaciones. |
Habilitar aprovisionamiento SCIM | Marque esta casilla para habilitar el aprovisionamiento SCIM 2.0. |
Consulte ejemplos de configuración de proveedores de identidad SAML para inicio de sesión y aprovisionamiento de usuarios en Zabbix con:
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:
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
.
Se pueden configurar parámetros SAML adicionales en el archivo de configuración de la interfaz web de Zabbix (zabbix.conf.php):
Zabbix utiliza la biblioteca OneLogin's SAML PHP Toolkit (versión 3.4.1). La estructura de la sección $SSO['SETTINGS'] debe ser similar a la utilizada por la biblioteca. Para la descripción de las opciones de configuración, consulte la documentación oficial de la biblioteca.
Solo se pueden establecer las siguientes opciones como parte de $SSO['SETTINGS']:
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:
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',
// ...
],
// ...
];
El archivo de configuración del frontend de Zabbix (zabbix.conf.php) se puede utilizar para configurar SSO con autenticación Kerberos y ADFS:
$SSO['SETTINGS'] = [
'security' => [
'requestedAuthnContext' => [
'urn:oasis:names:tc:SAML:2.0:ac:classes:Kerberos',
],
'requestedAuthnContextComparison' => 'exacto'
]
];
En este caso, en el campo SP name ID de la configuración SAML establezca: