Es posible utilizar el área de trabajo Autenticación para configurar los servicios de directorio de SaltStack Config mediante el protocolo LDAP. Este protocolo se utiliza para conectarse a servicios como Active Directory o Microsoft Azure.

Nota: Se puede utilizar más de un sistema a la vez para autenticar usuarios en SaltStack Config si es necesario. Por ejemplo, puede utilizar un servicio IdP basado en SAML o uno basado en LDAP para almacenar al mismo tiempo algunas credenciales de usuario de forma nativa en el servidor RaaS. Sin embargo, SaltStack Config no permite configurar más de dos proveedores SAML o dos proveedores LDAP al mismo tiempo.

SaltStack Config utiliza el siguiente proceso back-end para autenticar sistemas basados en LDAP:

  • Vista previa: al obtener una vista previa de la configuración de conexión, SaltStack Config recupera una lista de ejemplo de usuarios y grupos del servidor LDAP para comprobar que se introdujeron los parámetros de configuración correctos.
  • Inicio de sesión: cuando un usuario introduce credenciales en el formulario de inicio de sesión de SaltStack Config, el servidor back-end comprueba si existe una coincidencia en la base de datos en ese momento. A continuación, inicia un proceso de búsqueda de varios pasos y, al encontrar una coincidencia, autentica al usuario. En este proceso de búsqueda, los usuarios individuales habilitados en grupos habilitados no aparecen en el área de trabajo Funciones hasta el primer inicio de sesión del usuario.
  • Tareas en segundo plano: SaltStack Config ejecuta un trabajo en segundo plano periódicamente para buscar cada grupo y usuario vinculado en la conexión del servicio de directorio con el fin de verificar que todavía existe. Si se eliminaron el grupo o el usuario, el servidor back-end desactiva su vínculo en la base de datos.
  • Grupos y usuarios archivados: se archivan todos los grupos que se eliminan de la conexión del servicio de directorio. Si bien estos grupos se encuentran inactivos y los usuarios no pueden iniciar sesión, se siguen mostrando en el área de trabajo Funciones y se pueden seleccionar. Esto también se aplica a los usuarios eliminados anteriormente visibles en el área de trabajo Funciones.
  • Grupos anidados: al trabajar con grupos anidados, cuando se habilita un grupo principal, también se habilitan todos los grupos secundarios de forma predeterminada.

Configurar una conexión LDAP

Para configurar LDAP, primero cree una conexión y, a continuación, habilite usuarios y grupos LDAP específicos para la autenticación en SaltStack Config. Una vez habilitados los grupos o usuarios, puede definir su configuración de control de acceso basado en funciones (Role-Based Access Control, RBAC).

Puede optar por rellenar automáticamente los campos con la configuración predeterminada personalizada para el servicio de directorio, como Active Directory u OpenLDAP.

Nota: Un administrador de LDAP o de Active Directory con experiencia que comprenda el diseño general del sistema LDAP debe completar los siguientes pasos. Póngase en contacto con el administrador para obtener ayuda.

