Risoluzione dei problemi di OpenLDAP

Stai visualizzando la documentazione di Apigee Edge.
Consulta la documentazione di Apigee X.
info

Questa sezione fornisce informazioni e indicazioni per la risoluzione dei problemi di OpenLDAP.

SMTP è disattivato e gli utenti devono reimpostare la password

Sintomo

Quando SMTP non è configurato nell'interfaccia utente Edge, i nuovi utenti aggiunti a Edge hanno bisogno di un modo per impostare una password.

Messaggi di errore

Unknown username and password combination.

Possibili cause

I nuovi utenti non riescono a ricevere un'email dal link "Hai dimenticato la password?" per impostare una password perché SMTP non è configurato.

Risoluzione

Puoi risolvere questo problema in uno dei seguenti modi:

Soluzione 1: configura il server SMTP

Configura il server SMTP per impostare una nuova password per l'utente utilizzando le istruzioni fornite nella documentazione.

Soluzione 2: utilizza LDAP

Se non riesci a configurare il server SMTP, utilizza i seguenti comandi LDAP per impostare la nuova password per un utente:

  1. Un amministratore dell'organizzazione esistente deve aggiungere l'utente specifico tramite l'interfaccia utente Edge, come mostrato di seguito:

  2. Utilizza il comando ldapsearch per trovare il nome distinto (dn) dell'utente e reindirizzare l'output a un file:
    ldapsearch -w Secret123 -D "cn=manager,dc=apigee,dc=com" -b "dc=apigee,dc=com" -LLL -h localhost -p 10389 > ldap.txt
    

    Ecco un esempio di voce dn per un utente, insieme agli attributi dell'utente:

    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. Apri il file ldap.txt e trova il dn del nuovo utente aggiunto in base all'attributo email del nuovo utente.
  4. Esegui il comando ldappassword per aggiungere una password per il nuovo utente utilizzando il suo dn. In questo esempio, imposti la password dell'utente su Apigee123:
    ldappasswd -h localhost -p 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. Accedi all'interfaccia utente Edge come nuovo utente con la password definita nel passaggio precedente. L'utente può impostare una nuova password dopo aver eseguito l'accesso all'interfaccia utente.

LDAP non esegue la replica

Sintomo

Molte installazioni di Edge hanno più data center, ad esempio DC-1 e DC-2. Quando accedi all'interfaccia utente Edge in DC-1 come amministratore dell'organizzazione, puoi visualizzare l'elenco degli utenti, ma lo stesso elenco di utenti non viene visualizzato nell'interfaccia utente Edge in DC-2.

Messaggi di errore

Non vengono visualizzati errori, l'interfaccia utente Edge non mostra l'elenco degli utenti che avrebbero dovuto essere replicati su tutti i server OpenLDAP.

Possibili cause

In genere, la causa di questo problema è una configurazione di replica OpenLDAP errata, non l'installazione stessa. Inoltre, la replica potrebbe interrompersi se la rete tra i server OpenLDAP non consente il traffico sulla porta 10389.

Diagnosi

Segui questi passaggi per diagnosticare il problema:

  1. Controlla se ldapsearch restituisce i dati da ogni server OpenLDAP:
    ldapsearch -W -D "cn=manager,dc=apigee,dc=com" -b "dc=apigee,dc=com" -LLL -h <host-ip> -p 10389
    
  2. Controlla se riesci a connetterti a ogni nodo OpenLDAP dagli altri nodi OpenLDAP sulla porta 10389. Se telnet è installato, utilizza il seguente comando:
    telnet <OpenLDAP_Peer_IP> 10389
    
  3. Se telnet non è disponibile, utilizza netcat per verificare la connettività come segue:

    nc -vz <OpenLDAP_Peer_IP> 10389
    
  4. Controlla la configurazione della replica nel seguente file:
    /opt/apigee/data/apigee-openldap/slapd.d/cn=config/olcDatabase={2}bdb.ldif

    Il file deve contenere una configurazione simile alla seguente:

      olcSyncRepl: rid=001
      provider=ldap://__OTHER_LDAP_SERVER__/
      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. Controlla anche lo stesso file per il valore dell'attributo olcMirrorMode. Deve essere impostato sul valore TRUE:
    grep olcMirrorMode /opt/apigee/data/apigee-openldap/slapd.d/cn=config/olcDatabase={2}bdb.ldif
    
  6. Controlla le regole di iptables e tcp wrapper. Rimuovi tutte le regole che non consentono i server OpenLDAP peer di comunicare tra loro. Collabora con l'amministratore di rete per impostare le regole in modo appropriato.
  7. Assicurati che la password di sistema OpenLDAP sia la stessa su ogni nodo OpenLDAP.
  8. Controlla la presenza di caratteri nascosti nei file di configurazione ldif utilizzati per configurare la replica OpenLDAP N-Way eseguendo dos2unix sui file ldif creati per aggiornare la configurazione. In genere, un file ldif con caratteri errati impedisce l'esecuzione del comando ldapmodify e quindi la replica potrebbe non essere configurata. Rimuovi tutti i caratteri errati e salva i file di configurazione.

