3 SAML

Descripción general

La autenticación SAML 2.0 se puede utilizar 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, no se utilizará su contraseña de Zabbix. Si la autenticación es exitosa, Zabbix buscará la coincidencia con un nombre de usuario local con el atributo de nombre de usuario devuelto por SAML.

Aprovisionamiento de usuarios

Es posible configurar elaprovisionamiento de usuarios JIT (justo a tiempo) para usuarios SAML. En este caso, no es necesario que ya exista un usuario en Zabbix. La cuenta de usuario se puede crear 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 dados de baja en la pestaña Autenticación.

Además del aprovisionamiento JIT, también es posible habilitar y configurar el aprovisionamiento SCIM (Sistema para la gestión de identidades entre dominios): gestión de cuentas de usuario continua para aquellos usuarios que han sido creados mediante el aprovisionamiento de usuarios. El aprovisionamiento SCIM requiere un token API de Zabbix (con permisos de superadministrador) para 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 es eliminado de un grupo SAML, el usuario también será eliminado del grupo en Zabbix y, si no pertenece a ningún otro grupo, se agregará al grupo de usuarios para usuarios dados de baja.

Si SCIM está habilitado y configurado, se aprovisionará un usuario SAML 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 se actualizarán los usuarios aprovisionados. Tenga en cuenta que solo se agregarán medios válidos a un usuario cuando el usuario sea aprovisionado o actualizado.

Si SCIM no está habilitado, se aprovisionará un usuario SAML (y luego 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 el inicio de sesión único SAML. Si se utiliza el aprovisionamiento JIT, 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 del consumidor de aserción debe establecerse en <ruta_a_zabbix_ui>/index_sso.php?acs
  • La URL de cierre de sesión única debe configurarse en <ruta_a_zabbix_ui>/index_sso.php?sls

<ruta_a_zabbix_ui> ejemplos: https://example.com/zabbix/ui, http://otro.ejemplo.com/zabbix, http://<cualquier_dirección_ip_pública>/zabbix

Configurando Zabbix

Es necesario instalar php-openssl si desea utilizar la autenticación SAML en la interfaz.

Para utilizar la autenticación SAML, Zabbix debe configurarse de la siguiente forma:

1. La clave privada y el certificado deben almacenarse en el 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 SP
  • ui/conf/certs/sp.crt - Archivo de certificado SP
  • ui/conf/certs/idp.crt - archivo de certificado IDP

2. Todas las configuraciones más importantes se pueden configurar en la Interfaz Zabbix. Sin embargo, es posible especificar configuraciones adicionales en el archivo de configuración.

Parámetros de configuración, disponibles en el frontend de Zabbix:

Parámetro Descripción
Habilitar autenticación SAML Marque la casilla de verificación para habilitar la autenticación SAML.
Habilitar aprovisionamiento JIT Marque la casilla de verificación para habilitar el aprovisionamiento de usuarios JIT.
ID de entidad IDP El identificador de entidad único 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 cuando cierren 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
u ,serprincipalname
samaccountname
nombre de usuario
usuarionombre de usuario
urn:oid:0.9.2342.19200300.100.1.1
urn:oid:1.3.6.1.4.1.5923.1.1.1.13
<urna: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 será rechazada).
Es posible especificar una URL o cualquier cadena de datos.
Formato de ID de nombre de SP Define qué formato de identificador de nombre se debe utilizar.

