LDAP: backup com slapcat vs ldapsearch

11

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

Tarefa: criar script para crontabcriar backup completo do banco de dados agendado.

1) slapcat- crie um arquivo no formato padrão, Berkeley DB.

2) slapcatpode ser feito durante a slapdexecução (se o bdb/hdbbanco de dados for usado).

3) Para restaurar o arquivo depois slapcat- deve ser usado slapadd(não ldapadd).

4) slapcat/addnão requer senha.

5) slapaddpode ser feito somente quando slapdparado.

Exemplo:

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

Em vez de slapcat/add- vamos dar uma olhada em ldapsearch/add:

1) ldapsearch- cria arquivo com quase a mesma informação que slapcat;

2) ldapadd- pode usar arquivo de ldapsearch, não precisa slapdser parado;

3) ldapadd/search- requer senha.

Exemplo:

 $ 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

Então - a questão é:

1) Estou faltando alguma coisa nesta descrição das ferramentas?

2) O que mais há diferença entre ldapadd/slapadde ladpsearch/slapcat?

setevoy
fonte

Respostas:

12

Bom resumo, alguns pontos adicionais:

  • slapcatdespejos de qualquer que seja o back-end de armazenamento direto (local), ele não precisa ser Berkeley (hdb ou bdb), mas também funciona com o OLC ( cn=config). Despeja no formato LDIF . (Direto, quero dizer, gerenciado diretamente pelo OpenLDAP, não por exemplo um back-end SQL, mesmo que seja armazenado localmente.)
  • ldapaddrequer que o slapd esteja em execução, slapaddrequer que não esteja em execução
  • ldapsearchrequer que slapd esteja em execução, slapcatnão se importa se estiver em execução com um back-end BDB, como você observou

Em resumo:

  • slapcaté a maneira de obter um bom backup que você pode restaurar rapidamente, embora com o tempo de inatividade no mestre (você pode solucionar isso com vários tipos de configuração de replicação). É isso que você deve usar para backup geral e backups pré-upgrade.
  • ldapsearch(sem +) você obterá um backup portátil que provavelmente poderá ser carregado com pouca dificuldade em qualquer outro servidor de diretório, mas será apenas uma restauração viável em uma configuração simples do OpenLDAP (sem replicação, sem sobreposições especiais, sem reescrever) e, se você não se preocupa em preservar o UUID / criar / modificar metadados. Você também precisará de arquivos de esquema extras que acompanhem seus dados.
  • ldapadd(usando sua outra identidade ldapmodify) pode ser usada para aplicar facilmente modificações LDAP (modificação de objeto, exclusão e renomeação) que não são viáveis ​​ou possíveis com slapadd/ slapcatsozinho

