OpenLDAP 문제 해결

현재 Apigee Edge 문서가 표시되고 있습니다.
Apigee X 문서로 이동
정보

이 섹션에서는 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가 복제되지 않음

증상

에지 설치에는 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 속성의 값을 확인합니다. TRUE 값으로 설정해야 합니다.
    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. /opt/apigee/var/run/apigee-openldap/apigee-openldap.lock
    /opt/apigee/var/run/apigee-openldap/apigee-openldap.pid
    
    위치에서 OpenLDAP slapd 프로세스 잠금 또는 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%에 아주 가까우면 이 문제의 원인이 시스템의 디스크 공간 부족임을 나타냅니다.

해상도

시스템의 디스크 공간이 부족하거나 디스크 공간이 거의 소진되었다면 디스크 공간을 추가하여 디스크 공간이 충분한지 확인하세요.

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

  1. 백업에서 OpenLDAP 데이터를 복원합니다.
  2. OpenLDAP 데이터베이스를 정리합니다.

해결 방법 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. 이동 명령어를 사용하여 기존 OpenLDAP 데이터를 백업합니다.
    mv ldap ldap_orig
    
  4. Apigee 사용자로 전환합니다.
    su apigee
    
  5. /opt/apigee/data/apigee-openldap 디렉터리에서 원래 이름(
    mkdir ldap
    
    )으로 새 OpenLDAP 데이터 디렉터리를 만듭니다.
  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. 이동 명령어를 사용하여 기존 OpenLDAP 데이터를 백업합니다.
    mv ldap ldap_orig
    
  4. Apigee 사용자로 전환합니다.
    su apigee
    
  5. 원래 이름(
    mkdir ldap
    
    )으로 새 OpenLDAP 데이터 디렉터리를 만듭니다.
  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. 초기 설치에 사용된 구성 파일(
      /opt/apigee/apigee-setup/bin/setup.sh -p ld -f configfile
      )을 사용하여 openldap 구성요소를 다시 설치합니다. 여기서 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가 동일하게 유지되어야 합니다.

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

    이전에 Apigee mTLS를 설치한 경우 Apigee mTLS 설치 가이드에 따라 관리 서버 노드에 다시 설치하세요.

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