Para configurar un servicio de directorio LDAP:

  1. (Opcional) Antes de configurar LDAP, puede resultar útil probar la conexión y las consultas mediante una herramienta de terceros. Para los usuarios de AD, puede usar LDP o ADSI Edit. Para los usuarios de Linux, la herramienta recomendada es ldapsearch.
    Nota: Para obtener más información sobre las pruebas con estas herramientas, consulte Cómo comprobar y solucionar problemas en una conexión del servicio de directorio en el centro de soporte.
  2. Haga clic en Administración > Autenticación en el menú lateral.
  3. Haga clic en Crear.
  4. En el menú Tipo de configuración, seleccione LDAP.
  5. (Opcional) En Configuración, haga clic en Rellenar automáticamente valores predeterminados y seleccione el servicio de directorio del menú desplegable.

    Se rellenarán las entradas predeterminadas de acuerdo con su selección. Sin embargo, ciertas entradas, como DN de búsqueda de usuarios, quedarán incompletas. Asegúrese de comprobar que las entradas coincidan con el esquema del servicio de directorio y de reemplazar el texto de marcador de posición por los valores correctos para el servicio.

  6. Introduzca o compruebe la información de la conexión LDAP.

    Configuración básica

    Campo Descripción
    Nombre Nombre de la conexión LDAP. Dado que solo se trata de un nombre para mostrar, puede resultar útil introducir un nombre para diferenciar este back-end de autenticación de otros.
    Host Dirección del servidor host de LDAP, con formato de FQDN o dirección IP.
    destino Puerto en el que se configuró el servidor LDAP. El valor predeterminado es 389 para LDAP sin cifrar y 636 para LDAP mediante SSL.
    Sincronización en segundo plano SaltStack Config valida todos los usuarios y grupos con el back-end de autenticación en un intervalo definido (en minutos) aquí.
    SSL
    Habilitar SSL
    Seleccione esta opción para conectarse al servidor LDAP a través de una capa de sockets seguros (Secure Sockets Layer, SSL) con el certificado especificado en la configuración del servidor RaaS. Si no se proporciona ninguna configuración, se utilizará el almacén de certificados del sistema para validar la conexión SSL. Para obtener más información sobre la configuración del servidor RaaS, consulte Configurar certificados SSL en la guía Instalación y configuración de SaltStack Config.
    Importante: Como práctica recomendada, seleccione Habilitar SSL. Cuando se deja esta opción sin seleccionar, SaltStack Config transmite información en texto sin formato a través de una conexión no segura.
    Validar certificado
    Seleccione esta opción para asegurarse de que los certificados SSL se validen al conectarse. Deje la opción sin seleccionar para omitir la validación, por ejemplo, cuando se utilizan certificados autofirmados (no recomendados para producción).

    Autenticación

    Campo Descripción
    DN base de autenticación

    Nombre distintivo del LDAP base. Esta es la ubicación desde la que se consultan los grupos y los usuarios, por ejemplo, DC=sse,DC=example,DC=com.

    Nota: La página de detalles de LDAP incluye campos de entrada independientes para Clase de objeto de persona, Nombre de atributo de cuenta, Clase de grupo, Nombre de atributo de grupo y Programación de sincronización, como se describe a continuación. Por lo tanto, no incluya estos objetos en el campo DN base.
    DN de enlace de administración DN de administrador configurado para el servidor LDAP. Con este valor, SaltStack Config se autentica en el directorio para las búsquedas de usuarios y grupos. Introduzca la entrada en función de la siguiente sintaxis: cn=Administrator,cn=Users,dc=example,dc=com.
    Contraseña de DN de enlace de administración

    Contraseña individual del administrador.

    Esto se almacena con cifrado en la base de datos. No se almacena en texto sin formato.

    Filtro de DN de enlace de autenticación

    Filtro aplicado para seleccionar un usuario específico. El resultado de esta búsqueda es un DN de usuario que SaltStack Config utiliza para enlazarse al directorio y conceder al usuario acceso a SaltStack Config. Esto resulta útil para limitar la cantidad de resultados que se devuelven de una búsqueda determinada.

    Nota: Como la sintaxis de filtro puede volverse bastante compleja, una práctica recomendada es probar la entrada mediante LDP, ldapsearch o una herramienta similar para validar la entrada y realizar ajustes antes de rellenar este campo.

    El siguiente filtro de muestra devuelve solo una cuenta que coincide con el nombre de usuario proporcionado que pertenece a los grupos de DevOps o Nivel II.

    (&(objectclass=user)(sAMAccountName={username})(|(memberOf=CN=DevOps,OU=Groups,OU=TestCompanyHQ,DC=adtest,DC=com)(memberOf=LevelII,OU=Groups,DC=adtest,DC=com)))

    Si utiliza valores predeterminados rellenados automáticamente, asegúrese de reemplazar el texto de marcador de posición por los valores correctos para el servicio de directorio.

    Nota: Al configurar una estructura de bosque, deje este campo en blanco.
    Nombre de atributo de ID único remoto Nombre del valor utilizado para identificar entradas únicas. Este es el atributo de identificador único de todas las entradas. En AD, este es ObjectGUID.

    Grupos

    Campo Descripción
    DN de búsqueda de grupos Base de búsqueda para grupos. Por ejemplo, en AD, esto puede ser cn=Groups,dc=example,dc=com. Indica el lugar del directorio donde se deben buscar los grupos. Utilícelo junto con la opción Ámbito de búsqueda de grupos a continuación.
    Ámbito de búsqueda de grupos

    Indica la profundidad de la búsqueda en el directorio a partir de la base indicada en DN de búsqueda de grupos y puede tener uno de estos cuatro valores:

    baseObject
    Valor 0, normalmente conocido como base. Utilice esta opción para buscar solo este objeto y ningún otro.
    singleLevel
    Valor 1, normalmente conocido como one. Utilice esta opción para tener en cuenta solo los elementos secundarios inmediatos de la entrada base al buscar coincidencias.
    wholeSubtree
    Valor 2 (o SUBTREE en ldap3), normalmente conocido como sub. Utilice esta opción para buscar en la base y todos sus minions a cualquier profundidad.
    subordinateSubtree
    Valor 3, normalmente conocido como subordinates. Esto es lo mismo que wholeSubtree, pero se omite la entrada de la búsqueda base.
    Filtro de DN de búsqueda de grupos Filtro de búsqueda para extraer grupos del directorio. Suele ser (objectClass=group), pero puede ser (objectCategory=group) en algunas configuraciones de AD. Se utiliza junto con Clase de grupo para obtener más detalles.
    Clase de grupo Nombre de la clase de objeto utilizado para definir grupos, por ejemplo, groupOfNames.
    Atributo de nombre de grupo El nombre del atributo que desea utilizar para el nombre de grupo. Introduzca un atributo de un solo valor, no un valor múltiple.
    Atributo de pertenencia a grupos El nombre del atributo en la entrada de usuario que contiene el nombre de grupo, por ejemplo, memberOf.

    Usuarios

    Campo Descripción
    DN de búsqueda de usuarios La base de búsqueda para usuarios, por ejemplo, cn=Users,dc=example,dc=com en AD o cn=people,cn=accounts,dc=example,dc=com en otros servicios de directorio. Indica el lugar del directorio donde se deben buscar los usuarios. Utilícelo junto con la opción Ámbito de búsqueda de usuarios a continuación.
    Ámbito de búsqueda de usuarios Indica la profundidad de la búsqueda en el directorio a partir de la base indicada en DN de búsqueda de usuarios y puede tener uno de estos cuatro valores: Consulte los cuatro valores descritos en Ámbito de búsqueda de grupos.
    Filtro de DN de búsqueda de usuarios Filtro de búsqueda para extraer usuarios del directorio. Suele ser (objectClass=person), pero puede ser (objectCategory=user) en algunas configuraciones de AD.
    Clase de persona Nombre de la clase de servicio de directorio que contiene los usuarios a quienes se desea permitir iniciar sesión. La mayoría de los sistemas (incluido Active Directory) utilizan person, pero algunos pueden preferir user o inetOrgPerson.
    Atributo de identificador de usuario El nombre único del atributo de la cuenta de usuario. Para AD, esto es sAMAccountName. En el caso de otros servicios, suele ser uid o memberUid.
    Atributo de pertenencia de usuario El nombre del atributo en la entrada de grupo que contiene el nombre de usuario. Entre los posibles ejemplos, se incluyen member o uniquemember.
  7. Para obtener una vista previa de la configuración sin guardar, haga clic en Vista previa de actualización.

    La ventana de vista previa muestra los usuarios y los grupos seleccionados para la conexión. Puede seleccionar la pestaña Grupos o Usuarios para obtener una vista previa de los usuarios y los grupos asociados con el servicio según sea necesario.

  8. Haga clic en Guardar.

    Se guardó la configuración de LDAP. Para comprobar que la configuración sea correcta, se recomienda intentar iniciar sesión en SaltStack Config desde una cuenta de usuario de prueba. Si no puede iniciar sesión correctamente, consulte Solución de problemas para obtener sugerencias.

    Nota: Para las configuraciones de LDAP, SaltStack Config almacena los ajustes de conexión, incluidos los grupos y los usuarios identificados. Solo recupera grupos y usuarios dentro del ámbito que haya definido y no sincroniza todo el directorio.

    Con el tiempo, es posible que deba actualizar o volver a sincronizar el directorio LDAP. Por ejemplo, debe actualizar el directorio si agrega nuevos usuarios y desea habilitarlos en SaltStack Config.

