Dépannage des problèmes OpenLDAP

Vous consultez la documentation Apigee Edge.
Accédez à la documentation**Apigee X**.
info

Cette section fournit des informations et des conseils pour résoudre les problèmes liés à OpenLDAP.

SMTP est désactivé et les utilisateurs doivent réinitialiser leur mot de passe

Problème constaté

Lorsque SMTP n'est pas configuré dans la nouvelle interface utilisateur Edge, les nouveaux utilisateurs ajoutés à Edge ont besoin d'un moyen de définir un mot de passe.

Messages d'erreur

Unknown username and password combination.

Causes possibles :

Les nouveaux utilisateurs ne peuvent pas recevoir d'e-mail à partir du lien "Mot de passe oublié ?" pour définir un mot de passe, car SMTP n'est pas configuré.

Solution

Vous pouvez résoudre ce problème de l'une des manières suivantes :

Solution 1 : Configurer le serveur SMTP

Configurez le serveur SMTP pour définir un nouveau mot de passe pour l'utilisateur. Pour en savoir plus sur la configuration de SMTP, consultez Configurer le serveur SMTP Edge.

Solution 2 : Utiliser LDAP

Si vous ne parvenez pas à configurer le serveur SMTP, utilisez les commandes LDAP ci-dessous pour définir le nouveau mot de passe d'un utilisateur :

  1. Un administrateur d'organisation existant doit ajouter l'utilisateur spécifique dans la nouvelle interface utilisateur Edge (ou dans l'interface utilisateur Edge classique dans les versions antérieures, comme illustré dans l'image suivante) :

  2. Utilisez la commande ldapsearch pour trouver le nom unique (dn) de l'utilisateur et rediriger la sortie vers un fichier :
    ldapsearch -w Secret123 -D "cn=manager,dc=apigee,dc=com" -b "dc=apigee,dc=com" -LLL -x -H ldap://localhost:10389 > ldap.txt
    

    Voici un exemple d'entrée dn pour un utilisateur, ainsi que les attributs de l'utilisateur :

    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. Ouvrez le fichier ldap.txt et recherchez le nom unique du nouvel utilisateur qui a été ajouté en fonction de l'attribut d'adresse e-mail du nouvel utilisateur.
  4. Exécutez la commande ldappassword pour ajouter un mot de passe au nouvel utilisateur à l'aide de son nom unique. Dans cet exemple, vous définissez le mot de passe de l'utilisateur sur 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. Connectez-vous à la nouvelle interface utilisateur Edge en tant que nouvel utilisateur avec le mot de passe défini à l'étape précédente. L'utilisateur peut définir un nouveau mot de passe après s'être connecté à l' interface utilisateur.

LDAP ne se réplique pas

Problème constaté

De nombreuses installations Edge comportent plusieurs centres de données, par exemple DC-1 et DC-2. Lorsque vous vous connectez à la nouvelle interface utilisateur Edge dans DC-1 en tant qu'Administrateur de l'organisation, vous pouvez afficher la liste des utilisateurs, mais la même liste d'utilisateurs n'apparaît pas dans la nouvelle interface utilisateur Edge dans DC-2.

Messages d'erreur

Aucune erreur ne s'affiche. La nouvelle interface utilisateur Edge n'affiche pas la liste des utilisateurs qui auraient dû être répliqués sur tous les serveurs OpenLDAP.

Causes possibles :

En règle générale, ce problème est dû à une configuration de réplication OpenLDAP mal configurée, et non à l'installation elle-même. De plus, la réplication peut échouer si le réseau entre les serveurs OpenLDAP n'autorise pas le trafic sur le port 10389.

Diagnostic

