פתרון בעיות של 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
    

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

    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 כדי להוסיף סיסמה למשתמש החדש באמצעות ה-dn שלו. בדוגמה הזו, הגדרת הסיסמה של המשתמש כ-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 ו-tcp wrapper. צריך להסיר את כל הכללים שלא מאפשרים לשרתי OpenLDAP של רשתות שכנות לתקשר ביניהם. מומלץ לעבוד עם מנהל הרשת כדי להגדיר את הכללים בהתאם.
  7. צריך לוודא שהסיסמה של המערכת OpenLDAP זהה בכל צומת OpenLDAP.
  8. כדי לחפש תווים מוסתרים בקובצי התצורה מסוג ldif שמשמשים להגדרת שכפול N-Way OpenLDAP, צריך להריץ את dos2unix על קובצי ה-ldif שנוצרו כדי לעדכן את ההגדרה. בדרך כלל קובץ ldif שיש בו תווים לא תקין עלול לגרום לפקודה ldapmodify לא לפעול, ולכן לא ניתן להגדיר שכפול. צריך להסיר תווים שגויים ולשמור את קובצי התצורה.

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

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

תיאור הבעיה

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

הודעות שגיאה

SLAPD Dead But Pid File Exists

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

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

אבחון

כדי לאבחן את הבעיה:

  1. עליך לחפש מנעול OpenLDAP או קובץ 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) לא מתחיל, אפשר לנסות להריץ את ה-Stt במצב ניפוי באגים ולחפש את השגיאות:
    slapd -h ldap://:10389/ -u apigee -F /opt/apigee/data/apigee-openldap/slapd.d -d 255
    
  5. השגיאות עשויות להצביע על בעיות במשאבים. בדיקת ניצול הזיכרון והמעבד (CPU) במערכת.
  6. בדוק את הגרסה של OpenLDAP ושדרג אם היא ישנה. אפשר לבדוק מהן הגרסאות הנתמכות של OpenLDAP במסמך תוכנות נתמכות.
    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. מעבר למשתמש API:
    su apigee
    
  5. מהספרייה /opt/apigee/data/apigee-openldap, יוצרים ספריית נתונים חדשה של OpenLDAP עם השם המקורי:
    mkdir ldap
    
  6. יוצרים גיבוי של ספריית המשנה ldap_orig/DB_CONFIG משלב 3 ומעתיקים אותו לספרייה openldap.
    cp ldap_orig/DB_CONFIG ldap
    
  7. כדי לשחזר נתונים מגיבוי שנקלט באמצעות slapcat, יש להשתמש ב-slapadd כדי לייבא את קובץ ה-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. מעבר למשתמש API:
    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 יישאר ללא שינוי מפני שפרטי הכניסה של ה-sysadmin שוחזרו לאחר ההתקנה החדשה של הניהול.

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

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

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