Habilitar grupos y usuarios

Después de configurar la conexión LDAP, debe configurar grupos de servicios de directorio y asegurarse de que los usuarios puedan iniciar sesión en SaltStack Config. Para configurar grupos de servicios de directorio:

  1. En el área de trabajo Autenticación, seleccione la configuración LDAP requerida.
  2. Seleccione la pestaña Grupos para ver una lista de los grupos recuperados de la configuración LDAP.
    Nota: Si desea recuperar un gran número de grupos, la página puede tardar hasta un minuto en cargarse.
  3. Seleccione los grupos que desea habilitar en SaltStack Config.
  4. Seleccione la pestaña Usuarios para ver una lista de los usuarios recuperados de la configuración LDAP.
    Nota: Si desea recuperar un gran número de usuarios, la página puede tardar hasta un minuto en cargarse.
  5. Seleccione los usuarios que desea habilitar en SaltStack Config.
    Nota: Los usuarios incluidos en los grupos habilitados ya se encuentran seleccionados y no se puede anular su selección.
    Una lista de usuarios que ya se habilitaron en SaltStack Config
  6. Haga clic en Guardar.

    Ahora puede definir la configuración de control de acceso basado en funciones (Role-Based Access Control, RBAC) para los grupos seleccionados. Sin embargo, el área de trabajo Funciones permite administrar la configuración de usuarios individuales incluidos en los grupos seleccionados solo después del primer inicio de sesión del usuario. Para eliminar grupos o usuarios, anule la selección del grupo o usuario y, a continuación, haga clic en Guardar.

    Para obtener más información sobre RBAC en SaltStack Config, consulte Cómo definir las funciones de usuario.