Procédez comme suit pour diagnostiquer le problème :

  1. Vérifiez si ldapsearch renvoie des données de chaque serveur OpenLDAP :
    ldapsearch -x -W -D "cn=manager,dc=apigee,dc=com" -b "dc=apigee,dc=com" -LLL -H ldap://HOST_IP:10389
  2. Vérifiez si vous pouvez vous connecter à chaque nœud OpenLDAP à partir des autres nœuds OpenLDAP sur le port 10389. Si telnet est installé, utilisez la commande suivante :
    telnet <OpenLDAP_Peer_IP> 10389
    
  3. Si telnet n'est pas disponible, utilisez netcat pour vérifier la connectivité comme suit :

    nc -vz <OpenLDAP_Peer_IP> 10389
    
  4. Vérifiez la configuration de réplication de l'environnement d'exécution à l'aide de la ldapsearch commande :
    ldapsearch -o ldif-wrap=no -D cn=admin,cn=config -H ldap://:10389 -LLL -x -w LDAP_ADMIN_PASSWORD -b "cn=config" "(olcSyncrepl=*)" olcSyncrepl
    

    La sortie doit contenir une configuration semblable à la suivante :

    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. Vérifiez la configuration de l'environnement d'exécution pour l'attribut olcMultiProvider (anciennement olcMirrorMode) à l'aide de la ldapsearch commande pour vous assurer qu'il est défini sur 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
    

    Le résultat doit se présenter sous la forme suivante :

    dn: olcDatabase={2}mdb,cn=config
    olcMultiProvider: TRUE
  6. Recherchez les règles iptables et tcp wrapper. Supprimez toutes les règles qui n'autorisent pas les serveurs OpenLDAP pairs à communiquer entre eux. Collaborez avec votre administrateur réseau pour définir les règles de manière appropriée.
  7. Assurez-vous que le mot de passe du système OpenLDAP est le même sur chaque nœud OpenLDAP.
  8. Recherchez les caractères masqués dans les fichiers de configuration ldif utilisés pour configurer la réplication OpenLDAP N-Way en exécutant dos2unix sur les fichiers ldif qui ont été créés pour mettre à jour la configuration. En règle générale, un fichier ldif contenant des caractères incorrects empêche l'exécution de la commande ldapmodify et la réplication peut ne pas être configurée. Supprimez tous les caractères incorrects et enregistrez les fichiers de configuration.

Si le problème persiste, contactez l'assistance Apigee pour obtenir de l'aide sur la configuration de la réplication OpenLDAP N-Way.

Impossible de démarrer OpenLDAP

Problème constaté

OpenLDAP ne démarre pas.

Messages d'erreur

SLAPD Dead But Pid File Exists

Causes possibles :

Ce problème est généralement dû à un fichier de verrouillage qui est laissé sur le système de fichiers et qui doit être supprimé.

Diagnostic

Procédez comme suit pour diagnostiquer ce problème :

  1. Recherchez un verrou de processus slapd OpenLDAP ou un fichier pid à l'emplacement suivant :
    /opt/apigee/var/run/apigee-openldap/apigee-openldap.lock
    /opt/apigee/var/run/apigee-openldap/apigee-openldap.pid
  2. Supprimez le fichier de verrouillage et le fichier pid, le cas échéant, et essayez de redémarrer openldap.
     rm /opt/apigee/var/run/apigee-openldap/apigee-openldap.lock
     rm /opt/apigee/var/run/apigee-openldap/apigee-openldap.pid
  3. Si le processus slapd OpenLDAP démarre, ignorez les étapes ci-dessous.
  4. Si le processus slapd OpenLDAP ne démarre pas, essayez d'exécuter slapd en mode débogage et recherchez les erreurs :
    slapd -h ldap://:10389/ -u apigee -F /opt/apigee/data/apigee-openldap/slapd.d -d 255
    
  5. Les erreurs peuvent indiquer des problèmes de ressources. Vérifiez l'utilisation de la mémoire et du processeur sur le système.
  6. Vérifiez la version d'OpenLDAP et mettez-la à niveau si elle est ancienne. Recherchez les versions compatibles de OpenLDAP dans Logiciels compatibles.
    slapd -V
    
  7. Utilisez strace pour résoudre les problèmes liés au processus slapd et fournir la sortie strace à l'assistance Apigee :
    strace -tt -T -f -F -i -v -e read=all -s 8192 -e write=all -o /tmp/strace.out -p <pid>
    

Corruption des données OpenLDAP

Problème constaté

Les utilisateurs ne peuvent plus exécuter d'appels de gestion ni se connecter à la nouvelle interface utilisateur Edge. L'utilisation de l'utilitaire ldapsearch pour interroger les utilisateurs peut indiquer que l'utilisateur existe dans le datastore LDAP ou identifier d'éventuels utilisateurs ou rôles manquants.

Messages d'erreur

Unknown username and password combination.

Causes possibles :

En règle générale, ce problème peut être observé en raison de la corruption des données OpenLDAP. En général, les données OpenLDAP ne sont pas corrompues. Toutefois, dans le cas rare où cela se produit, la corruption peut être due à une défaillance du disque système ou à des problèmes d'espace disque.

Diagnostic

  1. Vérifiez l'espace disque sur le système sur lequel OpenLDAP est installé à l'aide de la commande ci-dessous :
    du -m /opt
    
  2. Si l'espace disque utilisé est très proche de 100%, cela indique que le problème est dû au manque d'espace disque sur votre système.
  3. Vérifiez la cohérence des données sur les nœuds LDAP :
    1. Sur chaque nœud LDAP, comparez le nombre d'utilisateurs et de rôles. Exécutez les commandes suivantes et comparez les résultats.
      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 
      Une différence dans le nombre entre les nœuds suggère une possible corruption des données.
    2. Vérifiez l'état de la réplication LDAP. Exécutez la commande suivante sur chaque nœud 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 
      Si la valeur contextCSN est identique sur tous les nœuds, la réplication LDAP fonctionne correctement.

