Inicializar base de datos LDAP
Si sólo desea ver el sistema corriendo vaya a la guía de Instalación Rápida.
Consideraciones hechas para el proyecto SIU-Araí: Usuarios:
- Se requiere de un servicio de LDAP, externo a la plataforma.
- La implementación actual se basa en un servicio OpenLDAP.
- Se provee los archivos en formato schema y ldif necesarios para inicializar el servicio.
- Se provee una imagen Docker pre-armada con una estructura fija, a modo de guía
Existen dos alternativas para desplegar el servicio OpenLDAP: mediante una instalación manual o mediante un despliegue en Docker. Cualquiera de las dos opciones son compatibles con un despliegue en Docker de SIU-Araí: Usuarios.
Preparación de la estructura
El primer paso antes de realizar el despliegue es definir la estructura que adoptará el directorio LDAP. En la sección Conceptos - Almacenamiento - Ldap se describe en detalle la estructura subyacente.
En este punto, lo que se debe elegir es el nombre de la raíz del directorio LDAP que alojará todo el arbol. Normalmente se trata de una sigla de la institución. Si se toma como ejemplo UNX, nos quedaría definido de la siguiente manera:
identificador | valor |
---|---|
raiz | unx |
DN base | dc=unx,dc=edu,dc=ar |
Bind admin | cn=admin,dc=unx,dc=edu,dc=ar |
OU usuarios | ou=usuarios,dc=unx,dc=edu,dc=ar |
OU cuentas | ou=usuariosCuentas,dc=unx,dc=edu,dc=ar |
OU grupos | ou=groups,dc=unx,dc=edu,dc=ar |
Si se desea adaptar a una estructura LDAP existente, por favor ponganse en contacto.
Despliegue en Docker
Existe multitid de imágenes docker para OpenLDAP. Una de ellas es hecha por osixia. Para el proyecto, contamos con una imágen basada en ella, con los esquemas de SIU-Araí: Usuarios cargados. Pueden encontrarla aquí.
Sobre como osixia plantea su uso, referirse a la documentación específica.
Ajustar la imágen a las necesidades
Para personalizar la imagen docker, utilizar el repositorio siu-toba/docker/openldap que contiene la última versión del schema requerido por el proyecto. Los puntos claves aquí son:
- el directorio
bootstrap/schema/
contiene los esquemas requeridos:01-arai-usuarios.schema
,edu-org.schema
yedu-person.schema
- el directorio
ldif
contiene la estructura a inicializar:01-estructuraUsuarios.ldif
. Para adaptar la estructura a las necesidades de la institución, como se detalla en la sección previa. - el directorio
environment
contiene los parámetros (DN base, SSL, etc.):my-env.startup.yaml
ymy-env.yaml
. Aquí se configura todo lo relacionado a la forma de operar OpenLDAP y su seguridad. No lo deje por defecto!
Una vez realizada las adaptaciones requeridas, se recomienda:
- gestionar los cambios sobre un repositorio Git para su seguimiento, control, actualización futura, etc.
- proceder a construir la imágen docker de acuerdo a como lo documenta el repositorio y osixia.
- la imagen ha de estar publicada en alguna registro de imágenes Docker (ver DockerHub para mayores detalles).
Desplegar
La forma más simple de realizar el respliegue, es mediante Docker Compose. El archivo
ldap.yml
tendrá mas o menos esta estructura:
version: '3.7'
services:
ldap:
image: siutoba/docker-openldap-arai:openldap-3
environment:
LDAP_ORGANIZATION: CIN
LDAP_DOMAIN: "siu.cin.edu"
LDAP_REMOVE_CONFIG_AFTER_SETUP: "false"
LDAP_ADMIN_PASSWORD: admin
LDAP_CONFIG_PASSWORD: admin
networks:
backend:
volumes:
- volumen_ldap_data:/var/lib/ldap
- volumen_ldap_config:/etc/ldap/slapd.d
networks:
backend:
volumes:
volumen_ldap_data:
volumen_ldap_config:
Para ejecutarlo, basta correr vía Docker Compose el archivo
docker-compose up ldap.yml
Este es claramente un despliegue muy simple, realizado con la imagen Docker que provee el proyecto. Se opta por configurar volúmenes para almacenamiento de los datos y configuración LDAP de manera externa al contenedor. Con esto se logra que la información que este contenedor pueda generar sea persistente. Sopora que se pueda realizar una actualización del mismo a una versión futura, entre otros usos.
Recomendamos encarecidamente el despliegue de un orquestador de contenedores (ya sea basado en Docker Swarm o Kubernetes) para dar mayor fiabilidad al servicio.
Despliegue manual
A continuación se describe uno basado en OpenLDAP con Debian 10 Buster. Se asume un DN base dc=unx,dc=edu,dc=ar
.
El primer paso es realizar la instalación del servicio OpenLDAP
sudo apt install slapd ldap-utils
Es necesario reconfigurar el servicio ldap para establecer los valores de configuración inicial (ej. DN base
dc=unx,dc=edu,dc=ar
)sudo dpkg-reconfigure slapd
Se deben cargar los esquemas requeridos por SIU-Araí: Usuarios (se encuentran dentro del directorio
idm/templates/ldap/3.0/ldif
del proyecto).sudo cp cn=\{* "/etc/ldap/slapd.d/cn=config/cn=schema" sudo chown openldap:openldap "/etc/ldap/slapd.d/cn=config/cn=schema" -R sudo systemctl restart slapd
Opcional. Es posible verificar si los esquemas fueron cargados realmente
sudo ldapsearch -LLLQY EXTERNAL -H ldapi:/// -b cn=schema,cn=config "(objectClass=olcSchemaConfig)" dn
Con los esquemas en su lugar, las entidades que alojan los usuarios, grupos y cuentas han de ser creados
sudo ldapadd -x -W -D "cn=admin,dc=unx,dc=edu,dc=ar" -f estructura-arai-usuarios.ldif
Opcional. Si no se dispone, agregar el esquema
memberOf
para los grupossudo ldapmodify -Y EXTERNAL -H ldapi:/// -f ldap/3.0/optional/memberOf.ldif
Opcional. Para verificar que se cuenta con el esquema
memberOf
sudo ldapsearch -LLLQY EXTERNAL -H ldapi:/// -b cn=schema,cn=config "(objectClass=olcSchemaConfig)" | grep memberOf
Opcional. Es posible verificar que las entidades se hayan cargado adecuadamente
sudo ldapsearch -x -W -D "cn=admin,dc=unx,dc=edu,dc=ar" -b "dc=unx,dc=edu,dc=ar"
Opcional. Crear indices
sudo ldapmodify -Y EXTERNAL -H ldapi:/// -f ldap/3.0/optional/index.ldif
Otros productos
Si poseen otro producto, es bienvenida toda colaboración, ya sea por el foro como vía el HUB.