Solución de problemas de la conexión LDAP

Si no puede obtener una vista previa correcta de la conexión, siga estos pasos de solución de problemas.
Problema Descripción Solución
No puedo obtener una vista previa de la conexión

Si no puede obtener una vista previa de los grupos y los usuarios, esto se debe frecuentemente a un problema de conexión entre el servidor LDAP y SaltStack Config o a una entrada no válida en el formulario de configuración de LDAP.

  1. Asegúrese de que las conexiones TCP de SaltStack Config al puerto seleccionado en el servidor LDAP estén permitidas.
  2. Vuelva a verificar las entradas del formulario y valide la sintaxis con una herramienta de terceros. Consulte Cómo comprobar y solucionar problemas en una conexión del servicio de directorio.
  3. Si ninguno de los pasos anteriores ayuda a resolver el problema, consulte la sección Otros problemas a continuación.
  4. Si ninguno de los pasos anteriores ayuda, póngase en contacto con el soporte al cliente.
Al intentar obtener una vista previa de la conexión, se bloquea la carga de la página Si se bloquea la carga de la página durante más de dos minutos, reinicie el servicio RaaS y, a continuación, elimine y vuelva a crear la configuración.
  1. Abra el registro de RaaS.
    tail -f /var/log/raas/raas

    El registro contiene un error similar al siguiente:

    [ERROR    :256][ForkPoolWorker-2:10253][ldap_preview_background_task(some_uuid)]
    Task ldap preview_background_task[some_uuid]raised unexpected: KeyError('ad-1_preview')
  2. Detenga y reinicie el servicio RaaS.
    systemctl stop raas
    systemctl start raas
  3. Vuelva a la interfaz de usuario de SaltStack Config y elimine la conexión LDAP.
    Nota:

    Se recomienda copiar y pegar las entradas de la configuración en un archivo de texto de copia de seguridad antes de la eliminación.

  4. Vuelva a crear la configuración de LDAP.
Otros problemas varios

Si ya configuró y guardó la conexión LDAP, pero los usuarios no pueden iniciar sesión, o si detecta otros problemas, compruebe los registros de raas con la depuración extendida habilitada para determinar la causa principal.

Para habilitar la depuración extendida:

  1. En RaaS, abra /etc/raas/raas.
  2. Realice los siguientes cambios:
    • En Loggingoptions, quite las marcas de comentario de log_file_loglevel:debug.
    • En AD/LDAPdriverconfiguration, quite las marcas de comentario de log_level y establezca log_level:EXTENDED.
  3. Detenga y reinicie el servicio RaaS.
    systemctl stop raas
    systemctl start raas
  4. Vea el registro de raas.
    tail -f /var/log/raas/raas

Algunos errores comunes que se pueden ver en los registros son:

  • Configuración incorrecta para la conexión (SSL). Ajuste la configuración de SSL.
    [raas.utils.validation.schemas.settings][DEBUG   :546 ][Webserver:9096]
    Error while connecting to AD/LDAP Server. SSL connection issues: socket
    ssl wrapping error: [Errno 104] Connection reset by peer
  • Contraseña incorrecta para el DN de enlace de administrador. Verifique y vuelva a introducir la contraseña.
    [raas.utils.rpc   ][DEBUG   :284 ][Webserver:9095]
    Processed RPC request(129360670417695). Response:
    {'riq': 129360670417695, 'ret': None, 'error': {'code': 3004, 'message':
    'Request validation failure.', 'detail': {'_schema':
    ['Credentials are not valid']}}, 'warnings': []}
  • El filtro de DN de enlace de autenticación predeterminado que se rellena automáticamente genera un conflicto. Deje el campo en blanco o utilice {username} en lugar de {{username}}.
    Nota:

    Es posible encontrar este error cuando ya se guardó la conexión LDAP, pero los usuarios no pueden iniciar sesión.

    [var.tmp._MEIBCyG76.raas.mods.auth.ldap][DEBUG   :903 ][Webserver:9096]
    Running _get_auth_backend_user with this search_filter: (&(objectclass=person)(sAMAccountName={username}))
    
    [var.tmp._MEIBCyG76.raas.mods.auth.ldap][DEBUG   :931 ][Webserver:9096]
    Could not find any user using '(&(objectclass=person)(sAMAccountName={username}))'
    as the search filter in the ldap backend under the ad-1 configuration.
    Trying remote_uid 'None'
    
    [var.tmp._MEIBCyG76.raas.mods.auth.ldap][DEBUG   :963 ][Webserver:9096]
    Could not find any user using '(&(objectClass=person)(objectGUID=None))'
    as the search filter in the ldap backend under the ad-1 configuration.