Solução de problemas do OpenLDAP

Você está lendo a documentação do Apigee Edge.
Acesse a documentação da Apigee X.
info

Esta seção fornece informações e orientações sobre como solucionar problemas do OpenLDAP.

O SMTP está desativado e os usuários precisam redefinir a senha

Sintoma

Quando o SMTP não está configurado na nova interface do Edge, os novos usuários adicionados ao Edge precisam de uma maneira de definir uma senha.

Mensagens de erro

Unknown username and password combination.

Causas possíveis

Os novos usuários não conseguem receber um e-mail do link "Esqueceu a senha?" para definir uma senha porque o SMTP não está configurado.

Resolução

Você pode resolver esse problema de uma das seguintes maneiras:

Solução 1: configurar o servidor SMTP

Configure o servidor SMTP para definir uma nova senha para o usuário. Para mais detalhes sobre como configurar o SMTP, consulte Como configurar o servidor SMTP do Edge.

Solução 2: usar o LDAP

Se não for possível configurar o servidor SMTP, use os comandos LDAP abaixo para definir a nova senha de um usuário:

  1. Um administrador da organização precisa adicionar o usuário específico em a nova interface do Edge (ou na interface clássica do Edge em versões anteriores, conforme mostrado em a imagem a seguir):

  2. Use o comando ldapsearch para encontrar o nome diferenciado (dn) do usuário e redirecione a saída para um arquivo:
    ldapsearch -w Secret123 -D "cn=manager,dc=apigee,dc=com" -b "dc=apigee,dc=com" -LLL -x -H ldap://localhost:10389 > ldap.txt
    

    Confira um exemplo de entrada de dn para um usuário, juntamente com os atributos dele:

    dn:uid=f7a4a4a5-7c43-4168-a47e-6e9a1417cc29,ou=users,ou=global,dc=apigee,dc=com
    mail: apigee_validator@apigee.com
    userPassword:: e1NTSEF9b0FrMFFXVmFjbWRxM1BVaFZzMnllWGZMdkNvNjMwNTJlUDZYN3c9PQ=
     =
    uid: f7a4a4a5-7c43-4168-a47e-6e9a1417cc29
    objectClass: inetOrgPerson
    sn: Validator
    cn: apigee
  3. Abra o arquivo ldap.txt e encontre o dn do novo usuário que foi adicionado com base no atributo de e-mail dele.
  4. Execute o comando ldappassword para adicionar uma senha ao novo usuário usando o dn dele. Neste exemplo, você está definindo a senha do usuário como Apigee123:
    ldappasswd -x -H ldap://localhost:10389 -D "cn=manager,dc=apigee,dc=com" -W -s Apigee123
    "uid=f7a4a4a5-7c43-4168-a47e-6e9a1417cc29,ou=users,ou=global,dc=apigee,dc=com"
    
  5. Faça login na nova interface do Edge como o novo usuário com a senha definida em a etapa anterior. O usuário pode definir uma nova senha depois de fazer login na interface.

O LDAP não está replicando

Sintoma

Muitas instalações do Edge têm vários data centers, por exemplo, DC-1 e DC-2. Ao fazer login na nova interface do Edge no DC-1 como administrador da organização, você pode conferir a lista de usuários, mas a mesma lista de usuários não aparece na nova interface do Edge no DC-2.

Mensagens de erro

Nenhum erro aparece. A nova interface do Edge não mostra a lista de usuários que deveriam ter sido replicados em todos os servidores OpenLDAP.

Causas possíveis

Normalmente, a causa desse problema é uma configuração de replicação do OpenLDAP mal configurada, não a instalação em si. Além disso, a replicação pode ser interrompida se a rede entre os servidores OpenLDAP não permitir o tráfego na porta 10389.

Diagnóstico

