Docs Menu
Docs Home
/
MongoDB 매뉴얼
/ / /

자체 관리형 LDAP 프록시 인증

이 페이지의 내용

  • 고려 사항
  • 운영 체제 LDAP 라이브러리를 통한 LDAP 인증
  • LDAP 인증을 통한 saslauthd
  • LDAP 인증을 통해 MongoDB 서버에 연결하기

MongoDB Enterprise는 인증 요청을 LDAP(Lightweight Directory Access Protocol) 서비스로 프록시하는 기능을 지원합니다.

MongoDB는 LDAP 서버에 대한 간단한 바인딩과 SASL 바인딩을 지원합니다:

경유
설명

운영 체제 라이브러리

MongoDB 는 운영 체제 라이브러리를 통해 LDAP 서버 에 대한 바인딩을 지원합니다.

이를 통해 Linux 및 Windows의 MongoDB 서버는 인증에 LDAP 서버를 사용할 수 있습니다.

이전 버전에서는 Microsoft Windows의 MongoDB가 LDAP 서버에 연결할 수 없습니다.

saslauthd

Linux의 MongoDB 서버는 saslauthd 데몬을 통해 LDAP 서버에 대한 바인딩을 지원합니다.

Windows의 MongoDB에는 사용할 수 없습니다.

Docker에 대한 전체 설명은 이 문서의 범위를 벗어납니다. 이 페이지에서는 Docker에 대한 사전 지식이 있다고 가정합니다.

이 설명서는 오로지 MongoDB LDAP 인증에 대해 설명하며 LDAP의 다른 리소스를 대체하지는 않습니다. LDAP 인증을 구성하기 전에 LDAP 및 관련 주제를 철저히 숙지하는 것이 좋습니다.

MongoDB는 MongoDB deployment를 위한 LDAP 인증의 최적 구성을 위한 전문 서비스를 제공할 수 있습니다.

인증/권한 부여를 위해 LDAP 서버에 연결할 때 MongoDB는 기본적으로 다음을 수행합니다.

연결 풀링 동작을 변경하려면 ldapUseConnectionPool 매개변수를 업데이트 합니다.

중요

security.sasl.saslauthdSocketPath 또는 --setParameter saslauthdPath로 지정된 saslauthd Unix 도메인 소켓 파일의 상위 디렉토리에 다음 대상에 대해 읽기 및 실행(r-x) 권한을 부여해야 합니다:

  • mongod 또는 mongos를 시작하는 사용자 또는

  • 해당 사용자가 속한 그룹.

mongod 또는 mongossaslauthd 디렉토리 및 해당 콘텐츠에 대해 지정된 권한이 없으면 saslauthd를 통해 인증할 수 없습니다.

libldap (예: RHEL에서 실행되는 경우) 에 연결된 MongoDB 4.2 엔터프라이즈 바이너리의 경우 libldap 액세스가 동기화되므로 일부 성능/대기 시간 비용이 발생합니다.

0}에 연결된 MongoDB 4.2 Enterprise 바이너리의 libldap_r 경우 이전 MongoDB 버전과 동작이 변경되지 않습니다.

LDAP 권한 부여 LDAP 인증 하는 경우, 사용자 관리 를 위해서는 LDAP 서버 와 MongoDB 서버 모두에서 사용자를 관리해야 합니다. LDAP 를 통해 인증하는 각 사용자에 대해 MongoDB 에는 $external 데이터베이스 의 사용자 이름이 인증 사용자 이름 이름과 정확히 일치하는 사용자가 필요합니다. LDAP 서버 의 사용자를 변경하려면 해당 MongoDB $external 사용자를 변경해야 할 수 있습니다.

2} 인증 사용자(Kerberos, LDAP 또는 x.509 사용자)와 함께 클라이언트 세션 및 인과적 일관성 보장을 사용하려면 사용자 이름이 10KB보다 클 수 없습니다. $external

예시