Para a maioria dos administradores, as principais considerações surgem do conteúdo ligeiramente diferente do LDIF em cada caso e do requisito de slapdexecução (ou não). As diferenças mais importantes são:

  1. slapcaté mais rápido porque simplesmente despeja o banco de dados, pulando as despesas gerais do protocolo LDAP, autenticação, controle de acesso, objeto e prazos, sobreposições; e não pesquisa de acordo com a hierarquia LDAP.
  2. slapaddé mais rápido (novamente, sem custos indiretos do protocolo LDAP) e, no caso de você estar restaurando um backup em bom estado, é possível executar no modo rápido ( -q) para acelerar grandes importações. Você também pode desativar a verificação de esquema ( -s), embora as pequenas alterações na validação de esquema ou de dados entre as versões do OpenLDAP não sejam desconhecidas.
  3. slapcaté limitado a bancos de dados locais, ele não passará para outros diretórios (por exemplo back-ldap, com , back-meta) da maneira que ldapsearchserá. O mesmo se aplica a slapadd/ ldapadd.
  4. ldapsearchretornará atributos dinâmicos que não são armazenados em um back-end, por exemplo, hasSubordinatesou aqueles mantidos por sobreposições (por exemplo slapo-memberof). Você terá problemas para carregá-los ldapadd(por exemplo, atributos operacionais sem modificação do usuário). A reescrita (slapo-rwm) também pode distorcer ldapsearcha exibição do conteúdo do diretório.
  5. slapcatinclui atributos internos (operacionais); se você estiver usando a replicação, esses atributos serão críticos. Com a replicação, você fica um pouco menos dependente dos backups, mas se você ldapaddrecarregar seu mestre, todos os objetos serão recriados por replicação (alterados entryUUID entryCSN). Embora você possa incluir atributos operacionais usando o atributo "+" especial ldapsearch(ou allopsobreposição), isso não é a mesma coisa queslapcat , veja o ponto anterior sobre o porquê disso. Esses atributos também incluem criar / modificar DN e carimbos de data e hora, o que pode ser importante para alguns aplicativos.
  6. porque slapcatnão observa a hierarquia LDAP (pedido implícito), não há garantia de que seu pedido de dados seja viável ldapadd- ou seja, mesmo que você retire os atributos operacionais, ldapaddpode reclamar porque as sub-ordenadas podem aparecer diante de seus superiores (pais) . As especificações do LDAP exigem a existência de um pai, mas também deixam a ordem dos resultados da pesquisa indefinida a esse respeito. Veja o comentário de Howard abaixo, o OpenLDAP slapaddsuporta silenciosamente dados não ordenados para alguns back-ends. Em uma pitada, você poderá usar repetidamente slapaddcom a opção de continuar com erro ( -c) até que todos os pais "fora de ordem" sejam criados, parando quando você não receber mais nenhum código de erro 32 (nenhum objeto,
  7. ldapadd está sujeito às regras e sobreposições LDAP, por exemplo, integridade referencial, ppolicy (política de senha)
  8. slapcatprefere usar valores de atributo codificados em base-64 para pelo menos userPassword (indicado ::após o nome do atributo)
  9. ldapsearchpossui mais opções para formatação LDIF e gravação de grandes atributos em arquivos separados. Também pode lidar com referências e aliases .
mr.spuratic
fonte
A ordem dos resultados LDAP é indefinida. Tanto o slapcat quanto o ldapsearch podem retornar entradas em ordem arbitrária, nenhuma saída é garantida como estando em ordem adequada para uso com ldapadd. Os drivers bdb / hdb / mdb do slapadd têm soluções especiais para processar entradas em ordem arbitrária, o ldapadd não.
Hyc
slapcatretorna entradas na ordem do banco de dados (back-end), que pode ou não estar bem definida. ldapsearchpor padrão, retorna na ordem em que o servidor responde; com o OpenLDAP, há a opção de classificação do lado do cliente (por exemplo -S "") ou controle de classificação do lado do servidor (por exemplo -E sss, se suportado, e sujeito a algumas pequenas armadilhas de urso relacionadas à configuração e esquema). A especificação diz que os resultados da pesquisa podem estar em qualquer ordem. Uma implementação pode definir uma ordem padrão, a maioria das pessoas assume que o padrão é "pai antes do filho", apenas o OpenDS documenta isso, AFAIK.
Mr.spuratic
2
A ordem dos resultados da pesquisa no OpenLDAP é intencionalmente não documentada. Como a especificação já diz que os resultados podem estar em qualquer ordem, o software cliente não deve confiar em nenhuma ordem específica. É claro que a classificação dos resultados pode ser feita, mas isso requer muito mais recursos e normalmente não é interessante ao fazer um backup completo. A ordem do banco de dados é relativamente sem sentido, dada a possibilidade de a subárvore renomear a movimentação de ramificações para novos locais DIT.
Hyc 24/05
1

slapcatnão funciona se você tiver sobreposições, por exemplo memberOf. Portanto, se você fizer uma sobreposição de associação slapcat/ slapaddciclo, não funcionará mais.

Robert Munteanu
fonte