פתרון בעיות של OpenLDAP

מוצג המסמך של Apigee Edge.
עוברים אל מסמכי תיעוד של Apigee X.
מידע

הקטע הזה מספק מידע והנחיות לפתרון בעיות של OpenLDAP.

SMTP מושבת והמשתמשים צריכים לאפס סיסמה

תיאור הבעיה

אם SMTP לא מוגדר בממשק המשתמש של Edge, משתמשים חדשים שנוספו ל-Edge צריכים סיסמה.

הודעות שגיאה

Unknown username and password combination.

סיבות אפשריות

משתמשים חדשים לא מצליחים לקבל אימייל מהדף 'שכחת את הסיסמה?' קישור להגדרה סיסמה מכיוון שלא הוגדר SMTP.

רזולוציה

אפשר לטפל בבעיה הזו באחת מהדרכים הבאות:

פתרון מס' 1: הגדרת שרת SMTP

מגדירים את שרת ה-SMTP להגדיר סיסמה חדשה למשתמש לפי ההוראות שמוצגות במסמכי התיעוד.

פתרון מס' 2: שימוש LDAP

אם אין לך אפשרות להגדיר את שרת ה-SMTP, עליך להשתמש בפקודות ה-LDAP שבהמשך כדי להגדיר את סיסמה חדשה למשתמש:

  1. מנהל ארגון קיים צריך להוסיף את המשתמש הספציפי דרך ממשק המשתמש של Edge, כפי שמוצג בהמשך:

  2. משתמשים בפקודה ldapsearch כדי למצוא את השם הייחודי של המשתמש (dn) ומפנה את הפלט לקובץ:
    ldapsearch -w Secret123 -D "cn=manager,dc=apigee,dc=com" -b "dc=apigee,dc=com" -LLL -h localhost -p 10389 > ldap.txt
    

    הנה דוגמה לרשומת dn של משתמש, יחד עם המאפיינים של המשתמש:

    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. פותחים את הקובץ ldap.txt ומוצאים את ה-DNS של המשתמש החדש שנוסף. על סמך מאפיין האימייל של המשתמש החדש.
  4. כדי להוסיף סיסמה למשתמש החדש, מריצים את הפקודה ldappassword באמצעות ה-DNS שלו. בדוגמה הזו מגדירים את סיסמת המשתמש ל-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. מתחברים לממשק המשתמש של Edge בתור המשתמש החדש עם הסיסמה שהוגדרה בשלב הקודם. משתמש יכול להגדיר סיסמה חדשה לאחר התחברות לממשק המשתמש.

לא מתבצע שכפול של LDAP

תיאור הבעיה

בהתקנות רבות של Edge יש כמה מרכזי נתונים, כמו DC-1 ו-DC-2. בזמן הרישום ביומן בממשק המשתמש של Edge ב-DC-1, בתור אדמין ארגוני, אפשר לראות את רשימת המשתמשים אבל את אותה רשימת משתמשים לא מופיע בממשק המשתמש של Edge ב-DC-2.

הודעות שגיאה

לא מופיעות שגיאות, בממשק המשתמש של Edge פשוט לא מוצגת רשימת המשתמשים שצריכים לשכפל בכל שרתי OpenLDAP.

סיבות אפשריות

בדרך כלל הסיבה לבעיה הזו היא תצורה שגויה של רפליקציית OpenLDAP, ולא את ההתקנה עצמה. בנוסף, ייתכן שהרפליקציה תשתבש אם הרשת בין שרתי OpenLDAP לא מאפשר תנועה ביציאה 10389.

אבחון