사용자가 sam@dba.example.com로 인증합니다. MongoDB 서버는 LDAP 서버에 바인딩하고 username transformations을 준수하여 사용자를 인증합니다. 인증에 성공하면 MongoDB 서버는 $external 데이터베이스에서 사용자 sam@dba.example.com 를 확인하고 인증된 사용자에게 해당 사용자와 관련된 역할 및 권한을 부여합니다.

MongoDB 서버에서 사용자를 관리하려면 해당 MongoDB $external 사용자가 $external 데이터베이스에 대한 사용자 관리자 권한(예: userAdmin에서 제공한 권한)을 가진 LDAP 사용자로 인증해야 합니다.

중요

$external 데이터베이스에 대한 사용자 관리 권한을 가진 $external 사용자가 없는 경우 LDAP 인증에 대한 사용자 관리를 수행할 수 없습니다. 이 시나리오는 LDAP 인증을 활성화하기 전에 사용자를 구성했지만 적절한 사용자 관리자를 생성하지 않은 경우 발생할 수 있습니다.

$external 데이터베이스에 없는 기존 사용자가 있는 경우 지속적인 액세스를 보장하려면 각 사용자에 대해 다음 요구 사항을 충족해야 합니다.

  • 사용자가 LDAP 서버에 해당 사용자 객체를 가지고 있습니다.

  • 사용자가 동등한 역할과 권한을 가진 $external 데이터베이스에 존재합니다.

$external 데이터베이스에 없는 사용자의 액세스를 계속 허용하려면 SCRAM-SHA-1 및/또는 SCRAM-SHA-256을(를) 적절히 포함하도록 setParameter authenticationMechanisms을(를) 구성해야 합니다. 그런 다음 사용자는 인증할 때 --authenticationMechanism SCRAM-SHA-1 또는 SCRAM-SHA-256을(를) 지정해야 합니다.

복제본 세트의 경우 프라이머리를 구성하기 전에 먼저 세컨더리중재자 멤버에 대한 LDAP 인증을 구성합니다. 이는 샤드 복제본 세트 또는 config 서버 복제본 세트에도 적용됩니다. 한 번에 하나의 복제본 세트 멤버를 설정하여 대다수의 멤버가 쓰기 가용성을 유지하도록 합니다.

샤딩된 클러스터에서는 클러스터 수준 사용자에 대해 config 서버 및 각 mongos에서 LDAP 인증을 구성해야 합니다. 샤드-로컬 사용자를 위해 각 샤드에 LDAP 권한 부여을 선택적으로 구성할 수 있습니다.

OS 라이브러리 프로세스를 통한 LDAP 인증은 아래에 요약되어 있습니다.

  1. 클라이언트는 사용자의 자격 증명을 제공하여 MongoDB에 인증합니다.

  2. 사용자 이름을 LDAP 서버에 바인딩하기 전에 LDAP DN에 매핑해야 하는 경우 MongoDB는 구성된 security.ldap.userToDNMapping 설정에 따라 변환을 적용할 수 있습니다.

  3. MongoDB는 제공된 사용자 이름 또는 변환이 적용된 경우 변환된 사용자 이름을 사용하여 security.ldap.servers에 지정된 LDAP 서버에 바인딩합니다.

    MongoDB는 기본적으로 단순 바인딩을 사용하지만 security.ldap.bind.methodsecurity.ldap.bind.saslMechanisms에 구성된 경우 sasl 바인딩을 사용할 수도 있습니다.

    변환에 LDAP 서버를 조회해야 하거나 LDAP 서버가 익명 바인드를 허용하지 않는 경우 MongoDB는 제공된 사용자 신임 정보를 인증하기 전에 security.ldap.bind.queryUsersecurity.ldap.bind.queryPassword 바인드에 지정된 사용자 이름 및 비밀번호를 사용하여 LDAP 서버에 바인드합니다.

  4. LDAP 서버는 바인드 시도 결과를 MongoDB에 반환합니다. 성공하면 MongoDB는 사용자에게 권한 부여를 시도합니다.

  5. MongoDB 서버는 사용자 이름을 $external 데이터베이스의 사용자에게 매핑하려고 시도하여 일치하는 사용자와 관련된 역할이나 권한을 사용자에게 할당합니다. MongoDB가 일치하는 사용자를 찾을 수 없으면 인증이 실패합니다.

  6. 클라이언트는 MongoDB가 인증한 사용자 역할 또는 권한을 부여한 조치를 수행할 수 있습니다.

