OpenLDAP 문제 해결

Apigee Edge 문서입니다.
Go to the Apigee X 문서로 이동합니다.
info

이 섹션에서는 OpenLDAP 문제를 해결하는 데 필요한 정보와 안내를 제공합니다.

SMTP가 사용 중지되어 사용자가 비밀번호를 재설정해야 함

증상

Edge UI에서 SMTP가 설정되지 않은 경우 Edge에 추가된 새 사용자는 비밀번호를 설정할 방법이 필요합니다.

오류 메시지

Unknown username and password combination.

가능한 원인

SMTP가 설정되지 않았으므로 새 사용자는 '비밀번호를 잊으셨나요?' 링크에서 비밀번호를 설정하는 이메일을 받을 수 없습니다.

해상도

이 문제는 다음 중 한 가지 방법으로 해결할 수 있습니다.

해결 방법 1: SMTP 서버 구성

문서에 제공된 안내에 따라 SMTP 서버를 구성하여 사용자의 새 비밀번호를 설정합니다.

해결 방법 2: LDAP 사용

SMTP 서버를 구성할 수 없는 경우 아래 LDAP 명령어를 사용하여 사용자의 새 비밀번호를 설정합니다.

  1. 기존 조직 관리자는 아래와 같이 Edge UI를 통해 특정 사용자를 추가해야 합니다.

  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 파일을 열고 신규 사용자의 이메일 속성을 기반으로 추가된 신규 사용자의 dn을 찾습니다.
  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 UI에 로그인합니다. 사용자는 UI에 로그인한 후 새 비밀번호를 설정할 수 있습니다.

LDAP가 복제되지 않음

증상

많은 Edge 설치에는 DC-1, DC-2와 같은 여러 데이터 센터가 있습니다. 조직 관리자로 DC-1의 Edge UI에 로그인하면 사용자 목록을 볼 수 있지만 DC-2의 Edge UI에는 동일한 사용자 목록이 표시되지 않습니다.

오류 메시지

오류가 표시되지 않으며 Edge UI에 모든 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. 포트 10389에서 다른 OpenLDAP 노드의 각 OpenLDAP 노드에 연결할 수 있는지 확인합니다. 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 속성의 값에 대해 동일한 파일을 확인합니다. 값은 설정되어야 합니다.
    grep olcMirrorMode /opt/apigee/data/apigee-openldap/slapd.d/cn=config/olcDatabase={2}bdb.ldif
    
  6. iptables 및 tcp 래퍼 규칙을 확인합니다. 피어 OpenLDAP 서버가 서로 통신할 수 없는 규칙을 삭제하세요. 네트워크 관리자와 협력하여 규칙을 적절하게 설정합니다.
  7. OpenLDAP 시스템 비밀번호가 각 OpenLDAP 노드에서 동일한지 확인합니다.
  8. 구성을 업데이트하기 위해 만든 ldif 파일에 대해 dos2unix를 실행하여 N-Way OpenLDAP 복제를 구성하는 데 사용되는 ldif 구성 파일에서 숨겨진 문자를 확인합니다. 일반적으로 잘못된 문자가 있는 ldif 파일로 인해 ldapmodify 명령어가 실행되지 않으므로 복제가 설정되지 않을 수 있습니다. 잘못된 문자를 삭제하고 구성 파일을 저장합니다.

문제가 계속되면 Apigee 지원팀에 문의하여 N-Way OpenLDAP 복제 설정에 관한 지원을 받으세요.

OpenLDAP를 시작할 수 없음

증상

OpenLDAP가 시작되지 않습니다.

오류 메시지

SLAPD Dead But Pid File Exists

가능한 원인

이 문제는 일반적으로 파일 시스템에 남아 있어 삭제해야 하는 잠금 파일로 인해 발생합니다.

진단

다음 단계에 따라 이 문제를 진단합니다.

  1. 다음 위치에서 OpenLDAP slapd 프로세스 잠금 또는 pid 파일을 확인합니다.
    /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 slapd 프로세스가 시작되면 아래 단계를 건너뜁니다.
  4. OpenLDAP slapd 프로세스가 시작되지 않으면 디버그 모드에서 slapd를 실행하고 오류를 찾아보세요.
    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를 사용하여 slapd 프로세스를 문제 해결하고 Apigee 지원팀에 strace 출력을 제공합니다.
    strace -tt -T -f -F -i -v -e read=all -s 8192 -e write=all -o /tmp/strace.out -p <pid>
    

OpenLDAP 데이터 손상

증상

사용자가 더 이상 관리 호출을 실행하거나 Edge UI에 로그인할 수 없습니다. ldapsearch 유틸리티를 사용하여 사용자를 쿼리하면 사용자가 LDAP 데이터 스토어에 있음을 나타내거나 누락된 사용자 또는 역할을 식별할 수 있습니다.

