LDAP: copia de seguridad con slapcat vs ldapsearch

11

Usado: openldap-servers-2.4.23-34.el6_5.1.x86_64

Tarea: crear script para crontabcrear una copia de seguridad completa de la base de datos programada.

1) slapcat- crea el archivo en el formato predeterminado, Berkeley DB.

2) slapcatse puede hacer mientras se slapdejecuta (si se bdb/hdbutiliza la base de datos).

3) Para restaurar el archivo después de slapcat- debe ser utilizado slapadd(no ldapadd).

4) slapcat/addno requiere contraseña.

5) solo slapaddse puede hacer cuando se slapddetiene.

Ejemplo:

 $ slapcat -f /etc/openldap/slapd.conf -b "dc=db_1" -l db_1_backup.ldif
 $ slapadd -l db_1_backup.ldif

En lugar de slapcat/add- echemos un vistazo a ldapsearch/add:

1) ldapsearch- crea un archivo con casi la misma información que slapcat;

2) ldapadd- puede usar el archivo desde ldapsearch, no requiere slapdser detenido;

3) ldapadd/search- requiere contraseña.

Ejemplo:

 $ ldapsearch -D "cn=root,dc=db_1" -W -b "dc=db_1" "dc=db_1" -LLL > db_1_backup2.ldif
 $ ldapadd -x -D "cn=root,dc=db_1" -W -f db_1_backup2.ldif

Entonces, la pregunta es:

1) ¿Me falta algo en esta descripción de herramientas?

2) ¿Qué más es la diferencia entre ldapadd/slapaddy ladpsearch/slapcat?

Setevoy
fuente

Respuestas:

12

Buen resumen, algunos puntos adicionales:

  • slapcatvolcados desde cualquier backend de almacenamiento directo (local), no necesita ser Berkeley (hdb o bdb), también funciona con OLC ( cn=config). Se vuelca al formato LDIF . (Por directo quiero decir directamente administrado por OpenLDAP, no, por ejemplo, un servidor SQL, incluso si está almacenado localmente).
  • ldapaddrequiere que slapd se esté ejecutando, slapaddrequiere que no se esté ejecutando
  • ldapsearchrequiere que se slapd esté ejecutando, slapcatno le importa si se está ejecutando con un back-end BDB, como notó

En breve:

  • slapcates la forma de obtener una buena copia de seguridad que puede restaurar rápidamente, aunque con tiempo de inactividad en el maestro (puede solucionar esto con varios tipos de replicación configurados). Esto es lo que debe usar para una copia de seguridad general y copias de seguridad previas a la actualización.
  • ldapsearch(sin +) le proporcionará una copia de seguridad portátil que probablemente pueda cargar con poca dificultad en cualquier otro servidor de directorio, pero solo será una restauración viable en una configuración simple de OpenLDAP (sin replicación, sin superposiciones especiales, sin reescritura), y si no le importa preservar UUID / crear / modificar metadatos. Necesitará también cualquier archivo de esquema adicional que vaya junto con sus datos.
  • ldapadd(usando su otra identidad ldapmodify) se puede usar para aplicar fácilmente modificaciones LDAP (modificar, eliminar y renombrar objetos) que no son factibles o posibles con slapadd/ slapcatsolo

