인증 업무 공간에서 LDAP 프로토콜을 사용하여 SaltStack Config에 대한 디렉토리 서비스를 구성할 수 있습니다. 이 프로토콜은 Active Directory 또는 Microsoft Azure와 같은 서비스에 연결하는 데 사용됩니다.

참고: 필요한 경우 한 번에 두 개 이상의 시스템을 사용하여 SaltStack Config에서 사용자를 인증할 수 있습니다. 예를 들어, SAML 기반 IdP 또는 LDAP 기반 IdP를 둘 다 사용하는 동시에 RaaS 서버에 기본적으로 일부 사용자 자격 증명을 저장할 수 있습니다. 단, SaltStack Config는 동시에 두 개의 SAML 제공자 또는 두 개의 LDAP 제공자를 구성하도록 허용하지 않습니다.

SaltStack Config는 다음 백엔드 프로세스를 사용하여 LDAP 기반 시스템을 인증합니다.

  • 미리 보기 - 연결 설정을 미리 볼 때 SaltStack Config는 LDAP 서버에서 사용자 및 그룹의 샘플 목록을 검색하여 사용자가 올바른 구성 매개 변수를 입력했는지 확인할 수 있도록 합니다.
  • 로그인 - 사용자가 SaltStack Config 로그인 양식에 자격 증명을 입력하면 백엔드 서버는 해당 시점에 데이터베이스에서 일치하는 항목을 확인합니다. 그런 다음 다단계 조회 프로세스를 시작하고 일치 항목을 찾으면 사용자를 인증합니다. 이 조회 프로세스의 경우, 사용자가 처음 로그인할 때까지 활성화된 그룹의 활성화된 개별 사용자는 역할 업무 공간에 나타나지 않습니다.
  • 백그라운드 작업 - SaltStack Config는 백그라운드 작업을 주기적으로 실행하여 디렉토리 서비스 연결에서 각각의 연결된 그룹 및 사용자를 조회하여 여전히 존재하는지 확인합니다. 그룹 또는 사용자가 제거된 경우 백엔드 서버는 데이터베이스에서 해당 링크를 비활성화합니다.
  • 아카이브된 그룹 및 사용자 - 디렉토리 서비스 연결에서 제거한 모든 그룹은 아카이브됩니다. 이러한 그룹은 비활성 상태이고 사용자가 로그인할 수 없지만 역할 업무 공간에 계속 표시되고 선택할 수 있습니다. 역할 업무 공간에 이전에 표시되었지만 현재 제거된 사용자도 마찬가지입니다.
  • 중첩된 그룹 - 중첩된 그룹으로 작업할 때 상위 그룹을 사용하도록 설정하면 기본적으로 모든 하위 그룹도 사용하도록 설정됩니다.

LDAP 연결 구성

LDAP를 구성하려면 먼저 연결을 생성한 다음 특정 LDAP 사용자 및 그룹을 사용하도록 설정하여 SaltStack Config에서 인증합니다. 그룹 또는 사용자를 활성화한 후에는 RBAC(역할 기반 액세스 제어) 설정을 정의할 수 있습니다.

Active Directory 또는 OpenLDAP와 같은 디렉토리 서비스에 맞게 사용자 지정된 기본 설정으로 필드를 미리 채우도록 선택할 수 있습니다.

참고: 다음 단계는 전체 LDAP 시스템 레이아웃을 이해하는 숙련된 LDAP 또는Active Directory 관리자가 완료해야 합니다. 지원이 필요한 경우 관리자에게 문의하십시오.