Se il problema persiste, contatta l'assistenza Apigee per ricevere assistenza nella configurazione della replica OpenLDAP N-Way.

Impossibile avviare OpenLDAP

Sintomo

OpenLDAP non si avvia.

Messaggi di errore

SLAPD Dead But Pid File Exists

Possibili cause

In genere, questo problema è causato da un file di blocco lasciato nel file system e che deve essere rimosso.

Diagnosi

Segui questi passaggi per diagnosticare il problema:

  1. Controlla la presenza di un file di blocco o pid del processo slapd di OpenLDAP nella seguente posizione:
    /opt/apigee/var/run/apigee-openldap/apigee-openldap.lock
    /opt/apigee/var/run/apigee-openldap/apigee-openldap.pid
  2. Elimina il file di blocco e pid, se lo trovi, e prova a riavviare openldap.
     rm /opt/apigee/var/run/apigee-openldap/apigee-openldap.lock
     rm /opt/apigee/var/run/apigee-openldap/apigee-openldap.pid
  3. Se il processo slapd di OpenLDAP si avvia, salta i passaggi riportati di seguito.
  4. Se il processo slapd di OpenLDAP non si avvia, prova a eseguire slapd in modalità di debug e cerca eventuali errori:
    slapd -h ldap://:10389/ -u apigee -F /opt/apigee/data/apigee-openldap/slapd.d -d 255
    
  5. Gli errori potrebbero indicare problemi di risorse. Controlla l'utilizzo di memoria e CPU sul sistema.
  6. Controlla la versione di OpenLDAP ed esegui l'upgrade se è obsoleta. Controlla le versioni supportate di OpenLDAP nel nostro Software supportato documento.
    slapd -V
    
  7. Utilizza strace per risolvere i problemi del processo slapd e per fornire l'output di strace a Assistenza Apigee:
    strace -tt -T -f -F -i -v -e read=all -s 8192 -e write=all -o /tmp/strace.out -p <pid>
    

Corruzione dei dati OpenLDAP

Sintomo

Gli utenti non riescono più a eseguire chiamate di gestione o ad accedere all'interfaccia utente Edge. L'utilizzo dell'utilità ldapsearch per eseguire query sugli utenti potrebbe indicare che l'utente esiste nell'archivio dati LDAP oppure potrebbe identificare utenti o ruoli mancanti.

Messaggi di errore

Unknown username and password combination.

Possibili cause

In genere, questo problema può essere osservato a causa della corruzione dei dati OpenLDAP. In genere, i dati OpenLDAP non vengono danneggiati. Tuttavia, nel raro caso in cui ciò accada, la corruzione potrebbe essere dovuta a un errore del disco di sistema o a problemi di spazio su disco.

Diagnosi

  1. Controlla lo spazio su disco del sistema su cui è installato OpenLDAP utilizzando il seguente comando:
    du -m /opt
    
  2. Se lo spazio su disco utilizzato è molto vicino al 100%, significa che la causa di questo problema è che il sistema sta esaurendo lo spazio su disco.
  3. Controlla la coerenza dei dati tra i nodi LDAP:
    1. Su ogni nodo LDAP, confronta il numero di utenti e ruoli. Esegui i seguenti comandi e confronta i risultati.
      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 
      Una discrepanza nel conteggio tra i nodi suggerisce una possibile corruzione dei dati.
    2. Verifica lo stato della replica LDAP. Esegui il seguente comando su ogni nodo 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 il valore contextCSN è identico su tutti i nodi, la replica LDAP funziona correttamente.