Solution

Si votre système manque d'espace disque ou est sur le point d'en manquer, ajoutez plus d' espace disque pour garantir une disponibilité suffisante.

Une fois que vous disposez de suffisamment d'espace disque, utilisez l'une des solutions suivantes pour résoudre le problème de corruption des données LDAP :

  1. Restaurez les données OpenLDAP à partir de la sauvegarde.
  2. Nettoyez la base de données OpenLDAP en procédant comme suit :
    1. Arrêtez Management Server 2 et LDAP2.
    2. Restaurez LDAP1 à partir d'une sauvegarde de VM (ou d'une sauvegarde Apigee).
    3. Vérifiez le démarrage et la récupération de Management Server 1.
    4. Une fois que Management Server 1 et LDAP1 fonctionnent correctement, réinstallez LDAP2 à partir de zéro (en créant une ardoise complètement vierge).
    5. Configurez LDAP2 en mode lecture seule, ce qui permet à LDAP1 de se répliquer sur LDAP2.
    6. Utilisez ldapsearch pour vérifier que le nombre de lignes dans LDAP1 et LDAP2 correspond.
    7. Redémarrez Management Server 2 et la nouvelle interface utilisateur Edge sur le nœud 2, et vérifiez qu'ils démarrent correctement.

Pour obtenir des instructions détaillées, consultez l'outil de suivi des problèmes publics.

Solution 1 : Restaurer les données LDAP à partir de la sauvegarde

Sur un nœud OpenLDAP fonctionnel, effectuez une sauvegarde. La sauvegarde doit être effectuée régulièrement. Pour connaître les bonnes pratiques en matière de sauvegarde, consultez le Guide des opérations Apigee Private Cloud :

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

Vous pouvez suivre les étapes ci-dessous pour restaurer les données OpenLDAP à partir d'une sauvegarde valide.

  1. Arrêtez le nœud OpenLDAP pour lequel les données doivent être restaurées :
    /opt/apigee/apigee-service/bin/apigee-service apigee-openldap stop
    
  2. Accédez au répertoire de données OpenLDAP :
    cd /opt/apigee/data/apigee-openldap
    
  3. Sauvegardez les données OpenLDAP existantes à l'aide de la commande move :
    mv ldap ldap_orig
    
  4. Passez à l'utilisateur apigee :
    su apigee
    
  5. À partir du répertoire /opt/apigee/data/apigee-openldap, créez un répertoire de données OpenLDAP avec le nom d'origine :
    mkdir ldap
    
  6. Prenez la sauvegarde du sous-répertoire ldap_orig/DB_CONFIG de l'étape 3 et copiez-la dans le répertoire openldap.
    cp ldap_orig/DB_CONFIG ldap
    
  7. Pour restaurer les données à partir de la sauvegarde effectuée avec slapcat, utilisez slapadd pour importer le fichier ldif qui contient les données valides :
    slapadd -F /opt/apigee/data/apigee-openldap/slapd.d -l /tmp/ldap-backup.ldif
    
  8. Démarrez le processus OpenLDAP :
    /opt/apigee/apigee-service/bin/apigee-service apigee-openldap start
    

Solution 2 : Nettoyer la base de données LDAP

Les étapes suivantes effacent la base de données OpenLDAP pour fournir un nouveau départ. Cette solution peut être utilisée s'il n'existe aucune sauvegarde de données du dernier état dans lequel les données OpenLDAP fonctionnaient.

  1. Arrêtez le service OpenLDAP :
    /opt/apigee/apigee-service/bin/apigee-service apigee-openldap stop
    
  2. Accédez au répertoire de données OpenLDAP :
    cd /opt/apigee/data/apigee-openldap
    
  3. Sauvegardez les données OpenLDAP existantes à l'aide de la commande move :
    mv ldap ldap_orig
    
  4. Passez à l'utilisateur apigee :
    su apigee
    
  5. Créez un répertoire de données OpenLDAP avec le nom d'origine :
    mkdir ldap
    
  6. Prenez la sauvegarde du sous-répertoire ldap_orig/DB_CONFIG de l'étape 3 et copiez-la dans le répertoire openldap directory :
    cp ldap_orig/DB_CONFIG ldap
    
  7. Redémarrez le processus OpenLDAP :
    /opt/apigee/apigee-service/bin/apigee-service apigee-openldap start
    
  8. Redémarrez le serveur de gestion pour forcer l'actualisation des connexions à OpenLDAP :
    /opt/apigee/apigee-service/bin/apigee-service edge-management-server restart
    