Para la mayoría de los administradores, las principales consideraciones surgen de los contenidos ligeramente diferentes del LDIF en cada caso, y el requisito de slapdestar ejecutándose (o no). Las diferencias más importantes son:

  1. slapcates más rápido porque simplemente volca la base de datos, omitiendo los gastos generales del protocolo LDAP, autenticación, control de acceso, límites de tiempo y objetos, superposiciones; y no busca según la jerarquía LDAP.
  2. slapaddes más rápido (una vez más, no hay gastos generales de protocolo LDAP), y en el caso de que esté restaurando una copia de seguridad conocida, puede ejecutarla en modo rápido ( -q) para acelerar las importaciones grandes. También puede deshabilitar la comprobación de esquema ( -s), aunque tenga en cuenta que no son desconocidos los pequeños cambios en el esquema o la validación de datos entre las versiones de OpenLDAP.
  3. slapcatestá limitado a las bases de datos locales, no se cruzará a otros directorios (por ejemplo back-ldap, con back-meta) como lo ldapsearchhará. Lo mismo se aplica a slapadd/ ldapadd.
  4. ldapsearchdevolverá atributos dinámicos que no están almacenados en un servidor, por ejemplo, hasSubordinateso aquellos mantenidos por superposiciones (por ejemplo slapo-memberof) Tendrá problemas para cargarlos ldapadd(p. Ej., Atributos operativos sin modificación del usuario). La reescritura (slapo-rwm) también puede distorsionar ldapsearchla vista del contenido del directorio.
  5. slapcatincluye atributos internos (operativos), si está utilizando la replicación, estos atributos son críticos. Con la replicación, usted es menos dependiente de las copias de seguridad, pero si usa ldapaddpara recargar su maestro, cada objeto será recreado por replicación (modificado entryUUID entryCSN) Aunque puede incluir atributos operativos utilizando el atributo especial "+" con ldapsearch(o allopsuperposición), esto no es lo mismo queslapcat , vea el punto anterior de por qué esto es así. Estos atributos también incluyen crear / modificar DN y marcas de tiempo, que pueden ser importantes para algunas aplicaciones.
  6. debido a slapcatque no observa la jerarquía LDAP (ordenamiento implícito), no hay garantía de que su ordenamiento de datos sea viable ldapadd, es decir, incluso si elimina los atributos operativos, ldapaddpuede quejarse porque pueden aparecer subordenadas ante sus superiores (padres) . Las especificaciones LDAP requieren que exista un padre, pero también dejan el orden de los resultados de búsqueda sin definir a este respecto. Vea el comentario de Howard a continuación, OpenLDAP slapaddadmite silenciosamente datos no ordenados para algunos backends. En caso de necesidad, puede usarlo repetidamente slapaddcon la opción de continuar con el error ( -c) hasta que se creen todos los padres "fuera de servicio", deteniéndose cuando ya no reciba ningún código de error 32 (ningún objeto,
  7. ldapadd está sujeto a las reglas y superposiciones de LDAP, por ejemplo, integridad referencial, ppolicy (política de contraseña)
  8. slapcatprefiere usar valores de atributo codificados en base 64 para al menos userPassword (indicado con ::después del nombre del atributo)
  9. ldapsearchtiene más opciones para formatear LDIF y escribir atributos grandes para separar archivos. También puede manejar referencias y alias .
Sr. púrpura
fuente
El orden de resultados LDAP no está definido. Tanto slapcat como ldapsearch pueden devolver entradas en orden arbitrario, no se garantiza que ninguna salida esté en el orden adecuado para su uso con ldapadd. Los controladores bdb / hdb / mdb de slapadd tienen soluciones especiales para procesar entradas en un orden arbitrario, ldapadd no.
hyc
slapcatdevuelve entradas en el orden de la base de datos (backend), que puede o no estar bien definido. ldapsearchde forma predeterminada, regresa en el orden en que el servidor responde, con OpenLDAP existe la opción de ordenar por el lado del cliente (por ejemplo -S "") o por el lado del servidor (por ejemplo -E sss, si es compatible, y sujeto a algunas trampas de oso menores relacionadas con la configuración y el esquema). La especificación dice que los resultados de la búsqueda pueden estar en cualquier orden. Una implementación podría definir un orden predeterminado, la mayoría de las personas asumen que el valor predeterminado es "padre antes que hijo", solo OpenDS documenta esto, AFAIK.
Sr.Spuratic
2
El orden de los resultados de búsqueda en OpenLDAP no está documentado intencionalmente. Como la especificación ya dice que los resultados pueden estar en cualquier orden, el software del cliente no debe depender de ningún orden en particular. Por supuesto, se puede clasificar los resultados, pero eso requiere muchos más recursos y, por lo general, no es interesante cuando se realiza una copia de seguridad completa. El orden de la base de datos es relativamente insignificante dada la posibilidad de que el subárbol cambie el nombre de las ramas móviles a nuevas ubicaciones DIT.
hyc
1

slapcatno funciona si tiene superposiciones, por ejemplo memberOf. Por lo tanto, si realiza una superposición de membresía slapcat/ slapaddciclo ya no funcionará.

Robert Munteanu
fuente