LDAP 디렉토리 서비스를 설정하려면:

  1. (선택 사항) LDAP를 구성하기 전에 타사 도구를 사용하여 연결 및 쿼리를 테스트하는 것이 유용할 수 있습니다. AD 사용자의 경우 LDP 또는 ADSI 편집을 사용할 수 있습니다. Linux 사용자의 경우 권장되는 도구는 ldapsearch입니다.
    참고: 이러한 도구를 사용하여 테스트하는 방법에 대한 자세한 내용은 지원 센터에서 디렉토리 서비스 연결을 확인하고 문제를 해결하는 방법을 참조하십시오.
  2. 사이드 메뉴에서 관리 > 인증을 클릭합니다.
  3. 생성을 클릭합니다.
  4. 구성 유형 메뉴에서 LDAP를 선택합니다.
  5. (선택 사항) 설정 아래에서 기본값 미리 채우기를 클릭하고 드롭다운에서 디렉토리 서비스를 선택합니다.

    선택 항목에 따라 기본 항목이 채워집니다. 다만, 사용자 검색 DN과 같은 일부 항목은 불완전합니다. 항목이 디렉토리 서비스 스키마와 일치하는지 확인하고 자리 표시자 텍스트를 서비스에 대한 올바른 값으로 바꿔야 합니다.

  6. LDAP 연결에 대한 정보를 입력하거나 확인합니다.

    기본

    필드 설명
    이름 LDAP 연결의 이름입니다. 이것은 표시 이름일 뿐이며 인증 백엔드를 다른 항목과 구별하는 데 도움이 되는 이름을 입력하면 유용합니다.
    호스트 FQDN 또는 IP 주소 형식의 LDAP 호스트 서버 주소입니다.
    포트 LDAP 서버가 구성된 포트입니다. 기본값은 암호화되지 않은 LDAP의 경우 389이고 LDAP over SSL의 경우 636입니다.
    백그라운드 동기화 SaltStack Config는 정의된 간격(분 단위)으로 인증 백엔드에 대해 모든 사용자 및 그룹을 검증합니다.
    SSL
    SSL 사용
    RaaS 서버 설정에 지정된 인증서를 사용하여 SSL(Secure Sockets Layer)을 통해 LDAP 서버에 연결하려면 선택합니다. 구성이 제공되지 않으면 시스템 인증서 저장소가 SSL연결의 유효성을 검사하는 데 사용됩니다. RaaS 서버 설정에 대한 자세한 내용은 SaltStack Config 설치 및 구성 가이드의 SSL 인증서 설정을 참조하십시오.
    중요: SSL 사용을 선택하는 것이 가장 좋습니다. 이 옵션을 선택하지 않은 상태로 두면 SaltStack Config는 비보안 연결을 통해 일반 텍스트로 정보를 전송합니다.
    인증서의 유효성 검사
    연결 시 SSL 인증서의 유효성을 검사하려면 선택합니다. 유효성 검사를 건너뛰려면(예를 들어 자체 서명된 인증서를 사용하는 경우) 선택하지 않은 상태로 둡니다(운영 환경에는 권장되지 않음).

    인증

    필드 설명
    인증 기본 DN

    기본 LDAP 고유 이름입니다. 그룹 및 사용자가 쿼리되는 위치입니다(예: DC=sse,DC=example,DC=com).

    참고: LDAP 세부 정보 페이지에는 아래 설명된 Person 개체 클래스, 계정 특성 이름, 그룹 클래스, 그룹 특성 이름, 동기화 스케줄링에 대한 별도의 입력 필드가 포함되어 있습니다. 따라서 기본 DN 필드에 이러한 개체를 포함하지 마십시오.
    관리자 Bind DN LDAP 서버에 대해 구성된 관리자 DN 입니다. SaltStack Config는 사용자 및 그룹 조회를 위해 이것을 사용하여 디렉토리에 인증합니다. 다음 구문을 기반으로 입력합니다. cn=Administrator,cn=Users,dc=example,dc=com.
    관리자 Bind DN 암호

    관리자의 개별 암호입니다.

    데이터베이스에 암호화를 사용하여 저장됩니다. 일반 텍스트로 저장되지 않습니다.

    인증 Bind DN 필터

    특정 사용자를 선택하기 위해 적용된 필터입니다. 이 검색의 결과는 SaltStack Config가 디렉토리에 바인딩하고 사용자에게 SaltStack Config에 대한 액세스 권한을 부여하는 데 사용하는 사용자 DN입니다. 주어진 검색에서 반환되는 결과의 수를 제한하는 데 유용합니다.

    참고: 필터 구문이 매우 복잡해질 수 있으므로 이 필드를 채우기 전에 LDP, ldapsearch 또는 유사한 도구를 사용하여 항목을 테스트하고 항목의 유효성을 검사하여 조정하는 것이 가장 좋은 방법입니다.

    다음 샘플 필터는 DevOps 또는 Level II 그룹에 속하는 제공된 사용자 이름과 일치하는 계정만 반환합니다.

    (&(objectclass=user)(sAMAccountName={username})(|(memberOf=CN=DevOps,OU=Groups,OU=TestCompanyHQ,DC=adtest,DC=com)(memberOf=LevelII,OU=Groups,DC=adtest,DC=com)))

    미리 채워진 기본값을 사용하는 경우 자리 표시자 텍스트를 디렉토리 서비스에 맞는 올바른 값으로 바꾸십시오.

    참고: 포리스트 구조를 구성할 때는 이 필드를 비워둡니다.
    원격 고유 ID 특성 이름 고유 항목을 식별하는 데 사용되는 값의 이름입니다. 모든 항목에 대한 고유 ID 특성입니다. AD에서 이것은 ObjectGUID입니다.

    그룹

    필드 설명
    그룹 검색 DN 그룹의 검색 기준입니다. 예를 들어 AD에서는 cn=Groups,dc=example,dc=com이 될 수 있습니다. 디렉토리에서 그룹을 검색할 위치를 나타냅니다. 아래의 그룹 검색 범위와 함께 사용합니다.
    그룹 검색 범위

    그룹 검색 DN에 표시된 기본에서 디렉토리 검색 깊이를 나타내며 다음 4가지 값 중 하나를 사용할 수 있습니다.

    baseObject
    값 0, base라고도 합니다. 이 개체만 검색하고 다른 항목은 검색하지 않는 경우 사용합니다.
    singleLevel
    값 1, one이라고도 합니다. 일치에 기본 항목의 직계 하위 항목만 고려하는 데 사용할 수 있습니다.
    wholeSubtree
    값 2(또는 ldap3의 SUBTREE), sub라고도 합니다. 기본 및 모든 하위 수준을 원하는 깊이만큼 검색하는 데 사용합니다.
    subordinateSubtree
    값 3, subordinates라고도 합니다. wholeSubtree와 동일하지만 기본 검색 항목은 무시됩니다.
    그룹 검색 DN 필터 디렉토리에서 그룹을 추출하기 위한 검색 필터입니다. 일반적으로 (objectClass=group)이지만 일부 AD 구성에서는 (objectCategory=group)일 수 있습니다. 더 세분화하려면 그룹 클래스와 함께 사용합니다.
    그룹 클래스 그룹을 정의하는 데 사용되는 개체 클래스 이름입니다(예: groupOfNames).
    그룹 이름 특성 그룹 이름에 사용할 특성의 이름입니다. 다중 값이 아닌 단일 값 특성을 입력합니다.
    그룹 멤버 자격 특성 그룹 이름이 포함된 사용자 항목의 특성의 이름입니다(예: memberOf).

    사용자

    필드 설명
    사용자 검색 DN 사용자의 검색 기반입니다. 예를 들어 AD의 경우 cn=Users,dc=example,dc=com, 다른 디렉토리 서비스의 경우 cn=people,cn=accounts,dc=example,dc=com입니다. 디렉토리에서 사용자를 검색할 위치를 나타냅니다. 아래의 사용자 검색 범위와 함께 사용합니다.
    사용자 검색 범위 사용자 검색 DN에 표시된 기본에서 디렉토리 검색 깊이를 나타내며 다음 4가지 값 중 하나를 사용할 수 있습니다. 그룹 검색 범위에 설명된 4가지 값을 참조하십시오.
    사용자 검색 DN 필터 디렉토리에서 사용자를 추출하기 위한 검색 필터입니다. 일반적으로 (objectClass=person)이지만 일부 AD 구성에서는 (objectCategory=user)일 수 있습니다.
    Person 클래스 로그인이 가능하도록 설정하려는 사용자가 포함된 디렉토리 서비스 클래스 이름입니다. 대부분의 시스템(Active Directory 포함)은 person을 사용하지만 일부는 user 또는 inetOrgPerson을 선호할 수 있습니다.
    사용자 ID 특성 사용자 계정 특성의 고유한 이름입니다. AD의 경우 sAMAccountName입니다. 다른 서비스의 경우 uid 또는 memberUid인 경우가 많습니다.
    사용자 멤버 자격 특성 사용자 이름이 포함된 그룹 항목의 특성 이름입니다. 가능한 예에는 member 또는 uniquemember가 있습니다.
  7. 설정을 저장하지 않고 미리 보려면 미리 보기 업데이트를 클릭합니다.

    연결을 위해 선택한 사용자 및 그룹이 미리 보기 창에 표시됩니다. 필요에 따라 그룹 또는 사용자 탭을 선택하면 서비스에 연결된 사용자 및 그룹을 미리 볼 수 있습니다.

  8. 저장을 클릭합니다.

    LDAP 구성이 저장되었습니다. 구성이 올바른지 확인하려면 테스트 사용자 계정에서 SaltStack Config에 로그인을 시도합니다. 로그인에 성공하지 못하면 문제 해결에서 팁을 참조하십시오.

    참고: LDAP 구성의 경우 SaltStack Config는 식별된 그룹 및 사용자를 포함한 연결 설정을 저장합니다. 정의한 범위 내의 그룹 및 사용자만 검색하고 전체 디렉토리를 동기화하지는 않습니다.

    시간이 지나면 LDAP 디렉토리를 새로 고치거나 다시 동기화해야 할 수도 있습니다. 예를 들어 새 사용자를 추가하고 SaltStack Config에서 사용하도록 설정하려면 디렉토리를 업데이트해야 합니다.

