mongoldap
MongoDB Enterprise
참고
MongoDB 8.0 부터 시작됩니다. LDAP 인증 및 권한 부여 는 더 이상 사용되지 않습니다. LDAP 는 사용할 수 있으며 MongoDB 8 의 수명 기간 동안 변경 없이 계속 작동합니다. LDAP 는 향후 주요 출시하다 에서 제거될 예정입니다.
자세한 내용은 LDAP 사용 중단을 참조하세요.
Synopsis
MongoDB Enterprise는 mongoldap
실행 중인 LDAP 서버 또는 서버 집합에 대해 MongoDB의 LDAP 구성 옵션 을 테스트하기 위해 를 제공합니다.
구성 파일에서 LDAP 옵션의 유효성을 검사하려면 mongoldap
--config
옵션을 구성 파일의 경로로 설정합니다.
LDAP 구성 옵션을 테스트하려면 --user
및 --password
를 지정해야 합니다. mongoldap
는 제공된 구성 옵션 및 자격 증명을 사용하여 실행되는 MongoDB 서버에 대한 인증을 시뮬레이션합니다.
mongoldap
LDAP 인증 또는 권한 부여 절차의 모든 단계의 성공 또는 실패가 포함된 보고서를 반환합니다. 오류 메시지에는 발생한 특정 오류에 대한 정보와 오류 해결을 위한 잠재적인 조언이 포함됩니다.
LDAP 권한 부여 와 관련된 옵션을 구성할 때 mongoldap
는 제공된 구성 옵션과 사용자 이름을 사용하여 구성된 LDAP 쿼리를 실행하고 admin
데이터베이스에서 사용자에게 권한이 부여된 역할 목록을 반환합니다.
사용자 액세스 제어를 위한 LDAP 권한 부여 역할 을 구성할 때 이 정보를 사용할 수 있습니다. 예를 들어 mongoldap
를 사용하여 권한이 있는 사용자가 예상 작업을 수행하는 데 필요한 역할을 얻을 수 있도록 구성을 허용하도록 합니다. 마찬가지로 mongoldap
를 사용하여 권한이 없는 사용자가 MongoDB 서버에 액세스하거나 무단 작업을 수행하기 위한 역할을 수행하지 못하도록 구성되도록 합니다.
LDAP 인증 과 관련된 옵션을 구성할 때 mongoldap
를 사용하여 인증 작업이 예상대로 작동하는지 확인합니다.
설치
mongoldap
도구는 MongoDB database 도구 추가 패키지의 일부이며, MongoDB Server와 함께 또는 독립형 설치로 설치할 수 있습니다.
MongoDB 서버로 설치
MongoDB Server 설치의 일부로 을(를) 설치하려면 mongoldap
MongoDB Enterprise 다음을 수행합니다.
플랫폼에 맞는 지침을 따르세요: MongoDB Enterprise MongoDB Server 설치
설치가 완료되면
mongoldap
및 기타 포함된 도구를 MongoDB Server와 동일한 위치에서 사용할 수 있습니다.참고
Windows
.msi
설치 프로그램 마법사의 경우 Complete 설치 옵션에는mongoldap
가 포함됩니다.
독립형으로 설치
mongoldap
를 독립형 설치로 설치하려면 다음을 수행합니다.
MongoDB Enterprise 다운로드 링크를 따라가세요: MongoDB Enterprise 다운로드 센터
드롭다운 메뉴에서 Platform (운영 체제)를 선택한 다음, 다음 차트에 따라 플랫폼에 적합한 Package 를 선택합니다.
OS패키지Linuxtgz
패키지Windowszip
패키지macOStgz
패키지다운로드가 완료되면 아카이브의 압축을 풀고
mongoldap
를 하드 드라이브의 위치에 복사합니다.
사용법
참고
LDAP 또는 Active Directory에 대한 전체 설명은 이 문서의 범위를 벗어납니다.
Active Directory를 통한 LDAP 인증 및 권한 부여를 지원하도록 설계된 다음 샘플 구성 파일을 고려하세요.
security: authorization: "enabled" ldap: servers: "activedirectory.example.net" bind: queryUser: "mongodbadmin@dba.example.com" queryPassword: "secret123" userToDNMapping: '[ { match : "(.+)", ldapQuery: "DC=example,DC=com??sub?(userPrincipalName={0})" } ]' authz: queryTemplate: "DC=example,DC=com??sub?(&(objectClass=group)(member:1.2.840.113556.1.4.1941:={USER}))" setParameter: authenticationMechanisms: "PLAIN"
mongoldap
를 사용하여 절차에 대한 보고서를 반환하는 구성 파일의 유효성을 검사할 수 있습니다. mongoldap
에 대한 사용자 이름과 비밀번호를 지정해야 합니다.
mongoldap --config=<path-to-config> --user="bob@dba.example.com" --password="secret123"
제공된 자격 증명이 유효하고 구성 파일의 LDAP 옵션이 유효한 경우 출력은 다음과 같을 수 있습니다.
Checking that an LDAP server has been specified... [OK] LDAP server found Connecting to LDAP server... [OK] Connected to LDAP server Parsing MongoDB to LDAP DN mappings.. [OK] MongoDB to LDAP DN mappings appear to be valid Attempting to authenticate against the LDAP server... [OK] Successful authentication performed Checking if LDAP authorization has been enabled by configuration... [OK] LDAP authorization enabled Parsing LDAP query template.. [OK] LDAP query configuration template appears valid Executing query against LDAP server... [OK] Successfully acquired the following roles: ...
행동
MongoDB 5.1부터 mongoldap
는 LDAP 서버 앞에 srv:
및 srv_raw:
를 접두사로 사용하는 것을 지원합니다.
연결 문자열이 "srv:<DNS_NAME>"
을 지정하는 경우 mongoldap
은(는) Active Directory를 지원하는 SRV에 "_ldap._tcp.gc._msdcs.<DNS_NAME>"
가 있는지 확인합니다. 이를 찾을 수 없는 경우 mongoldap
은(는) SRV에 대해 "_ldap._tcp.<DNS_NAME>"
가 존재하는지 확인합니다. SRV 레코드를 찾을 수 없는 경우 mongoldap
은(는) 대신 "srv_raw:<DNS_NAME>"
을(를) 사용하라는 경고를 표시합니다.
연결 문자열이 "srv_raw:<DNS_NAME>"
을 지정하는 경우 mongoldap
는 "<DNS NAME>"
에 대한 SRV 레코드 조회를 수행합니다.
옵션
--config=<filename>, -f=<filename>
런타임 구성 옵션에 대한 구성 파일 을 지정합니다. 옵션은 명령줄 구성 옵션과 동일합니다. 자세한 내용은 자체 관리형 구성 파일 옵션 을 참조하세요.
mongoldap
는 자체 관리형 LDAP 프록시 인증 또는 자체 관리 배포서버의 LDAP 권한 부여 와 관련된 구성 옵션을 사용하여 LDAP 인증 또는 권한 부여 를 테스트합니다.--user
을(를) 지정해야 합니다. LDAP 인증 테스트를 위해--password
을(를) 허용할 수 있습니다.구성 파일이 ASCII 인코딩을 사용하는지 확인합니다.
mongoldap
인스턴스는 UTF-8 를 포함하여 ASCII가 아닌 인코딩을 사용하는 구성 파일을 지원하지 않습니다.
--user=<string>
LDAP 인증 또는 권한 부여를 시도할 때 사용할
mongoldap
의 사용자 이름입니다.
--ldapServers=<host1>:<port>,<host2>:<port>,...,<hostN>:<port>
mongoldap
사용자를 인증하거나 사용자가 지정된 데이터베이스에서 수행할 수 있는 작업을 결정하는 LDAP 서버입니다. 지정된 LDAP 서버에 복제된 인스턴스가 있는 경우 각 복제된 서버의 호스트와 포트를 쉼표로 구분된 목록으로 지정할 수 있습니다.LDAP 인프라가 여러 LDAP 서버에 걸쳐 LDAP 디렉토리를 분할하는 경우, 하나 의 LDAP 서버 또는 해당 서버의 복제된 인스턴스를
--ldapServers
으로 지정합니다. MongoDB는 RFC 4511 4.1 에 정의된 대로 다음과 같은10 LDAP 참조를 지원합니다. . 인프라의 모든 LDAP 서버를 나열하는 데--ldapServers
을(를) 사용하지 마세요.설정하지 않으면
mongoldap
에서 LDAP 인증 또는 권한 부여를 사용할 수 없습니다.
--ldapQueryUser=<string>
MongoDB Enterprise에서만 사용할 수 있습니다.
LDAP 서버에 연결하거나 쿼리를 수행할 때
mongoldap
이(가) 바인딩되는 ID입니다.다음 중 하나라도 해당하는 경우에만 필요합니다.
username transformation
에 대한 LDAP 쿼리 사용.LDAP 서버가 익명 바인딩을 허용하지 않음
--ldapQueryUser
와--ldapQueryPassword
를 함께 사용해야 합니다.설정하지 않으면
mongoldap
는 LDAP 서버에 바인딩을 시도하지 않습니다.참고
Windows MongoDB 배포는
--ldapBindWithOSDefaults
를--ldapQueryUser
및--ldapQueryPassword
대신 사용할 수 있습니다.--ldapQueryUser
와--ldapBindWithOSDefaults
를 동시에 지정할 수는 없습니다.
MongoDB Enterprise에서만 사용할 수 있습니다.
--ldapQueryUser
사용 시 LDAP 서버에 바인딩하는 데 사용되는 비밀번호입니다. --ldapQueryPassword
와 --ldapQueryUser
를 함께 사용해야 합니다.
설정하지 않으면 mongoldap
는 LDAP 서버에 바인딩을 시도하지 않습니다.
setParameter
를 사용하여 실행 중인 mongoldap
에서 이 설정을 구성할 수 있습니다.
ldapQueryPassword
setParameter
명령은 string 또는 string 배열을 허용합니다. ldapQueryPassword
배열에 설정하면, MongoDB는 성공할 때까지 각 암호를 순서대로 시도합니다. 비밀번호 배열을 사용하여 다운타임 없이 LDAP 계정 비밀번호를 롤오버할 수 있습니다.
참고
Windows MongoDB 배포는 --ldapBindWithOSDefaults
를 --ldapQueryUser
및 --ldapQueryPassword
대신 사용할 수 있습니다. --ldapQueryPassword
와 --ldapBindWithOSDefaults
를 동시에 지정할 수는 없습니다.
--ldapBindWithOSDefaults=<bool>
기본값: false
Windows 플랫폼용 MongoDB Enterprise에서만 사용할 수 있습니다.
LDAP 서버에 연결할 때
mongoldap
가 Windows 로그인 자격 증명을 사용하여 인증하거나 바인딩할 수 있도록 허용합니다.다음과 같은 경우에만 필요합니다.
username transformation
에 대한 LDAP 쿼리 사용.LDAP 서버가 익명 바인딩을 허용하지 않음
--ldapBindWithOSDefaults
를 사용하여--ldapQueryUser
및--ldapQueryPassword
를 변경합니다.
--ldapBindMethod=<string>
기본값: 단순
MongoDB Enterprise에서만 사용할 수 있습니다.
mongoldap
이(가) LDAP 서버에 인증하는 데 사용하는 메서드입니다.--ldapQueryUser
및--ldapQueryPassword
와 함께 사용하여 LDAP 서버에 연결합니다.--ldapBindMethod
다음 값을 지원합니다.sasl
을 지정하면--ldapBindSaslMechanisms
를 사용하여 사용 가능한 SASL 메커니즘을 구성할 수 있습니다.mongoldap
기본적으로DIGEST-MD5
메커니즘을 사용합니다.
--ldapBindSaslMechanisms=<string>
기본값입니다: DIGEST-MD5
MongoDB Enterprise에서만 사용할 수 있습니다.
쉼표로 구분된 SASL 메커니즘
mongoldap
의 목록으로, LDAP 서버에 인증할 때 사용할 수 있습니다.mongoldap
와 LDAP 서버는 하나 이상의 메커니즘에 동의해야 합니다.mongoldap
는 런타임에 호스트 머신에 설치된 모든 SASL 메커니즘 라이브러리를 동적으로 로드합니다.mongoldap
호스트와 원격 LDAP 서버 호스트 모두에서 선택한 SASL 메커니즘에 적합한 라이브러리를 설치하고 구성합니다. 운영 체제에는 기본적으로 특정 SASL 라이브러리가 포함될 수 있습니다. 설치 및 구성에 대한 지침은 각 SASL 메커니즘과 관련된 설명서를 참조하세요.자체 관리 배포서버에서 Kerberos 인증 과 함께
GSSAPI
SASL 메커니즘을 사용하는 경우mongoldap
호스팅하다 시스템에 대해 다음을 확인합니다.Linux
KRB5_CLIENT_KTNAME
환경 변수는 호스트 컴퓨터의 클라이언트 Linux 키탭 파일 이름으로 확인됩니다. Kerberos 환경 변수에 대한 자세한 내용은 Kerberos 설명서를 참조하세요.클라이언트 키 탭에는 LDAP 서버에 연결하고 LDAP 쿼리를 실행할 때
mongoldap
사용할 에 대한 사용자 주체 가 포함되어 있습니다.
Windows
- Active Directory 서버에 연결하는 경우 Windows Kerberos 구성은 자동으로 티켓 부여 티켓을 생성합니다. 사용자가 시스템에 로그인할 때.
--ldapBindWithOSDefaults
를true
로 설정하여mongoldap
가 Active Directory 서버에 연결할 때 생성된 자격 증명을 사용하고 쿼리를 실행할 수 있도록 허용합니다.
이 옵션을 사용하려면
--ldapBindMethod
를sasl
로 설정합니다.참고
SASL 메커니즘의 전체 목록은 IANA 목록을 참조하세요. 해당 서비스와 호환되는 SASL 메커니즘을 확인하려면 해당 LDAP 또는 Active Directory 서비스의 설명서를 참조하세요.
MongoDB는 SASL 메커니즘 라이브러리의 출처가 아닙니다. 또한, MongoDB 설명서는 특정 SASL 메커니즘 설치나 구성을 위한 절대적인 출처가 아닙니다. 설명서와 지원은 SASL 메커니즘 라이브러리 공급업체나 소유자에게 요청하시기 바랍니다.
SASL에 관한 자세한 내용은 다음 리소스를 참조하세요.
Linux의 경우 Cyrus SASL 설명서를 참조하세요.
Windows의 경우 Windows SASL 설명서를 참조하세요.
--ldapTransportSecurity=<string>
기본값: tls
MongoDB Enterprise에서만 사용할 수 있습니다.
기본적으로
mongoldap
는 LDAP 서버에 대한 TLS/SSL 보안 연결을 생성합니다.Linux 배포의 경우
/etc/openldap/ldap.conf
파일에서 적절한 TLS 옵션을 구성해야 합니다. 운영 체제의 패키지 관리자가libldap
종속성을 통해 MongoDB Enterprise 설치의 일부로 이 파일을 생성합니다. 더 자세한 내용은 ldap.conf OpenLDAP 설명서에서TLS Options
에 관한 설명을 참조하세요.Windows 배포서버의 경우, 반드시 LDAP 서버 CA 인증서를 Windows 인증서 관리 도구에 추가해야 합니다.도구의 정확한 이름과 기능은 운영 체제의 버전에 따라 다를 수 있습니다.인증서 관리에 관한 자세한 정보는 Windows 버전별 설명서를 참조하세요.
--ldapTransportSecurity
를none
로 설정하여mongoldap
와 LDAP 서버 간의 TLS/SSL을 비활성화합니다.경고
--ldapTransportSecurity
을(를)none
으)로 설정하면mongoldap
와 LDAP 서버 간에 일반 텍스트 정보와 자격 증명이 전송될 수 있습니다.
--ldapTimeoutMS=<int>
기본값: 10000
MongoDB Enterprise에서만 사용할 수 있습니다.
LDAP 서버가 요청에 응답할 때까지 대기해야 하는 시간(밀리초)
mongoldap
입니다.--ldapTimeoutMS
값을 늘리면 실패의 원인이 연결 시간 초과인 경우 MongoDB Server와 LDAP 서버 간의 연결 실패를 방지할 수 있습니다.--ldapTimeoutMS
값을 줄이면 MongoDB가 LDAP 서버의 응답을 기다리는 시간이 줄어듭니다.
--ldapUserToDNMapping=<string>
MongoDB Enterprise에서만 사용할 수 있습니다.
인증을 위해
mongoldap
에 제공된 사용자 이름을 LDAP DN(고유 이름)에 매핑합니다. 다음 시나리오에서는--ldapUserToDNMapping
를 사용하여 사용자 이름을 LDAP DN으로 변환해야 할 수 있습니다.사용자가 완전한 LDAP DN이 아닌 사용자 이름으로 MongoDB에서 인증하는 간단한 LDAP 바인딩을 사용해 LDAP 인증을 실행하는 경우
DN이 필요한
LDAP authorization query template
를 사용합니다.다양한 인증 메커니즘을 사용하여 Mongo DB로 인증하는 클라이언트의 사용자 이름 변환 (예: x.509, kerberos)를 전체 LDAP DN에 추가하여 권한 부여를 받을 수 있습니다.
--ldapUserToDNMapping
은 문서의 정렬된 배열을 나타내는 따옴표로 묶인 JSON 문자열을 기대합니다. 각 문서에는 정규 표현식match
및 들어오는 사용자 이름을 변환하는 데 사용되는substitution
또는ldapQuery
템플릿이 포함되어 있습니다.배열의 각 문서는 다음과 같은 형식을 갖습니다.
{ match: "<regex>" substitution: "<LDAP DN>" | ldapQuery: "<LDAP Query>" } 필드설명예시match
제공된 사용자 이름과 일치하는 ECMAScript 형식의 정규 표현식(regex)입니다. 괄호로 묶인 각 섹션은substitution
또는ldapQuery
에서 사용하는 regex 캡처 그룹을 나타냅니다."(.+)ENGINEERING"
"(.+)DBA"
substitution
"cn={0},ou=engineering, dc=example,dc=com"
ldapQuery
"ou=engineering,dc=example, dc=com??one?(user={0})"
참고
배열의 각 문서에 대해
substitution
또는ldapQuery
사용해야 합니다. 동일한 문서에서 둘 다 지정할 수는 없습니다 .인증 또는 권한 부여를 수행할 때
mongoldap
는 지정된 순서대로 배열의 각 문서를 살펴보고match
필터에 대해 인증 사용자 이름을 확인합니다. 일치하는 항목이 발견되면mongoldap
는 변환을 적용하고 사용자를 인증하기 위해 출력을 사용합니다.mongoldap
는 배열의 나머지 문서를 확인하지 않습니다.지정된 문서가 제공된 인증 이름과 일치하지 않는 경우
mongoldap
은 문서 목록을 계속 진행하여 일치하는 항목을 추가로 찾습니다. 문서에서 일치하는 항목이 없거나 문서에서 설명하는 변환이 실패하면mongoldap
에서 오류를 반환합니다.mongoldap
는 LDAP 서버에 대한 네트워킹 또는 인증 실패로 인해 변환 중 하나를 평가할 수 없는 경우에도 오류를 반환합니다.mongoldap
연결 요청을 거부하고 배열의 나머지 문서를 확인하지 않습니다.MongoDB 5.0부터
--ldapUserToDNMapping
은 매핑 문서 대신 빈 문자열인""
또는 빈 배열인[ ]
을 허용합니다. 11}에 빈 문자열 또는 빈 배열을 제공하는 경우, MongoDB는 인증된 사용자 이름을 LDAP DN으로--ldapUserToDNMapping
매핑합니다. 이전에는 빈 매핑 문서를 제공하면 매핑이 실패했습니다.예시
다음은 두 개의 변환 문서를 보여줍니다. 첫 번째 문서는
@ENGINEERING
로 끝나는 모든 문자열과 일치하며 접미사 앞에 오는 모든 항목을 regex 캡처 그룹에 배치합니다. 두 번째 문서는@DBA
로 끝나는 모든 문자열과 일치하며, 접미사 앞에 오는 모든 항목을 regex 캡처 그룹에 배치합니다.중요
--ldapUserToDNMapping에 배열을 문자열로 전달해야 합니다.
"[ { match: "(.+)@ENGINEERING.EXAMPLE.COM", substitution: "cn={0},ou=engineering,dc=example,dc=com" }, { match: "(.+)@DBA.EXAMPLE.COM", ldapQuery: "ou=dba,dc=example,dc=com??one?(user={0})" } ]" 사용자 이름이
alice@ENGINEERING.EXAMPLE.COM
인 사용자가 첫 번째 문서와 일치합니다. Regex 캡처 그룹{0}
은 문자열alice
에 해당합니다. 결과 출력은 DN"cn=alice,ou=engineering,dc=example,dc=com"
입니다.사용자 이름이
bob@DBA.EXAMPLE.COM
인 사용자가 두 번째 문서와 일치합니다. 정규식 캡처 그룹{0}
은(는) stringbob
에 해당합니다. 결과 출력은 LDAP 쿼리"ou=dba,dc=example,dc=com??one?(user=bob)"
입니다.mongoldap
은 LDAP 서버에 대해 이 쿼리를 실행하여 결과"cn=bob,ou=dba,dc=example,dc=com"
을 반환합니다.--ldapUserToDNMapping
가 설정되지 않은 경우mongoldap
는 LDAP 서버에 대해 사용자를 인증하거나 권한을 부여하려고 시도할 때 사용자 이름에 변환을 적용하지 않습니다.
--ldapAuthzQueryTemplate=<string>
MongoDB Enterprise에서만 사용할 수 있습니다.
RFC4515 를 준수하는 형식의 상대 LDAP
mongoldap
쿼리 URL입니다. 및 RFC4516 가 인증된 사용자가 속한 LDAP 그룹을 가져오기 위해 실행합니다. 쿼리는--ldapServers
에 지정된 하나 이상의 호스트를 기준으로 합니다.URL에서 다음과 같은 대체 토큰을 사용할 수 있습니다.
대체 토큰설명{USER}
인증된 사용자 이름을 대체하거나username mapping
이 지정된 경우transformed
사용자 이름을 대체합니다.{PROVIDED_USER}
인증 또는LDAP transformation
전에 제공된 사용자 이름 등을 대체합니다.쿼리 URL을 구성할 때 LDAP 매개 변수의 순서가 RFC4516을 준수하는지 확인하세요.
[ dn [ ? [attributes] [ ? [scope] [ ? [filter] [ ? [Extensions] ] ] ] ] ] 쿼리에 속성이 포함된 경우
mongoldap
는 쿼리가 이 엔터티가 속한 DN을 검색한다고 가정합니다.쿼리에 속성이 포함되지 않은 경우
mongoldap
는 쿼리가 사용자가 멤버인 모든 엔터티를 검색한다고 가정합니다.쿼리에서 반환된 각 LDAP DN에 대해
mongoldap
는admin
데이터베이스에서 권한이 부여된 사용자에게 해당 역할을 할당합니다.admin
데이터베이스의 역할이 DN과 정확히 일치하는 경우mongoldap
는 사용자에게 해당 역할에 할당된 역할과 권한을 부여합니다. 역할 생성에 대한 자세한 내용은db.createRole()
메서드를 참조하세요.예시
이 LDAP 쿼리는 LDAP 사용자 개체의
memberOf
속성에 나열된 모든 그룹을 반환합니다."{USER}?memberOf?base" LDAP 구성에
memberOf
속성이 사용자 스키마의 일부로 포함되어 있지 않거나, 그룹 멤버십을 보고하는 데 다른 속성이 있거나, 속성을 통해 그룹 멤버십을 추적하지 못할 수 있습니다. 고유한 LDAP 구성과 관련하여 쿼리를 구성합니다.설정하지 않으면
mongoldap
에서 LDAP를 사용하는 사용자에게 권한을 부여할 수 없습니다.