운영 체제 라이브러리를 통한 인증에 LDAP를 사용하려면 mongod 또는 mongos 구성 파일의 일부로 다음 설정을 지정합니다.

옵션
설명
필수 사항

따옴표로 묶은 쉼표로 구분된 host[:port] 형식의 LDAP 서버 목록입니다.

LDAP 서버의 접두사 앞에 srv:srv_raw:를 붙일 수 있습니다.

연결 문자열에 "srv:<DNS_NAME>"이 지정되어 있는 경우 mongod는 Active Directory를 지원하는 SRV에 "_ldap._tcp.gc._msdcs.<DNS_NAME>"이 있는지 확인합니다. 이를 찾을 수 없는 경우 mongod는 SRV에 대해 "_ldap._tcp.<DNS_NAME>"이 존재하는지 확인합니다. SRV 레코드를 찾을 수 없는 경우 mongod"srv_raw:<DNS_NAME>"을 대신 사용하라는 경고를 표시합니다.

연결 문자열이 "srv_raw:<DNS_NAME>"을 지정하는 경우 mongod"<DNS NAME>"에 대한 SRV 레코드 조회를 수행합니다.

mongod 또는 mongos 가 LDAP 서버에 인증하거나 바인드하는 데 사용하는 방법을 지정하는 데 사용됩니다. security.ldap.bind.saslMechanisms에 정의된 SASL 프로토콜 중 하나를 사용하도록 sasl 지정합니다 .

기본값은 simple입니다.

아니요, LDAP 서버에 바인딩하기 위해 sasl 사용하지 않는 한.

2} 또는 mongos 가 LDAP 서버를 인증하거나 mongod 바인딩할 때 사용할 수 있는 SASL 메커니즘을 지정하는 데 사용됩니다. MongoDB와 LDAP 서버는 하나 이상의 SASL 메커니즘에 동의해야 합니다.

기본값은 DIGEST-MD5입니다.

아니요. 단, method을(를) sasl(으)로 설정합니다. 또한 다르거나 추가 SASL 메커니즘이 필요한 경우는 제외됩니다.

고유 이름(DN) 또는 SASL 이름으로 식별되는 LDAP 엔티티로, MongoDB Server 이 LDAP 서버에 연결할 때 인증하거나 바인딩합니다.

queryPassword 와 함께 사용하세요.

지정된 사용자는 LDAP 서버에서 쿼리를 실행할 수 있는 적절한 권한을 가지고 있어야 합니다.

아니요, userToDNMapping 변환의 일부로 쿼리를 지정하거나 LDAP 서버의 보안 설정에서 익명 바인딩을 허용하지 않는 경우입니다.

queryUser을(를) 사용할 때 LDAP 서버에 대한 인증에 사용되는 암호입니다.

아니요, queryUser을(를) 지정하지 않는 한 수행할 수 없습니다.

Windows MongoDB 배포는 LDAP 서버에 연결할 때와 마찬가지로 인증 또는 바인딩을 위해 queryUserqueryPassword 대신 운영 체제 자격 증명을 사용할 수 있습니다.

아니요, queryUser queryPassword대체하지 않는 한.

클라이언트는 구성된 bind method에서 예상하는 형식과 호환되지 않는 형식의 사용자 이름을 사용하여 인증할 수 있습니다. 예를 들어 simple 바인딩에는 전체 LDAP DN이 필요할 수 있지만 MongoDB를 인증하는 데 사용되는 사용자 이름은 이메일 주소일 수 있습니다.