그룹 및 사용자를 사용하도록 설정

LDAP 연결을 설정한 후에는 디렉토리 서비스 그룹을 구성하고 사용자가 SaltStack Config에 로그인할 수 있는지 확인해야 합니다. 디렉토리 서비스 그룹을 구성하려면:

  1. 인증 업무 공간에서 필요한 LDAP 구성을 선택합니다.
  2. 그룹탭을 선택하여 LDAP 구성에서 검색된 그룹을 표시합니다.
    참고: 많은 수의 그룹을 검색하는 경우에는 페이지를 로드하는 데 최대 1분이 걸릴 수 있습니다.
  3. SaltStack Config에서 사용하도록 설정하려는 그룹을 선택합니다.
  4. 사용자 탭을 선택하여 LDAP 구성에서 검색된 사용자 목록을 표시합니다.
    참고: 많은 수의 사용자를 검색하는 경우에는 페이지를 로드하는 데 최대 1분이 걸릴 수 있습니다.
  5. SaltStack Config에서 사용하도록 설정하려는 사용자를 선택합니다..
    참고: 사용하도록 설정된 그룹에 포함된 사용자는 이미 선택되어 있으며 선택 취소할 수 없습니다.
    SaltStack Config에서 이미 사용하도록 설정된 사용자 목록
  6. 저장을 클릭합니다.

    이제 선택한 그룹에 대해 RBAC(역할 기반 액세스 제어) 설정을 정의할 수 있습니다. 단, 역할 업무 공간에서는 사용자가 처음 로그인한 후에만 선택한 그룹에 포함된 개별 사용자에 대한 설정을 관리할 수 있습니다. 그룹 또는 사용자를 삭제하려면 그룹 또는 사용자를 선택 취소한 다음 저장을 클릭합니다.

    SaltStack Config의 RBAC에 대한 자세한 내용은 사용자 역할을 정의하는 방법을 참조하십시오.