כדי לאבחן את הבעיה, יש לפעול לפי השלבים הבאים:

  1. בודקים אם ldapsearch מחזיר נתונים מכל שרת OpenLDAP:
    ldapsearch -W -D "cn=manager,dc=apigee,dc=com" -b "dc=apigee,dc=com" -LLL -h <host-ip> -p 10389
    
  2. בודקים אם אפשר להתחבר לכל צומת OpenLDAP מצמתים אחרים של OpenLDAP ביציאה 10389. אם התקנתם את telnet, משתמשים בפקודה הבאה:
    telnet <OpenLDAP_Peer_IP> 10389
    
  3. אם telnet לא זמין, משתמשים ב-netcat כדי לבדוק את הקישוריות באופן הבא:

    nc -vz <OpenLDAP_Peer_IP> 10389
    
  4. בודקים את תצורת הרפליקציה בקובץ הבא:
    /opt/apigee/data/apigee-openldap/slapd.d/cn=config/olcDatabase={2}bdb.ldif
    

    הקובץ צריך להכיל הגדרות כאלה:

    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. בנוסף, בדוק באותו קובץ את הערך של המאפיין olcMirrorMode. הוא צריך להיות מוגדר לערך TRUE:
    grep olcMirrorMode /opt/apigee/data/apigee-openldap/slapd.d/cn=config/olcDatabase={2}bdb.ldif
    
  6. בדקו אם יש מכשירי iptable וכללי wrapper של tcp. יש להסיר כללים שאינם מאפשרים שרתי OpenLDAP עמיתים כדי לתקשר זה עם זה. עבוד עם מנהל הרשת כדי להגדיר את הכללים בהתאם.
  7. צריך לוודא שסיסמה של מערכת OpenLDAP זהה בכל צומת של OpenLDAP.
  8. חיפוש תווים נסתרים בקובצי תצורת ldif שמשמשים להגדיר רפליקציה של OpenLDAP עם N-Way על ידי הרצת dos2unix עם קובצי ldif נוצר כדי לעדכן את ההגדרות האישיות. בדרך כלל קובץ ldif עם תווים שגויים יגרום הפעלת הפקודה ldapmodify תיכשל ולכן לא תהיה אפשרות להגדיר רפליקציה. הסרת ביקורות רעות תווים ולשמור את קובצי התצורה.

אם הבעיה נמשכת, צור קשר עם תמיכה ב-Apigee לסיוע בהגדרת רפליקציית N-Way OpenLDAP.

לא ניתן להפעיל את OpenLDAP

תיאור הבעיה

התכונה OpenLDAP לא מופעלת.

הודעות שגיאה

SLAPD Dead But Pid File Exists

סיבות אפשריות

הבעיה הזו נגרמת בדרך כלל מקובץ נעילה שנמצא מאחור במערכת הקבצים, ונדרש להסרה.

אבחון

כדי לאבחן את הבעיה, יש לפעול לפי השלבים הבאים:

  1. מחפשים אם יש קובץ pid או נעילה של תהליך יחיד ב-OpenLDAP במיקום הבא:
    /opt/apigee/var/run/apigee-openldap/apigee-openldap.lock
    /opt/apigee/var/run/apigee-openldap/apigee-openldap.pid
    
  2. מוחקים את קובץ הנעילה וקובץ ה-PID (אם יש כאלה), ומנסים להפעיל מחדש את openldap.
    rm /opt/apigee/var/run/apigee-openldap/apigee-openldap.lock
    Rm /opt/apigee/var/run/apigee-openldap/apigee-openldap.pid
    
  3. אם מתחיל התהליך של OpenLDAP, דלגו על השלבים הבאים.
  4. אם התהליך של OpenLDAP לא מתחיל, אפשר לנסות להפעיל את הטבלה במצב ניפוי באגים ולחפש את כל השגיאות:
    slapd -h ldap://:10389/ -u apigee -F /opt/apigee/data/apigee-openldap/slapd.d -d 255
    
  5. שגיאות יכולות להצביע על בעיות במשאבים. לבדוק את השימוש בזיכרון ובמעבד (CPU) במערכת.
  6. יש לבדוק את הגרסה של OpenLDAP ולשדרג אם היא ישנה. חיפוש הגרסאות הנתמכות של פתיחת LDAP במסמך תוכנות נתמכות.
    slapd -V
    
  7. שימוש ב-strace כדי לפתור בעיות בתהליך שלא צוין, וכדי לספק פלט מעקב ל- תמיכה ב-Apigee:
    strace -tt -T -f -F -i -v -e read=all -s 8192 -e write=all -o /tmp/strace.out -p <pid>
    

פגיעה בנתונים ב-OpenLDAP

תיאור הבעיה

המשתמשים כבר לא יכולים לבצע הפעלות ניהול או להתחבר לממשק המשתמש של Edge. שימוש ב-ldapsearch שירות לשליחת שאילתות על המשתמשים יכול לציין שהמשתמש קיים במאגר הנתונים של LDAP, או לזהות משתמשים או תפקידים חסרים.

הודעות שגיאה