userToDNMapping MongoDB가 들어오는 사용자 이름을 LDAP 스키마와 호환되는 형식으로 변환할 수 있도록 합니다. MongoDB는 대체 템플릿이나 LDAP 쿼리 템플릿을 사용한 변환을 지원합니다.

변환의 일부로 LDAP 쿼리를 사용하는 userToDNMapping 변환을 지정하는 경우 LDAP 서버에 대한 적절한 수준의 권한이 있는 queryUser도 지정해야 합니다.

아니요, 클라이언트가 변환이 필요한 사용자 이름을 사용하여 인증하지 않는 한 필요하지 않습니다.

경고

Windows용 MongoDB Enterprise는 saslauthd를 통한 바인딩을 지원하지 않습니다.

  • Linux MongoDB 서버는 saslauthd 데몬을 통해 LDAP 서버에 대한 바인딩을 지원합니다.

  • 클라이언트와 서버, saslauthd 서버와 LDAP 서버 간에는 암호화되거나 신뢰할 수 있는 보안 연결을 사용하세요. LDAP 서버는 SASL PLAIN 메커니즘을 사용하여 일반 텍스트로 데이터를 보내고 받습니다. VPN과 같은 신뢰할 수 있는 채널, TLS/SSL로 암호화된 연결 또는 신뢰할 수 있는 유선 네트워크만 사용해야 합니다.

saslauthd을(를) 사용하여 MongoDB 서버를 LDAP 서버에 바인딩하도록 구성하려면 다음 명령줄 옵션 또는 구성 파일 설정을 사용하여 mongod을(를) 시작합니다.

배포에 필요한 다른 명령줄 옵션을 포함합니다. mongod 명령줄 옵션에 대한 전체 문서는 mongod을(를) 참조하세요.

  • security.authorization enabled 으로 설정하다 ,

  • setParameter authenticationMechanisms 매개 변수를 PLAIN 로 설정하다 하고

  • setParameter saslauthdPath 를 saslauthd 인스턴스 의 Unix 도메인 소켓 경로로 설정하다 합니다. 기본값 Unix 도메인 소켓 경로를 사용하려면 빈 string "" 를 지정합니다.

배포서버 에 필요한 다른 구성 파일 설정을 포함합니다. 구성 파일에 대한 전체 문서는 YAML 구성 파일 을 참조하세요.

LDAP 서버에 적합한 매개변수를 사용하여 saslauthd.conf 파일을 생성하거나 업데이트해야 합니다. saslauthd.conf을(를) 문서화하는 것은 이 문서의 범위를 벗어납니다.

중요

security.sasl.saslauthdSocketPath 또는 --setParameter saslauthdPath로 지정된 saslauthd Unix 도메인 소켓 파일의 상위 디렉토리에 다음 대상에 대해 읽기 및 실행(r-x) 권한을 부여해야 합니다:

  • mongod 또는 mongos를 시작하는 사용자 또는

  • 해당 사용자가 속한 그룹.

mongod 또는 mongossaslauthd 디렉토리 및 해당 콘텐츠에 대해 지정된 권한이 없으면 saslauthd를 통해 인증할 수 없습니다.

다음 튜토리얼에서는 널리 사용되는 두 가지 LDAP 서비스와 작동하도록 saslauthd.conf을(를) 구성하는 방법에 대한 기본 정보를 제공합니다.

지침은 saslauthd 및 특정 LDAP 서비스에 대한 설명서를 참조하세요.

LDAP 인증을 통해 MongoDB Server에 인증하려면 다음 매개 변수와 함께 $external 데이터베이스에서 db.auth()를 사용합니다.

옵션
설명

username

인증할 사용자 이름입니다.

password

인증할 비밀번호입니다.

mechanism

PLAIN로 설정합니다.

돌아가기

Kerberos 인증 및 Active Directory 권한 부여로 자체 관리 MongoDB 구성하기