LDAP 연결 문제 해결

연결을 미리 볼 수 없는 경우 다음 문제 해결 단계를 수행합니다.
문제 설명 해결 방법
내 연결을 미리 볼 수 없는 경우

그룹 및 사용자를 미리 볼 수 없는 경우 대부분은 LDAP 서버와 SaltStack Config 간의 연결 문제 때문이거나 LDAP 구성 양식의 잘못된 항목 때문입니다.

  1. SaltStack Config에서 LDAP 서버의 선택된 포트로 TCP 연결이 허용되는지 확인합니다.
  2. 양식 항목을 다시 확인하고 타사 도구를 사용하여 구문의 유효성을 검사합니다. 디렉토리 서비스 연결을 확인하고 문제를 해결하는 방법을 참조하십시오.
  3. 이전 항목이 모두 문제를 해결하는 데 도움이 되지 않으면 아래의 기타 문제 섹션을 참조하십시오.
  4. 위의 항목이 모두 도움이 되지 않으면 고객 지원에 문의하십시오.
내 연결을 미리 보려고 할 때 페이지에서 로드가 멈춰짐 페이지 로딩이 2분 넘게 멈춰있으면 RaaS 서비스를 다시 시작한 후 구성을 삭제하고 다시 생성합니다.
  1. RaaS 로그를 엽니다.
    tail -f /var/log/raas/raas

    로그에 다음과 유사한 오류가 포함되어 있습니다.

    [ERROR    :256][ForkPoolWorker-2:10253][ldap_preview_background_task(some_uuid)]
    Task ldap preview_background_task[some_uuid]raised unexpected: KeyError('ad-1_preview')
  2. RaaS 서비스를 중지했다가 다시 시작합니다.
    systemctl stop raas
    systemctl start raas
  3. SaltStack Config 사용자 인터페이스로 돌아가서 LDAP 연결을 삭제합니다.
    참고:

    삭제하기 전에 구성 항목을 복사하여 백업 텍스트 파일에 붙여넣는 것이 좋습니다.

  4. LDAP 구성을 다시 생성합니다.