오류 메시지

Unknown username and password combination.

가능한 원인

일반적으로 이 문제는 OpenLDAP 데이터 손상으로 인해 발생할 수 있습니다. 일반적으로 OpenLDAP 데이터는 손상되지 않습니다. 하지만 드물게 손상되는 경우 손상은 시스템 디스크 오류 또는 디스크 공간 문제로 인해 발생할 수 있습니다.

진단

  1. 아래 명령어를 사용하여 OpenLDAP가 설치된 시스템의 디스크 공간을 확인합니다.
    du -m /opt
    
  2. 사용된 디스크 공간이 100%에 매우 가까우면 이 문제의 원인 이 시스템의 디스크 공간 부족임을 나타냅니다.
  3. LDAP 노드 간의 데이터 일관성을 확인합니다.
    1. 각 LDAP 노드에서 사용자 및 역할 수를 비교합니다. 다음 명령어를 실행하고 결과를 비교합니다.
      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 
      노드 간의 개수 차이는 데이터 손상을 나타낼 수 있습니다.
    2. LDAP 복제 상태를 확인합니다. 각 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 
      모든 노드에서 contextCSN 값이 동일하면 LDAP 복제가 올바르게 작동하는 것입니다.

해상도

시스템에 디스크 공간이 부족하거나 디스크 공간이 거의 부족한 경우 디스크 공간을 추가하여 충분한 가용성을 확보합니다.

디스크 공간이 충분하면 다음 해결 방법 중 하나를 사용하여 LDAP 데이터 손상 문제를 해결합니다.

  1. 백업에서 OpenLDAP 데이터를 복원합니다.
  2. 다음 단계에 따라 OpenLDAP 데이터베이스를 정리합니다.
    1. 관리 서버 2LDAP2 를 중지합니다.
    2. VM 백업 (또는 Apigee 백업)에서 LDAP1 을 복원합니다.
    3. 관리 서버 1 의 시작 및 복구를 확인합니다.
    4. 관리 서버 1LDAP1 이 올바르게 작동하면 LDAP2 를 처음부터 다시 설치합니다 (완전히 빈 상태로 만들기).
    5. LDAP2 를 읽기 전용 모드로 설정하여 LDAP1LDAP2 로 복제되도록 허용합니다.
    6. ldapsearch를 사용하여 LDAP1LDAP2 의 줄 수가 일치하는지 확인합니다.
    7. 관리 서버 2UI2 를 다시 시작하고 성공적으로 시작되는지 확인합니다.

자세한 내용은 공개 Issue Tracker를 참조하세요.

해결 방법 1: 백업에서 LDAP 데이터 복원

작동 중인 OpenLDAP 노드에서 백업을 만듭니다. 백업은 정기적으로 실행해야 합니다. 백업에 관한 권장사항은 Apigee Private Cloud 운영 가이드 를 참조하세요.

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. move 명령어를 사용하여 기존 OpenLDAP 데이터를 백업합니다.
    mv ldap ldap_orig
    
  4. apigee 사용자로 전환합니다.
    su apigee
    
  5. /opt/apigee/data/apigee-openldap 디렉터리에서 원래 이름으로 새 OpenLDAP 데이터 디렉터리를 만듭니다.
    mkdir ldap
    
  6. 3단계에서 ldap_orig/DB_CONFIG 하위 디렉터리의 백업을 가져와서 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. move 명령어를 사용하여 기존 OpenLDAP 데이터를 백업합니다.
    mv ldap ldap_orig
    
  4. apigee 사용자로 전환합니다.
    su apigee
    
  5. 원래 이름으로 새 OpenLDAP 데이터 디렉터리를 만듭니다.
    mkdir ldap
    
  6. 3단계에서 ldap_orig/DB_CONFIG 하위 디렉터리의 백업을 가져와서 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. 이 절차를 따른 후에는 다음을 수동으로 실행해야 합니다.

    • UI 또는 관리 API를 사용하여 손상되기 전에 존재했던 커스텀 역할을 추가합니다.
    • 관련 사용자 역할에 사용자를 추가합니다.
  5. (선택사항) 관리에서 외부 인증 구성을 다시 설정합니다.

    구성 변경이 없는 경우 /opt/apigee/customer/application/management-server.properties을(를) 복원합니다. UI가 다시 설치되지 않았으므로 /opt/apigee/customer/application/ui.properties는 관리의 새 설치로 sysadmin의 인증 정보가 복원된 경우 동일하게 유지되어야 합니다.

  6. (선택사항) 관리 노드에 Apigee mTLS를 다시 설치합니다.

    Apigee mTLS가 이전에 설치된 경우 Apigee mTLS 설치 가이드에 따라 관리 서버 노드에 다시 설치 합니다.

문제가 계속되면 Apigee 지원팀에 문의하여 추가 지원을 받으세요.