Siga estas etapas para diagnosticar o problema:

  1. Verifique se o ldapsearch retorna dados de cada servidor OpenLDAP:
    ldapsearch -x -W -D "cn=manager,dc=apigee,dc=com" -b "dc=apigee,dc=com" -LLL -H ldap://HOST_IP:10389
  2. Verifique se é possível se conectar a cada nó OpenLDAP dos outros nós OpenLDAP na porta 10389. Se o telnet estiver instalado, use o seguinte comando:
    telnet <OpenLDAP_Peer_IP> 10389
    
  3. Se o telnet não estiver disponível, use o netcat para verificar a conectividade da seguinte maneira:

    nc -vz <OpenLDAP_Peer_IP> 10389
    
  4. Verifique a configuração de replicação do ambiente de execução usando o ldapsearch comando:
    ldapsearch -o ldif-wrap=no -D cn=admin,cn=config -H ldap://:10389 -LLL -x -w LDAP_ADMIN_PASSWORD -b "cn=config" "(olcSyncrepl=*)" olcSyncrepl
    

    A saída precisa conter uma configuração semelhante a esta:

    dn: olcDatabase={2}mdb,cn=config
    olcSyncrepl: {0}rid=001 provider=ldap://OTHER_LDAP_SERVER:10389/ binddn="cn=manager,dc=apigee,dc=com" bindmethod=simple credentials=LDAP_PASSWORD searchbase="dc=apigee,dc=com" attrs="*,+" type=refreshAndPersist retry="60 1 300 12 7200 +" timeout=1
  5. Verifique a configuração do ambiente de execução para o olcMultiProvider (antigamente olcMirrorMode) atributo usando o ldapsearch comando para verificar se ele está definido como TRUE:
    ldapsearch -o ldif-wrap=no -D cn=admin,cn=config -H ldap://:10389 -LLL -x -w LDAP_ADMIN_PASSWORD -b "cn=config" "(olcMultiProvider=*)" olcMultiProvider olcMirrorMode
    

    A saída será semelhante a esta:

    dn: olcDatabase={2}mdb,cn=config
    olcMultiProvider: TRUE
  6. Verifique as regras de iptables e tcp wrapper. Remova todas as regras que não permitem que os servidores OpenLDAP pareados se comuniquem. Trabalhe com o administrador da rede para definir as regras adequadamente.
  7. Verifique se a senha do sistema OpenLDAP é a mesma em cada nó OpenLDAP.
  8. Verifique se há caracteres ocultos nos arquivos de configuração ldif que estão sendo usados para configurar a replicação OpenLDAP N-Way executando o dos2unix nos arquivos ldif que foram criados para atualizar a configuração. Normalmente, um arquivo ldif com caracteres incorretos faz com que o comando ldapmodify falhe na execução e, portanto, a replicação não seja configurada. Remova todos os caracteres incorretos e salve os arquivos de configuração.

Se o problema persistir, entre em contato com o suporte da Apigee para receber ajuda na configuração da replicação OpenLDAP N-Way.

Não é possível iniciar o OpenLDAP

Sintoma

O OpenLDAP não é iniciado.

Mensagens de erro

SLAPD Dead But Pid File Exists

Causas possíveis

Esse problema geralmente é causado por um arquivo de bloqueio que é deixado no sistema de arquivos e precisa ser removido.

Diagnóstico

Siga estas etapas para diagnosticar esse problema:

  1. Verifique se há um arquivo de bloqueio ou pid do processo slapd do OpenLDAP no seguinte local:
    /opt/apigee/var/run/apigee-openldap/apigee-openldap.lock
    /opt/apigee/var/run/apigee-openldap/apigee-openldap.pid
  2. Exclua o arquivo de bloqueio e pid, se encontrado, e tente reiniciar o openldap.
     rm /opt/apigee/var/run/apigee-openldap/apigee-openldap.lock
     rm /opt/apigee/var/run/apigee-openldap/apigee-openldap.pid
  3. Se o processo slapd do OpenLDAP for iniciado, pule as etapas abaixo.
  4. Se o processo slapd do OpenLDAP não for iniciado, tente executar o slapd no modo de depuração e procure por erros:
    slapd -h ldap://:10389/ -u apigee -F /opt/apigee/data/apigee-openldap/slapd.d -d 255
    
  5. Os erros podem indicar problemas de recursos. Verifique a utilização da memória e da CPU no sistema.
  6. Verifique a versão do OpenLDAP e faça upgrade se ela for antiga. Confira as versões compatíveis do OpenLDAP em Software compatível.
    slapd -V
    
  7. Use o strace para solucionar problemas do processo slapd e fornecer a saída do strace ao suporte da Apigee:
    strace -tt -T -f -F -i -v -e read=all -s 8192 -e write=all -o /tmp/strace.out -p <pid>
    