Solution 3 : Réinitialiser OpenLDAP à une installation de base

Si la solution 2 ne résout pas le problème, vous pouvez réinitialiser OpenLDAP à une installation de base, comme décrit dans cette section.

Prérequis

Pour réinitialiser OpenLDAP, vous devez disposer des prérequis suivants :

  • La possibilité d'exécuter la configuration avec les identifiants d'administrateur système et d'administrateur LDAP racine.
  • L'accès à l'utilitaire ldapadd.
  • Le fichier de configuration silencieuse d'origine enregistré pour le nœud de gestion/LDAP.

Pour réinitialiser OpenLDAP, procédez comme suit :

  1. Réinstallez OpenLDAP et le serveur de gestion.
    1. Arrêtez le serveur openldap :
      apigee-service apigee-openldap stop
    2. Supprimez le dossier de données openldap corrompu :
      rm -rf /opt/apigee/data/apigee-openldap
    3. Désinstallez le composant openldap :
      apigee-service apigee-openldap uninstall
    4. Réinstallez le composant openldap à l'aide du même fichier de configuration que celui utilisé pour l'installation initiale :
      /opt/apigee/apigee-setup/bin/setup.sh -p ld -f configfile
      où configfile est le nom du fichier de configuration.
    5. Réinstallez le serveur de gestion à l'aide du fichier de configuration d'origine :
      /opt/apigee/apigee-setup/bin/setup.sh -p ms -f configfile

    Après avoir effectué ces étapes, les appels de l'API de gestion devraient fonctionner à nouveau uniquement avec le sysadmin compte. Toutefois, il n'est pas possible de se connecter à la nouvelle interface utilisateur Edge, et les appels de l'API de gestion avec d'autres utilisateurs ne fonctionneront pas.

  2. Ajoutez les entrées openldap manquantes pour les organisations qui existaient avant la corruption.

    Une fois l'étape ci-dessus terminée, openldap ne contiendra plus d'entrées pour les organisations qui existaient lorsque la corruption s'est produite. La majorité des données d'organisation réelles, telles que les bundles de proxy, sont stockées dans Cassandra ou Zookeeper et ne sont pas perdues. Toutefois, l'exécution du script setup-org n'ajoutera pas automatiquement les données openldap pour les organisations qui existent déjà dans Cassandra et Zookeeper. Ces données doivent être ajoutées manuellement pour chaque organisation qui existait avant la corruption en procédant comme suit :

    1. Créez un fichier ldif nommé missingLDAP.ldif avec le contenu suivant :
      # 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: @@@

      où orgname est l'organisation que vous essayez de recréer.

    2. Ajoutez les entités LDAP manquantes à l'aide de la commande suivante :
      ldapadd -x -w "OPENLDAP_ROOT_PASSWORD" -D "cn=manager,dc=apigee,dc=com" -H ldap://localhost:10389 -f missingLDAP.ldif

    Les étapes ci-dessus créeront les entrées manquantes pour une organisation existante, ainsi que les orgadmin autorisations pour cette organisation. Répétez les étapes pour chaque organisation à recréer. À ce stade, vous pouvez ajouter des utilisateurs orgadmin à une organisation, mais les autres rôles par défaut n'existent pas encore. Vous devez donc les ajouter à l'étape suivante.

  3. Ajoutez les rôles et autorisations par défaut manquants à une organisation existante.

    À l'aide du même fichier de configuration que celui utilisé initialement pour configurer l'une des organisations existantes, exécutez la commande suivante :

    /opt/apigee/apigee-service/bin/apigee-service apigee-provision create-roles -f configfile
  4. Après avoir suivi cette procédure, vous devez effectuer manuellement les opérations suivantes :

    • Ajoutez tous les rôles personnalisés qui existaient avant la corruption à l'aide de la nouvelle interface utilisateur Edge ou de l'API de gestion.
    • Ajoutez des utilisateurs aux rôles d'utilisateur pertinents.
  5. (Facultatif) Rétablissez la configuration d'authentification externalisée sur la gestion.

    Restaurez le /opt/apigee/customer/application/management-server.properties si la configuration n'a pas changé. Étant donné que la nouvelle interface utilisateur Edge n'a pas été réinstallée, /opt/apigee/customer/application/management-ui.properties reste le même après la restauration des identifiants du compte sysadmin avec la nouvelle installation du serveur de gestion.

  6. (Facultatif) Réinstallez Apigee mTLS sur le nœud de gestion.

    Si Apigee mTLS était installé précédemment, suivez le Guide d'installation d'Apigee mTLS pour le réinstaller sur le nœud du serveur de gestion.

Si le problème persiste, contactez l'assistance Apigee pour obtenir de l'aide.