Unknown username and password combination.

סיבות אפשריות

בדרך כלל, ייתכן שהבעיה הזו נגרמת בגלל פגמים בנתוני OpenLDAP. בדרך כלל, OpenLDAP הנתונים לא נפגמים. אבל במקרים נדירים, השחיתות עשויה לנבוע כשל בדיסק במערכת או בעיות של מקום בכונן.

אבחון

  1. בודקים את נפח הדיסק במערכת שמותקנת בה OpenLDAP באמצעות הפקודה הבאה:
    du -m /opt
    
  2. אם נפח האחסון שנוצל קרוב מאוד ל-100%, זה סימן לכך לפתרון הבעיה הזו מכיוון שנפח האחסון בדיסק של המערכת נגמר.

רזולוציה

אם למערכת שלכם נגמר שטח הדיסק או שכמעט נגמר מקום הדיסק, הוסיפו עוד מקום בכונן כדי להבטיח שיש מספיק מקום בכונן.

אחרי שיהיה מספיק מקום בכונן, צריך להשתמש באחד מהפתרונות הבאים כדי לטפל בנתוני ה-LDAP. בעיית שחיתות:

  1. משחזרים את נתוני OpenLDAP מהגיבוי.
  2. מנקים את מסד הנתונים OpenLDAP.

פתרון מס' 1 שחזר את נתוני LDAP מהגיבוי

בצומת OpenLDAP פעיל, מבצעים גיבוי. צריך לבצע את הגיבוי באופן קבוע. צפייה מדריך לפעולות בענן הפרטי של Apigee ריכזנו כאן שיטות מומלצות לגבי גיבויים:

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

כדי לשחזר את נתוני OpenLDAP מגיבוי טוב, יש לבצע את השלבים הבאים.

  1. מפסיקים את צומת OpenLDAP שעבורו צריך לשחזר את הנתונים:
    /opt/apigee/apigee-service/bin/apigee-service apigee-openldap stop
    
  2. שינוי הספרייה לספריית הנתונים OpenLDAP:
    cd /opt/apigee/data/apigee-openldap
    
  3. מגבים את הנתונים הקיימים של OpenLDAP באמצעות פקודת ההעברה:
    mv ldap ldap_orig
    
  4. מעבר למשתמש ב-apigee:
    su apigee
    
  5. יצירת קובץ OpenLDAP חדש מהספרייה /opt/apigee/data/apigee-openldap עם השם המקורי:
    mkdir ldap
    
  6. יוצרים את הגיבוי של ספריית המשנה ldap_orig/DB_CONFIG משלב 3, ומעתיקים אותו אל ספריית openldap.
    cp ldap_orig/DB_CONFIG ldap
    
  7. כדי לשחזר נתונים מהגיבוי שבוצעו באמצעות slapcat, משתמשים ב-slayeradd כדי לייבא את ה-ldif מכיל את הנתונים הטובים:
    slapadd -F /opt/apigee/data/apigee-openldap/slapd.d -l /tmp/ldap-backup.ldif
    
  8. מתחילים את תהליך OpenLDAP:
    /opt/apigee/apigee-service/bin/apigee-service apigee-openldap start
    

פתרון מס' 2 נקה את ה-LDAP מסד נתונים

כדי להתחיל מחדש, יש לבצע את השלבים הבאים למחיקת מסד הנתונים OpenLDAP. הפתרון הזה יכול יש להשתמש בו אם אין גיבוי נתונים במצב האחרון שבו נתוני OpenLDAP פעלו.

  1. הפסקת השירות OpenLDAP:
    /opt/apigee/apigee-service/bin/apigee-service apigee-openldap stop
    
  2. שינוי הספרייה לספריית הנתונים OpenLDAP:
    cd /opt/apigee/data/apigee-openldap
    
  3. מגבים את הנתונים הקיימים של OpenLDAP באמצעות פקודת ההעברה:
    mv ldap ldap_orig
    
  4. מעבר למשתמש ב-apigee:
    su apigee
    
  5. יוצרים ספריית נתונים חדשה מסוג OpenLDAP עם השם המקורי:
    mkdir ldap
    
  6. לוקחים את ספריית המשנה ldap_orig/DB_CONFIG לגיבוי משלב 3 ומעתיקים אותה אל ה-Openldap ספרייה:
    cp ldap_orig/DB_CONFIG ldap
    
  7. מפעילים מחדש את תהליך OpenLDAP:
    /opt/apigee/apigee-service/bin/apigee-service apigee-openldap start
    
  8. צריך להפעיל מחדש את שרת הניהול כדי לאלץ רענון של החיבורים ל-OpenLDAP:
    /opt/apigee/apigee-service/bin/apigee-service edge-management-server restart
    