Corrupção de dados do OpenLDAP

Sintoma

Os usuários não podem mais executar chamadas de gerenciamento ou fazer login na nova interface do Edge. O uso do utilitário ldapsearch para consultar os usuários pode indicar que o usuário existe no repositório de dados LDAP ou identificar possíveis usuários ou papéis ausentes.

Mensagens de erro

Unknown username and password combination.

Causas possíveis

Normalmente, esse problema pode ser observado devido à corrupção de dados do OpenLDAP. Geralmente, os dados do OpenLDAP não são corrompidos. No entanto, no caso raro de isso acontecer, a corrupção pode ser causada por falha no disco do sistema ou problemas de espaço em disco.

Diagnóstico

  1. Verifique o espaço em disco no sistema com o OpenLDAP instalado usando o comando abaixo:
    du -m /opt
    
  2. Se o espaço em disco usado estiver muito próximo de 100%, isso indica que a causa desse problema é a falta de espaço em disco do sistema.
  3. Verifique a consistência dos dados nos nós LDAP:
    1. Em cada nó LDAP, compare a contagem de usuários e papéis. Execute os comandos a seguir e compare os resultados.
      ldapsearch -o ldif-wrap=no -b "ou=users,ou=global,dc=apigee,dc=com" -D "cn=manager,dc=apigee,dc=com" -H ldap://:10389 -LLL -x -w PASSWORD|wc -l
      ldapsearch -o ldif-wrap=no -b "ou=resources,ou=global,dc=apigee,dc=com" -D "cn=manager,dc=apigee,dc=com" -H ldap://:10389 -LLL -x -w PASSWORD|wc -l 
      Uma discrepância na contagem entre os nós sugere possível corrupção de dados.
    2. Verifique o status de replicação do LDAP. Execute o comando a seguir em cada nó LDAP.
        ldapsearch -x -LLL -H ldap://ldap_ip:10389 -s base -b 'dc=apigee,dc=com' contextCSN dn: dc=apigee,dc=com -D "cn=manager,dc=apigee,dc=com" -w PASSWORD dn: dc=apigee,dc=com 
      Se o valor contextCSN for idêntico em todos os nós, a replicação do LDAP estará funcionando corretamente.

Resolução

Se o sistema ficar sem espaço em disco ou estiver muito próximo de ficar sem espaço em disco, adicione mais espaço em disco para garantir disponibilidade suficiente.

Depois de ter espaço em disco suficiente, use uma das soluções a seguir para resolver o problema de corrupção de dados do LDAP:

  1. Restaure os dados do OpenLDAP do backup.
  2. Limpe o banco de dados do OpenLDAP seguindo estas etapas:
    1. Desative o servidor de gerenciamento 2 e o LDAP2.
    2. Restaure o LDAP1 de um backup de VM (ou backup da Apigee).
    3. Verifique o servidor de gerenciamento 1 para inicialização e recuperação.
    4. Quando o servidor de gerenciamento 1 e o LDAP1 estiverem funcionando corretamente, reinstale o LDAP2 do zero (criando uma folha em branco completamente).
    5. Configure o LDAP2 no modo somente leitura, permitindo que o LDAP1 seja replicado para o LDAP2.
    6. Use ldapsearch para verificar se o número de linhas no LDAP1 e no LDAP2 corresponde.
    7. Reinicie o servidor de gerenciamento 2 e a nova interface do Edge no nó 2 e confirme se eles foram iniciados com êxito.

Para instruções detalhadas, consulte o Issue Tracker público.

Solução 1: restaurar os dados do LDAP do backup

Em um nó OpenLDAP em funcionamento, faça um backup. O backup precisa ser realizado regularmente. Consulte o Guia de operações da nuvem privada da Apigee para conferir as práticas recomendadas sobre backups:

slapcat -F /opt/apigee/data/apigee-openldap/slapd.d -l /tmp/ldap-backup.ldif

