Estructura del directorio LDAP
Consideraciones iniciales
Se incluye aquí un conjunto de pasos, técnicas y recomendaciones que describen la forma de cargar los diferentes esquemas (atributos y clases) LDAP en un directorio OpenLDA.
Instalación
Existen diversas implementaciones del estándar LDAP v3. Por lo que cada uno presenta quizá alguna particularidad respecto a la manipulación de esquemas.
Dirigirse a la sección Bases de datos - LDAP para mayores detalles.
Actualización
La actualización es requerida cuando se producen cambios en el esquema entre distintas versiones de SIU-Araí: Usuarios. Existen diversas maneras de actualizar un esquema LDAP existente:
Manual
Se puede optar por una de las dos aproximaciones:
- modificar en caliente un esquema existente, utilizando el comando ldapmodify y ejecutar los cambios requeridos (ver la recomendación del estándar, así como realizar un conjunto de cambios vía ldif)
- parar el servicio y copiar nuevamente el esquema en formato
.ldif
requerido, reemplazando el anterior, así como cualquier otro cambio requerido por la versión.
Basada en Docker
Para instalaciones que estén hechas en Docker, el procedimiento será algo similar a:
- backup de los datos existenes
- se publica siempre un nuevo tag con la nueva versión del esquema. Ver el tag que corresponda y actualizar, dependiendo de como se haya desplegado el servicio.
- restauración de los datos
Si se elige trabajar con volúmenes, colocando datos afuera del contenedor, no sería necesario realizar un backup y restauración.
Dirigirse a la sección Actualizar de 2.3 a 3.0 - Actualizar OpenLDAP para mayores detalles sobre una actualización en versión 3.0.
Adaptación del esquema
El proceso de adaptación representa tomar el esquema requerido por SIU-Araí: Usuarios e introducirle algun cambio, ya sea porque se cuenta con algún otro servicio que también opera sobre el LDAP o porque se quiere adaptarlo a un LDAP existente.
En todos los casos, se recomienda ponerse en contacto con el SIU para despejar toda duda.
Para adaptar alguno de los esquemas existentes (probablemente sólo
arai-usuarios.schema
ycn={4}arai-usuarios.ldif
), es necesario entender la estructura y forma de describir según el estándar LDAP.
El punto de partida es el archivo arai-usuarios.schema
, todo cambio a los atributos debe realizarse siguiendo
estríctamente el formato del estándar. El siguiente paso es exportar al archivo cn={4}arai-usuarios.ldif
en formato
ldif (excepto en el caso de utilizar la imágen docker de OpenLdap
(versión araí), que se encarga automáticamente de esta tarea).
Validación manual
Todo edición manual que se realiza sobre el archivo .ldif
existente, requiere que se regenere la suma de comprobación
o crc32 que trae consigo. Ver el comando crc32
en sistemas Debian Linux.
Validación automática
Otra alternativa es generar el archivo .ldif
a partir del .schema
. Para ello es posible utilizar el comando
slaptest
y mediante algún instructivo generar los
ldif de forma correcta. La ventaja es que resulta más simple adaptar de esta forma uno de los schemas a una
instalación LDAP existente o con múltiples esquemas ya cargados (al momento de armar el archivo .conf se incluyen los
esquemas existentes y se genera el cn={x}
adecuado a la instalación).
En este ejemplo, se utiliza la imagen docker-openldap-arai
para generar el .ldif
a partir del .schema
:
docker cp idm/templates/ldap/utils/schema.conf id_contenedor_ldap:/tmp
docker cp idm/templates/ldap/3.0/schema/arai-usuarios.schema id_contenedor_ldap:/tmp
docker exec -it id_contenedor_ldap slaptest -f /tmp/schema.conf -F /tmp/
docker cp id_contenedor_ldap:/tmp/cn=config/cn=schema/cn={4}arai-usuarios.ldif .
Resguardo
Para realizar un backup o copia de un directorio LDAP, se puede realizar de varias formas. La primera consiste en crear una copia de respaldo de los directorios del servicio, específicamente:
- Configuración: donde se alojan los
.schema
y.ldif
que representan toda la configuración del directorio. Normalmente se trata del directorio/etc/ldap/slapd.d/
en OpenLDAP sobre Debian 10 Buster. - Datos: donde se alojan los datos del LDAP. Normalmente se trata del directorio
/var/lib/ldap
en OpenLDAP sobre Debian 10 Buster.
Otra estrategia distinta es realizar un resguardo en formato ldif
de la configuración y de los datos.
Configuración: exportar toda la configuración
slapcat -n 0 -l /backups/config.ldif
Datos: para exportar los datos "tal cual" están.
slapcat -n 1 -l /backups/data.ldif
Datos limpios: exportar sólo los datos, sin fecha de creación ni autor, útil para restaurar en ambientes de testing, backup anonimizados y demás.
cat >slapcat_ldapadd.ldif <<EOF /^creatorsName: /d /^createTimestamp: /d /^modifiersName: /d /^modifyTimestamp: /d /^structuralObjectClass: /d /^entryUUID: /d /^entryCSN: /d EOF slapcat -v | sed -f slapcat_ldapadd.ldif > /backups/data.ldif
Es recomendable que el servicio LDAP esté detenido para evitar errores en los datos.
Mayores detalels se encuentran en esta guía y estos tips al respecto.
Para ambientes Docker, osixia ofrece varias herramientas de backup.
Restauración
Para restaurar datos, se puede seguir los pasos dependiendo si se hizo un backup del directorio completo o en formato
ldif
tanto de la configuración como de los datos.
Para un backup en formato ldif
realizar los siguientes pasos:
Configuración: detener el servicio, restaurar y luego volver a iniciarlo
service slapd stop slapadd -n 0 -F /etc/openldap/slapd.d -l /backups/config.ldif service slapd start
Datos: iniciado el servicio, cargar los datos
slapadd -n 1 -F /etc/ldap/slapd.d/ -l /backups/data.ldif
Restaurar en instalación existente
Se puede dar una serie de situaciones donde es necesario llevar una copia de los datos LDAP:
- armar un ambiente réplica de producción o tipo stand-by.
- mover a otro servidor o pasar de una instalación manual a una docker
- restaurar en cualquier otro ambiente, con una versión superior del esquema
En cualquier caso, el backup de los datos en formato ldif
tendrá todos los datos e incluso tendrá los elementos de la
estructura que son requeridos por SIU-Araí: Usuarios. Estos
elementos deben ser eliminados, para evitar toda falla en la importación, a saber:
- el DN
dn: dc=siu,dc=cin,dc=edu
- el CN del administrador
dn: cn=admin,dc=siu,dc=cin,dc=edu
- el
ou=usuarios
,ou=usuariosCuentas
,ou=groups
- y todo elemenento a futuro parte del esquema que puede contener una instalación limpia
Reindexado
Cada vez que se realiza cambios masivos sobre una estructura o sobre los datos de un directorio LDAP, es necesario realizar un reindexado del mismo, para que vuelva a generar índices, funcionen las búsquedas, etc.
La forma de realizar un reindexado en una instalación OpenLDAP bajo Debian 10 Buster, es como sigue:
systemctl stop slapd
slapindex
chown openldap:openldap /etc/ldap/slapd.d -R
systemctl start slapd
Si por el contrario, estamos utilizando una imagen Docker de osixia, los pasos a seguir sólo pueden ser hechos si se tiene los datos en un volumen externo. En ese caso, los pasos son:
docker stop openldap
docker run --name openldap-reindex --rm -it --volumes-from openldap-data --entrypoint slapindex osixia/openldap -F /etc/ldap/slapd.d/
docker start openldap
Esto asume que el contenedor en ejecución se llama
openldap
y que el volumen con los datosopenldap-data
.