Ejemplos:
urn:oasis:names:tc:SAML:2.0:nameid-format:persistent
<urna:oasis:names:tc:SAML:2.0:nameid-format:transient>
<urna:oasis:names:tc:SAML:2.0:nameid-format:kerberos>
<urna:oasis:names :tc:SAML:2.0:nameid-format:entidad>
Firmar Marque las casillas de verificación para seleccionar entidades para las cuales se debe habilitar la firma SAML:
Mensajes
Aserciones
Solicitudes de autenticación
Solicitudes de cierre de sesión
Cerrar sesión respuestas
Cifrar Marque las casillas de verificación para seleccionar entidades para las cuales se debe habilitar el cifrado SAML:
Nombre ID
Aserciones
Inicio de sesión que distingue entre mayúsculas y minúsculas Marque la casilla de verificación para habilitar el inicio de sesión que distingue entre mayúsculas y minúsculas (deshabilitado de forma predeterminada) para los nombres de usuario.
P. deshabilite el inicio de sesión que distinga entre mayúsculas y minúsculas e inicie sesión con, por ejemplo, el usuario 'ADMIN' incluso si el usuario de Zabbix es 'Admin'.
Tenga en cuenta que con el inicio de sesión que distinga entre mayúsculas y minúsculas deshabilitado, el inicio de sesión se denegará si existen varios usuarios en Base de datos Zabbix con nombres de usuario similares (por ejemplo, Admin, admin).
Configurar el aprovisionamiento JIT Marque esta casilla de verificación para mostrar las 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.
Asignación de grupos de usuarios Asigne un patrón de grupo de usuarios SAML al grupo de usuarios y la función de usuario de Zabbix.
Esto es necesario para determinar qué grupo/rol de usuarios obtendrá el usuario aprovisionado en Zabbix.
Haga clic en Agregar 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, el usuario se convierte en miembro de todos ellos.
Si un usuario coincide con varios roles de usuario de Zabbix, el usuario obtendrá el más alto nivel de permiso entre ellos.
Asignación de tipos de medios Asigna los atributos de medios SAML del usuario (por ejemplo, correo electrónico) a los medios de usuario de Zabbix para enviar notificaciones.
Habilitar aprovisionamiento SCIM Marque esta casilla de verificación para habilitar el aprovisionamiento SCIM 2.0.

Vea 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 a la interfaz de Zabbix y añádale api_scim.php, en el lado del proveedor de identidad, es decir:

https://<tu-url-zabbix>/zabbix/api_scim.php

Los atributos de usuario que se utilizan en Zabbix (nombre de usuario, nombre de usuario, apellido de usuario y atributos multimedia) deben agregarse 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.

Ajustes avanzados

Se pueden configurar parámetros SAML adicionales en el archivo de configuración de la interfaz de Zabbix (zabbix.conf.php):

  • $SSO['SP_KEY'] = '<ruta al archivo de clave privada del SP>';
  • $SSO['SP_CERT'] = '<ruta al archivo de certificado SP>';
  • $SSO['IDP_CERT'] = '<ruta al archivo del certificado IDP>';
  • $SSO['SETTINGS']

Zabbix utiliza [SAML PHP de OneLogin Kit de herramientas] (https://github.com/onelogin/php-saml/tree/3.4.1) biblioteca (versión 3.4.1). La estructura de la sección $SSO['SETTINGS'] debe ser similar a la estructura utilizada por la biblioteca. Para la descripción de opciones de configuración, ver la [documentación] (https://github.com/onelogin/php-saml/tree/3.4.1/#user-content-settings) de la biblioteca oficial.

Solo las siguientes opciones se pueden configurar como parte de $SSO['SETTINGS']:

  • strict
  • baseurl
  • compress
  • contactPerson
  • organization
  • sp (solo opciones especificadas en esta lista)
    • attributeConsumingService
    • x509certNew
  • idp (solo opciones especificadas en esta lista)
    • singleLogoutService (sólo una opción)
      • responseUrl
    • certFingerprintAlgorithm
    • certFingerprintAlgorithm
    • x509certMulti
  • securitysignMetadata (solo 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 anular. La opción debug será ignorada.

Además, si la interfaz de usuario de Zabbix está detrás de un proxy o un balanceador de carga, se puede utilizar la opción personalizada use_proxy_headers:

  • false (predeterminado): ignora la opción;
  • true: utilice encabezados HTTP X-Forwarded-* para crear la URL base.

Si utiliza un balanceador de carga para conectarse a la instancia de Zabbix, donde el balanceador de carga usa 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',
               //...
           ],
           //...
       ];