j1ngk3.sssd_ldap
lae.system_ldap
Instala y configura SSSD para la autenticación LDAP a nivel de sistema contra un servidor Active Directory habilitado para LDAP.
Variables del Rol
Lee defaults/main.yml
para una lista de todas las variables del rol que se pueden configurar. Dado que las configuraciones por defecto deberían ser suficientes para la mayoría de los usuarios, cubriremos solo las que necesitan ser definidas en esta sección.
Lo siguiente debe ser configurado para comunicarse con tu servidor LDAP/AD:
Variable | Ejemplo | Descripción |
---|---|---|
system_ldap_domain |
LDAP |
Una etiqueta que sssd usará para identificar esta configuración/dominio. |
system_ldap_search_base |
OU=Idol Schools,DC=Aikatsu,DC=net |
El DN base por defecto que se usará para realizar operaciones LDAP de usuario. |
system_ldap_uris |
- ldaps://ldap-tyo.example.aikatsu.net:636 - ldaps://ldap-ngo.example.aikatsu.net:636 |
Una lista de URIs de los servidores LDAP a los que sssd debe conectarse. |
system_ldap_bind_dn |
CN=Naoto Suzukawa,OU=Service Accounts,OU=Idol Schools,DC=Aikatsu,DC=net |
El DN de enlace por defecto que se usará para realizar operaciones LDAP. |
system_ldap_bind_password |
sunrise |
El token de autenticación del DN de enlace por defecto. Solo se admiten contraseñas en texto claro actualmente. |
system_ldap_access_filter_groups |
- CN=operations,OU=Security Groups,OU=Idol Schools,DC=Aikatsu,DC=net |
Lista de DNs de grupo autorizados para acceder al host actual. |
system_ldap_access_unix_groups |
- operations |
Debería ser efectivamente lo mismo que system_ldap_access_filter_groups , pero utilizando sus nombres de grupo UNIX (usualmente CN). |
system_ldap_access_filter_users |
- hoshimiya.ichigo - nikaidou.yuzu |
Lista de nombres de usuario (pasados al filtro (sAMAccountName=%s) por defecto) autorizados para acceder al host actual. |
system_ldap_sudo_groups |
- operations |
Lista de grupos configurados para permitir el uso de sudo en el host actual. |
system_ldap_sudo_users |
- hoshimiya.ichigo |
Lista de usuarios configurados para permitir el uso de sudo en el host actual. |
Ejemplo de Playbook
Lo siguiente es típicamente lo que usamos en un playbook multi-inquilino:
---
- hosts: all
user: ansible
roles:
- lae.system_ldap
become: True
También hay un ejemplo de playbook en el directorio de pruebas
Uso Extendido
Para esta sección, el playbook en el bloque de código anterior es system_ldap.yml
.
Veamos el siguiente diseño de playbook:
- system_ldap.yml
- inventario
- group_vars/
- all/
- main.yml
- starlight/
- main.yml
- host_vars/
- research-node01
- roles/
- requirements.yml
En este diseño, normalmente podemos agrupar el control de acceso por grupos de hosts o por host. Hay algunas variables que probablemente querrás configurar en todos los hosts, en group_vars/all/main.yml
(o solo group_vars/all
si no usas un directorio):
---
system_ldap_domain: aikatsu.net
system_ldap_bind_dn: CN=Naoto Suzukawa,OU=Service Accounts,OU=Idol Schools,DC=Aikatsu,DC=net
system_ldap_bind_password: sunrise
system_ldap_search_base: OU=Idol Schools,DC=Aikatsu,DC=net
system_ldap_uris:
- ldaps://ldap-tyo.example.aikatsu.net:636
- ldaps://ldap-ngo.example.aikatsu.net:636
system_ldap_access_filter_groups:
- CN=operations,OU=Security Groups,OU=Idol Schools,DC=Aikatsu,DC=net
system_ldap_access_filter_users: []
system_ldap_access_unix_groups:
- operations
system_ldap_sudo_groups:
- operations
system_ldap_sudo_users: []
Aquí estamos usando una cuenta de usuario de búsqueda y una contraseña (system_ldap_bind_*
) para mantener la sincronización con un servidor LDAP a través de SSL (con un servidor LDAPS de respaldo), permitiendo que un grupo de "operaciones" se autentique así como los privilegios de root.
El archivo de variables del grupo starlight
puede verse así:
---
system_ldap_allow_passwordauth_in_sshd: true
system_ldap_access_filter_users:
- hoshimiya.ichigo
system_ldap_sudo_users:
- hoshimiya.ichigo
Esto permite que el nombre de usuario hoshimiya.ichigo
inicie sesión en las máquinas en el grupo de hosts starlight
, así como usar sudo en ellas. Las variables anteriores se comparan con el valor sAMAccountName
de tu servidor AD habilitado para LDAP para cualquier usuario en el grupo system_ldap_search_base
.
También puedes especificar grupos, pero necesitarás proporcionar el DN completo para la variable de filtro de grupo. También querrás copiar las variables relacionadas con grupos de all
. Para las otras variables solo puedes usar el CN. Ejemplo:
system_ldap_access_filter_groups:
- CN=operations,OU=Security Groups,OU=Global,OU=Idol Schools,DC=Aikatsu,DC=net
- CN=starlight-students,OU=Security Groups,OU=Starlight Academy,OU=Idol Schools,DC=Aikatsu,DC=net
system_ldap_access_unix_groups:
- operations
- starlight-students
system_ldap_sudo_groups:
- operations
Aquí añadimos un grupo LDAP starlight-students
, pero solo les permitimos iniciar sesión.
Desarrollo
Primero clona y crea una rama, o bifurca, este repositorio, realiza tus cambios, compromete y envía una solicitud de extracción.
Para hacer un seguimiento de los cambios de ansible vault, incluye .gitconfig en tu configuración de git:
echo -e "[include]\n\tpath = ../.gitconfig" >> .git/config
Pruebas
vagrant box add debian/stretch64
vagrant up
vagrant provision
Licencia
MIT
Install and configure SSSD for system-level LDAP authentication
ansible-galaxy install j1ngk3.sssd_ldap