Risoluzione

Se il sistema ha esaurito lo spazio su disco o è molto vicino all'esaurimento, aggiungi altro spazio su disco per garantire una disponibilità sufficiente.

Una volta che hai spazio su disco sufficiente, utilizza una delle seguenti soluzioni per risolvere il problema di corruzione dei dati LDAP:

  1. Ripristina i dati OpenLDAP dal backup.
  2. Libera spazio nel database OpenLDAP seguendo questi passaggi:
    1. Arresta Management Server 2 e LDAP2.
    2. Ripristina LDAP1 da un backup della VM (o da un backup Apigee).
    3. Controlla Management Server 1 per l'avvio e il ripristino.
    4. Una volta che Management Server 1 e LDAP1 funzionano correttamente, reinstalla LDAP2 da zero (creando una lavagna completamente vuota).
    5. Configura LDAP2 in modalità di sola lettura, consentendo a LDAP1 di eseguire la replica in LDAP2.
    6. Utilizza ldapsearch per verificare che il numero di righe in LDAP1 e LDAP2 corrisponda.
    7. Riavvia Management Server 2 e UI2 e verifica che si avvino correttamente.

Per istruzioni dettagliate, consulta l'Issue Tracker pubblico.

Soluzione 1: ripristina i dati LDAP dal backup

Crea un backup su un nodo OpenLDAP funzionante. Il backup deve essere eseguito regolarmente. Consulta la Guida operativa di Apigee Private Cloud per le best practice sui backup:

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

I seguenti passaggi possono essere utilizzati per ripristinare i dati OpenLDAP da un backup valido.

  1. Arresta il nodo OpenLDAP per il quale è necessario ripristinare i dati:
    /opt/apigee/apigee-service/bin/apigee-service apigee-openldap stop
    
  2. Cambia la directory impostandola sulla directory dei dati OpenLDAP:
    cd /opt/apigee/data/apigee-openldap
    
  3. Esegui il backup dei dati OpenLDAP esistenti utilizzando il comando move:
    mv ldap ldap_orig
    
  4. Passa all'utente apigee:
    su apigee
    
  5. Dalla directory /opt/apigee/data/apigee-openldap, crea una nuova directory dei dati OpenLDAP con il nome originale:
    mkdir ldap
    
  6. Esegui il backup della sottodirectory ldap_orig/DB_CONFIG dal passaggio 3 e copiala nella directory openldap.
    cp ldap_orig/DB_CONFIG ldap
    
  7. Per ripristinare i dati dal backup eseguito con slapcat, utilizza slapadd per importare il file ldif che contiene i dati validi:
    slapadd -F /opt/apigee/data/apigee-openldap/slapd.d -l /tmp/ldap-backup.ldif
    
  8. Avvia il processo OpenLDAP:
    /opt/apigee/apigee-service/bin/apigee-service apigee-openldap start
    

Soluzione 2: libera spazio nel database LDAP

I seguenti passaggi eliminano il database OpenLDAP per fornire un nuovo inizio. Questa soluzione può essere utilizzata se non è presente un backup dei dati dell'ultimo stato in cui i dati OpenLDAP funzionavano.

  1. Arresta il servizio OpenLDAP:
    /opt/apigee/apigee-service/bin/apigee-service apigee-openldap stop
    
  2. Cambia la directory impostandola sulla directory dei dati OpenLDAP:
    cd /opt/apigee/data/apigee-openldap
    
  3. Esegui il backup dei dati OpenLDAP esistenti utilizzando il comando move:
    mv ldap ldap_orig
    
  4. Passa all'utente apigee:
    su apigee
    
  5. Crea una nuova directory dei dati OpenLDAP con il nome originale:
    mkdir ldap
    
  6. Esegui il backup della sottodirectory ldap_orig/DB_CONFIG dal passaggio 3 e copiala nella directory openldap:
    cp ldap_orig/DB_CONFIG ldap
    
  7. Riavvia il processo OpenLDAP:
    /opt/apigee/apigee-service/bin/apigee-service apigee-openldap start
    
  8. Riavvia il Management Server per forzare un aggiornamento delle connessioni a OpenLDAP:
    /opt/apigee/apigee-service/bin/apigee-service edge-management-server restart
    