As etapas a seguir podem ser usadas para restaurar os dados do OpenLDAP de um backup válido.

  1. Pare o nó OpenLDAP para o qual os dados precisam ser restaurados:
    /opt/apigee/apigee-service/bin/apigee-service apigee-openldap stop
    
  2. Mude o diretório para o diretório de dados do OpenLDAP:
    cd /opt/apigee/data/apigee-openldap
    
  3. Faça backup dos dados do OpenLDAP usando o comando move:
    mv ldap ldap_orig
    
  4. Mude para o usuário apigee:
    su apigee
    
  5. No diretório /opt/apigee/data/apigee-openldap, crie um novo diretório de dados do OpenLDAP com o nome original:
    mkdir ldap
    
  6. Faça o backup do subdiretório ldap_orig/DB_CONFIG da etapa 3 e copie-o para o diretório openldap.
    cp ldap_orig/DB_CONFIG ldap
    
  7. Para restaurar os dados do backup feito com o slapcat, use o slapadd para importar o ldif que contém os dados válidos:
    slapadd -F /opt/apigee/data/apigee-openldap/slapd.d -l /tmp/ldap-backup.ldif
    
  8. Inicie o processo do OpenLDAP:
    /opt/apigee/apigee-service/bin/apigee-service apigee-openldap start
    

Solução 2: limpar o banco de dados LDAP

As etapas a seguir limpam o banco de dados do OpenLDAP para fornecer um novo começo. Essa solução pode ser usada se não houver backup de dados do último estado em que os dados do OpenLDAP estavam funcionando.

  1. Pare o serviço OpenLDAP:
    /opt/apigee/apigee-service/bin/apigee-service apigee-openldap stop
    
  2. Mude o diretório para o diretório de dados do OpenLDAP:
    cd /opt/apigee/data/apigee-openldap
    
  3. Faça backup dos dados do OpenLDAP usando o comando move:
    mv ldap ldap_orig
    
  4. Mude para o usuário apigee:
    su apigee
    
  5. Crie um novo diretório de dados do OpenLDAP com o nome original:
    mkdir ldap
    
  6. Faça o backup do subdiretório ldap_orig/DB_CONFIG da etapa 3 e copie-o para o diretório openldap:
    cp ldap_orig/DB_CONFIG ldap
    
  7. Reinicie o processo do OpenLDAP:
    /opt/apigee/apigee-service/bin/apigee-service apigee-openldap start
    
  8. Reinicie o servidor de gerenciamento para forçar uma atualização das conexões com o OpenLDAP:
    /opt/apigee/apigee-service/bin/apigee-service edge-management-server restart
    

Solução 3: redefinir o OpenLDAP para uma instalação básica

Se a solução 2 não resolver o problema, você poderá redefinir o OpenLDAP para uma instalação básica, conforme descrito nesta seção.

Pré-requisitos

Para redefinir o OpenLDAP, você precisa dos seguintes pré-requisitos:

  • A capacidade de executar a configuração com credenciais de administrador do sistema e LDAP raiz.
  • Acesso ao utilitário ldapadd.
  • O arquivo de configuração silenciosa original salvo para o nó de gerenciamento/LDAP.