פתרון מס' 3 איפוס של OpenLDAP להתקנה בסיסית

אם פתרון מס' 2 לא פותר את הבעיה, ניתן לאפס את OpenLDAP להתקנה בסיסית, כמתואר בסעיף הזה.

דרישות מוקדמות

כדי לאפס את OpenLDAP, יש צורך בדרישות המוקדמות הבאות:

  • יכולת להפעיל את ההגדרה עם פרטי כניסה של מנהל מערכת ופרטי כניסה בסיסיים של LDAP.
  • גישה לכלי השירות ldapadd.
  • קובץ התצורה השקט המקורי שנשמר לצומת הניהול/LDAP.

כדי לאפס את OpenLDAP, מבצעים את השלבים הבאים:

  1. מתקינים מחדש את OpenLDAP ואת שרת הניהול.
    1. עוצרים את השרת openldap:
      apigee-service apigee-openldap stop
    2. מוחקים את תיקיית הנתונים openldap הפגומה:
      rm -rf /opt/apigee/data/apigee-openldap
    3. מסירים את הרכיב openldap:
      apigee-service apigee-openldap uninstall
    4. צריך להתקין מחדש את הרכיב openldap באמצעות אותו קובץ תצורה שבו השתמשת עבור ההתקנה הראשונית:
      /opt/apigee/apigee-setup/bin/setup.sh -p ld -f configfile
      כאשר configfile הוא השם של קובץ התצורה.
    5. מתקינים מחדש את שרת הניהול באמצעות קובץ התצורה המקורי:
      /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: @@@

      כאשר orgname הוא הארגון שרוצים ליצור מחדש.

    2. מוסיפים את ישויות ה-LDAP החסרות באמצעות הפקודה הבאה:
      ldapadd -x -w  -D "cn=manager,dc=apigee,dc=com" -H ldap://localhost:10389 -f missingLDAP.ldif

    השלבים שלמעלה ייצרו את הרשומות החסרות עבור ארגון קיים, ו-orgadmin הרשאות לארגון הזה. חוזרים על השלבים בכל ארגון שצריך ליצור מחדש. בשלב הזה, אפשר להוסיף orgadmin משתמשים לארגון, אבל תפקידי ברירת המחדל עדיין לא קיימים, לכן צריך להוסיף אותם בשלב הבא.

  3. יש להוסיף את תפקידי ברירת המחדל וההרשאות החסרים לארגון קיים.

    משתמשים באותו קובץ תצורה ששימש בהתחלה כדי להגדיר את אחד מהארגונים הקיימים, מריצים את הפקודה הבאה:

    /opt/apigee/apigee-service/bin/apigee-service apigee-provision create-roles -f configfile
  4. לאחר ביצוע התהליך, תצטרכו לבצע באופן ידני:

    • מוסיפים תפקידים בהתאמה אישית שהיו קיימים לפני הפגיעה באמצעות ממשק המשתמש או ה-Management API,
    • מוסיפים את כל המשתמשים לתפקידי המשתמשים הרלוונטיים.
  5. (אופציונלי) הפעלה מחדש של הגדרת אימות חיצוני בניהול.

    צריך לשחזר את /opt/apigee/customer/application/management-server.properties אם התצורה לא השתנתה. מאחר שממשק המשתמש לא הותקן מחדש, הערך של /opt/apigee/customer/application/ui.properties צריך להישאר ללא שינוי בהינתן פרטי הכניסה של מנהל המערכת שוחזרו עם ההתקנה החדשה של הניהול.

  6. (אופציונלי) מתקינים מחדש את Apigee mTLS בצומת ניהול.

    אם Apigee mTLS הותקנה בעבר, יש לפעול לפי המדריך להתקנת Apigee mTLS כדי להתקין מחדש אותו בצומת של שרת הניהול.

אם הבעיה נמשכת, צריך לפנות אל Apigee תמיכה כדי לקבל עזרה נוספת.