Soluzione 3: reimposta OpenLDAP su un'installazione di base

Se la soluzione 2 non risolve il problema, puoi reimpostare OpenLDAP su un'installazione di base, come descritto in questa sezione.

Prerequisiti

Per reimpostare OpenLDAP, devi soddisfare i seguenti prerequisiti:

  • La possibilità di eseguire la configurazione con le credenziali di amministratore di sistema e root LDAP.
  • Accesso all'utilità ldapadd.
  • Il file di configurazione silenziosa originale salvato per il nodo di gestione/LDAP.

Per reimpostare OpenLDAP:

  1. Reinstalla OpenLDAP e il Management Server.
    1. Arresta il server openldap:
      apigee-service apigee-openldap stop
    2. Elimina la cartella dei dati openldap danneggiata:
      rm -rf /opt/apigee/data/apigee-openldap
    3. Disinstalla il componente openldap:
      apigee-service apigee-openldap uninstall
    4. Reinstalla il componente openldap utilizzando lo stesso file di configurazione utilizzato per l'installazione iniziale:
      /opt/apigee/apigee-setup/bin/setup.sh -p ld -f configfile
      dove configfile è il nome del file di configurazione.
    5. Reinstalla il Management Server utilizzando il file di configurazione originale:
      /opt/apigee/apigee-setup/bin/setup.sh -p ms -f configfile

    After doing these steps, Management API calls should work again using the sysadmin account only. However, it will not be possible to log into the Edge UI, and Management API calls with any other users will not work.

  2. Add missing openldap entries for orgs that existed prior to the corruption.

    After the above step is completed, openldap will be missing entries for orgs that existed when the corruption occurred. The majority of the actual org data such as proxy bundles is stored in Cassandra or Zookeeper is not lost. However, running the setup-org script will not automatically add the openldap data for the orgs that already exist in Cassandra, and Zookeeper. This data has to be added manually for every org that existed prior to the corruption using the following steps:

    1. Create an ldif file called missingLDAP.ldif with the following content:
      # 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: @@@

      dove orgname è l'organizzazione che stai tentando di ricreare.

    2. Aggiungi le entità LDAP mancanti utilizzando il seguente comando:
      ldapadd -x -w  -D "cn=manager,dc=apigee,dc=com" -H ldap://localhost:10389 -f missingLDAP.ldif

    I passaggi precedenti creeranno le voci mancanti per un'organizzazione esistente e le orgadmin autorizzazioni per quell'organizzazione. Ripeti i passaggi per ogni organizzazione da ricreare. A questo punto, puoi aggiungere utenti orgadmin a un'organizzazione, ma gli altri ruoli predefiniti non esistono ancora, quindi devi aggiungerli utilizzando il passaggio successivo.

  3. Aggiungi i ruoli e le autorizzazioni predefiniti mancanti a un'organizzazione esistente.

    Utilizzando lo stesso file di configurazione utilizzato inizialmente per configurare una delle organizzazioni esistenti, esegui il seguente comando:

    /opt/apigee/apigee-service/bin/apigee-service apigee-provision create-roles -f configfile
  4. Dopo aver seguito questa procedura, devi:

    • Aggiungere tutti i ruoli personalizzati esistenti prima della corruzione utilizzando l'interfaccia utente o l'API di gestione,
    • Aggiungere tutti gli utenti ai ruoli utente pertinenti.
  5. (Facoltativo) Ristabilisci la configurazione di autenticazione esternalizzata su Management.

    Ripristina /opt/apigee/customer/application/management-server.properties se la configurazione non è cambiata. Poiché l'interfaccia utente non è stata reinstallata, il /opt/apigee/customer/application/ui.properties dovrebbe rimanere invariato, dato che le credenziali per l'amministratore di sistema sono state ripristinate con la nuova installazione di Management.

  6. (Facoltativo) Reinstalla Apigee mTLS sul nodo di gestione.

    Se Apigee mTLS è stato installato in precedenza, segui la Guida all'installazione di Apigee mTLS per reinstall lo sul nodo del Management Server.

Se il problema persiste, contatta l'assistenza Apigee per ulteriore supporto.