Para redefinir o OpenLDAP, siga estas etapas:

  1. Reinstale o OpenLDAP e o servidor de gerenciamento.
    1. Pare o servidor openldap:
      apigee-service apigee-openldap stop
    2. Exclua a pasta de dados openldap corrompida:
      rm -rf /opt/apigee/data/apigee-openldap
    3. Desinstale o componente openldap:
      apigee-service apigee-openldap uninstall
    4. Reinstale o componente openldap usando o mesmo arquivo de configuração usado para a instalação inicial:
      /opt/apigee/apigee-setup/bin/setup.sh -p ld -f configfile
      em que configfile é o nome do arquivo de configuração.
    5. Reinstale o servidor de gerenciamento usando o arquivo de configuração original:
      /opt/apigee/apigee-setup/bin/setup.sh -p ms -f configfile

    Depois de seguir essas etapas, as chamadas da API Management vão funcionar novamente usando apenas a conta sysadmin. No entanto, não é possível fazer login na nova interface do Edge, e as chamadas da API Management com outros usuários não vão funcionar.

  2. Adicione entradas openldap ausentes para organizações que existiam antes da corrupção.

    Depois que a etapa acima for concluída, openldap vai perder entradas para organizações que existiam quando a corrupção ocorreu. A maioria dos dados reais da organização, como pacotes de proxy, armazenados em Cassandra ou Zookeeper, não é perdida. No entanto, a execução do script setup-org não adiciona automaticamente os dados do openldap para as organizações que já existem no Cassandra e no Zookeeper. Esses dados precisam ser adicionados manualmente para cada organização que existia antes da corrupção usando as etapas a seguir:

    1. Crie um arquivo ldif chamado missingLDAP.ldif com o seguinte conteúdo:
      # orgname, organizations, apigee.com
      dn: o=orgname,ou=organizations,dc=apigee,dc=com
      objectClass: organization
      O: orgname
      
      # userroles, orgname, organizations, apigee.com
      dn: ou=userroles,o=orgname,ou=organizations,dc=apigee,dc=com
      ou: userroles
      objectClass: organizationalUnit
      
      # orgadmin, userroles, orgname, organizations, apigee.com
      dn: cn=orgadmin,ou=userroles,o=orgname,ou=organizations,dc=apigee,dc=com
      objectClass: organizationalRole
      cn: orgadmin
      roleOccupant: uid=admin,ou=users,ou=global,dc=apigee,dc=com
      
      # resources, orgadmin, userroles, orgname, organizations, apigee.com
      dn: ou=resources,cn=orgadmin,ou=userroles,o=orgname,ou=organizations,dc=apigee,dc=com
      ou: resources
      objectClass: organizationalUnit
      
      # @@@, resources, orgadmin, userroles, orgname, organizations, apigee.com
      dn: cn=@@@,ou=resources,cn=orgadmin,ou=userroles,o=orgname,ou=organizations,dc=apigee,dc=com
      roleOccupant: ou=delete,ou=permissions,dc=apigee,dc=com
      roleOccupant: ou=get,ou=permissions,dc=apigee,dc=com
      roleOccupant: ou=put,ou=permissions,dc=apigee,dc=com
      labeledURI: /
      objectClass: organizationalRole
      objectClass: labeledURIObject
      cn: @@@

      em que orgname é a organização que você está tentando recriar.

    2. Adicione as entidades LDAP ausentes usando o comando a seguir:
      ldapadd -x -w "OPENLDAP_ROOT_PASSWORD" -D "cn=manager,dc=apigee,dc=com" -H ldap://localhost:10389 -f missingLDAP.ldif

    As etapas acima vão criar as entradas ausentes para uma organização atual e as orgadmin permissões para essa organização. Repita as etapas para cada organização que precisa ser recriada. Neste ponto, é possível adicionar usuários orgadmin a uma organização, mas os outros papéis padrão ainda não existem. Portanto, é necessário adicioná-los usando a próxima etapa.

  3. Adicione papéis e permissões padrão ausentes a uma organização atual.

    Usando o mesmo arquivo de configuração que foi usado inicialmente para configurar qualquer uma das organizações atuais, execute o comando a seguir:

    /opt/apigee/apigee-service/bin/apigee-service apigee-provision create-roles -f configfile
  4. Depois de seguir esse procedimento, você precisa fazer o seguinte manualmente:

    • Adicione todos os papéis personalizados que existiam antes da corrupção usando a nova interface do Edge ou a API Management.
    • Adicione usuários aos papéis de usuário relevantes.
  5. (Opcional) Restabeleça a configuração de autenticação externa no gerenciamento.

    Restaure o /opt/apigee/customer/application/management-server.properties se a configuração não tiver mudado. Como a nova interface do Edge não foi reinstalada, /opt/apigee/customer/application/management-ui.properties permanece a mesma depois que as credenciais da sysadmin conta são restauradas com a nova instalação do servidor de gerenciamento.

  6. (Opcional) Reinstale o mTLS da Apigee no nó de gerenciamento.

    Se o mTLS da Apigee foi instalado anteriormente, siga o Guia de instalação do mTLS da Apigee para reinstalá lo no nó do servidor de gerenciamento.

Se o problema persistir, entre em contato com o suporte da Apigee para receber mais ajuda.