기타 문제

LDAP 연결을 이미 구성하고 저장했지만 사용자가 로그인할 수 없거나 다른 문제가 발생하는 경우에는 확장 디버깅을 사용하도록 설정하고 raas 로그를 확인하면 근본 원인을 파악하는 데 도움이 됩니다.

확장된 디버깅을 사용하도록 설정하려면:

  1. RaaS에서 /etc/raas/raas를 엽니다.
  2. 다음과 같이 변경합니다.
    • Loggingoptions 아래에서 log_file_loglevel:debug의 주석 처리를 제거합니다.
    • AD/LDAPdriverconfiguration 아래에서 log_level의 주석 처리를 제거하고 log_level:EXTENDED로 설정합니다.
  3. RaaS 서비스를 중지했다가 다시 시작합니다.
    systemctl stop raas
    systemctl start raas
  4. raas 로그를 봅니다.
    tail -f /var/log/raas/raas

로그에서 볼 수 있는 일반적인 오류는 다음과 같습니다.

  • 연결 설정이 잘못되었습니다(SSL). SSL 설정을 조정하십시오.
    [raas.utils.validation.schemas.settings][DEBUG   :546 ][Webserver:9096]
    Error while connecting to AD/LDAP Server. SSL connection issues: socket
    ssl wrapping error: [Errno 104] Connection reset by peer
  • 관리자 Bind DN의 암호가 잘못되었습니다. 암호를 확인하고 다시 입력하십시오.
    [raas.utils.rpc   ][DEBUG   :284 ][Webserver:9095]
    Processed RPC request(129360670417695). Response:
    {'riq': 129360670417695, 'ret': None, 'error': {'code': 3004, 'message':
    'Request validation failure.', 'detail': {'_schema':
    ['Credentials are not valid']}}, 'warnings': []}
  • 미리 채워진 기본 인증 Bind DN 필터가 충돌을 일으키고 있습니다. 필드를 비워두거나 {{username}} 대신 {username}을 사용하십시오.
    참고:

    LDAP 연결을 이미 저장했지만 사용자가 로그인할 수 없는 경우 이 오류가 발생할 수 있습니다.

    [var.tmp._MEIBCyG76.raas.mods.auth.ldap][DEBUG   :903 ][Webserver:9096]
    Running _get_auth_backend_user with this search_filter: (&(objectclass=person)(sAMAccountName={username}))
    
    [var.tmp._MEIBCyG76.raas.mods.auth.ldap][DEBUG   :931 ][Webserver:9096]
    Could not find any user using '(&(objectclass=person)(sAMAccountName={username}))'
    as the search filter in the ldap backend under the ad-1 configuration.
    Trying remote_uid 'None'
    
    [var.tmp._MEIBCyG76.raas.mods.auth.ldap][DEBUG   :963 ][Webserver:9096]
    Could not find any user using '(&(objectClass=person)(objectGUID=None))'
    as the search filter in the ldap backend under the ad-1 configuration.