문서 메뉴

문서 홈애플리케이션 개발MongoDB 매뉴얼

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

이 페이지의 내용

  • 전제 조건
  • 고려 사항
  • 절차
  • 테스트 및 검증

버전 3 에 추가되었습니다.4: MongoDB Enterprise 는 인증된 사용자가 속한 LDAP 그룹에 대한 LDAP 서버 쿼리를 지원합니다. MongoDB는 반환된 각 그룹의 LDAP 고유 이름(DN)을 admin 데이터베이스의 역할 에 매핑합니다. MongoDB는 매핑된 역할 및 관련 권한을 기반으로 사용자에게 권한을 부여합니다. 자세한 내용은 LDAP 권한 부여 를 참조하세요.

MongoDB Enterprise는 Kerberos 서비스 를 사용한 인증을 지원합니다. Kerberos는 대규모 클라이언트/서버 시스템을 위한 업계 표준 인증 프로토콜입니다.

이 튜토리얼에서는 Kerberos 서버를 통해 인증을 수행하고 플랫폼 라이브러리를 통해 AD(Active Directory) 서버를 통해 권한 부여를 수행하도록 MongoDB를 구성하는 방법을 설명합니다.

중요

계속 진행하기 전에 다음 주제를 철저히 숙지하세요.

AD 에 대한 전체 설명은 이 튜토리얼의 범위를 벗어납니다. 이 튜토리얼에서는 AD 에 대한 사전 지식이 있다고 가정합니다.

MongoDB는 MongoDB 서버와 AD 간의 바인딩에 SASL 메커니즘 사용을 지원합니다. SASL, SASL 메커니즘에 대한 전체 설명 또는 특정 SASL 메커니즘에 대한 특정 AD 구성 요구 사항은 이 튜토리얼의 범위를 벗어납니다. 이 튜토리얼은 SASL 및 관련 주제에 대한 사전 지식이 있다고 가정합니다.

Kerberos 배포를 설정하고 구성하는 것은 이 문서의 범위를 벗어납니다. 이 튜토리얼에서는 MongoDB 배포의 mongosmongod인스턴스에 대해 Kerberos 서비스 주체 를 구성했고 각 mongod 및 인스턴스에 대해 유효한 mongos 키탭 파일 이 있다고 가정합니다.

복제본 세트 및 샤드 클러스터의 경우, 구성에서 IP 주소나 정규화되지 않은 호스트 이름 대신 FQDN(정규화된 도메인 이름)을 사용해야 합니다. Kerberos 영역을 올바르게 확인하고 연결할 수 있도록 하려면 GSSAPI용 FQDN을 사용해야 합니다.

MongoDB 엔터프라이즈를 사용하고 있는지 확인하려면 --version 명령줄 옵션을 mongod 또는 mongos에 전달합니다.

mongod --version

이 명령의 출력에서 modules: subscription 또는 modules: enterprise 문자열을 찾아 MongoDB 엔터프라이즈 바이너리를 사용하고 있는지 확인합니다.

이 튜토리얼에서는 Kerberos 인증 및 AD 권한 부여를 위해 MongoDB를 구성하는 방법을 설명합니다.

자체 MongoDB Server에서 이 절차를 수행하려면 자체 특정 인프라, 특히 Kerberos 구성, AD 쿼리 구성 또는 사용자 관리와 관련하여 지정된 절차를 수정해야 합니다.

기본적으로 MongoDB는 AD 서버에 바인딩할 때 TLS/SSL 연결을 생성합니다. 이를 위해서는 MongoDB Server의 호스트가 AD 서버의 인증 기관(CA) 인증서에 액세스할 수 있도록 구성해야 합니다.

이 튜토리얼에서는 필요한 호스트 구성에 대한 지침을 제공합니다.

이 튜토리얼에서는 사용자가 AD 서버의 CA 인증서에 액세스할 수 있고 MongoDB 서버에 인증서 사본을 만들 수 있다고 가정합니다.

이 튜토리얼에서는 다음 예제 AD 객체를 제공된 쿼리, 구성 및 출력의 기반으로 사용합니다. 각 객체는 가능한 속성의 하위 집합만 표시합니다.

dn:CN=bob,CN=Users,DC=marketing,DC=example,DC=com
userPrincipalName: bob@marketing.example.com
memberOf: CN=marketing,CN=Users,DC=example,DC=com
dn:CN=alice,CN=Users,DC=engineering,DC=example,DC=com
userPrincipalName: alice@engineering.example.com
memberOf: CN=web,CN=Users,DC=example,DC=com
memberOf: CN=PrimaryApplication,CN=Users,DC=example,DC=com
dn:CN=sam,CN=Users,DC=dba,DC=example,DC=com
userPrincipalName: sam@dba.example.com
memberOf: CN=dba,CN=Users,DC=example,DC=com
memberOf: CN=PrimaryApplication,CN=Users,DC=example,DC=com
dn:CN=joe,CN=Users,DC=analytics,DC=example,DC=com
userPrincipalName: joe@analytics.example.com
memberof: CN=marketing,CN=Users,DC=example,DC=com
dn:CN=marketing,CN=Users,DC=example,DC=com
member:CN=bob,CN=Users,DC=marketing,DC=example,DC=com
member:CN=joe,CN=Users,DC=analytics,DC=example,DC=com
dn:CN=engineering,CN=Users,DC=example,DC=com
member:CN=web,CN=Users,DC=example,DC=com
member:CN=dba,CN=users,DC=example,DC=com
dn:CN=web,CN=Users,DC=example,DC=com
member:CN=alice,CN=Users,DC=engineering,DC=example,DC=com
dn:CN=dba,CN=Users,DC=example,DC=com
member:CN=sam,CN=Users,DC=dba,DC=example,DC=com
dn:CN=PrimaryApplication,CN=Users,DC=example,DC=com
member:CN=sam,CN=Users,DC=dba,DC=example,DC=com
member:CN=alice,CN=Users,DC=engineering,DC=example,DC=com

이 튜토리얼에서는 사용자 이름과 비밀번호를 사용하여 AD 서버에서 쿼리를 수행합니다. 제공된 자격 증명에는 security.ldap.userToDNMapping 또는 security.ldap.authz.queryTemplate 와 관련된 쿼리를 지원하기 위한 AD 서버에 대한 충분한 권한이 있어야 합니다.

MongoDB LDAP 권한 부여를 위해서는 복제본 세트의 모든 mongod 가 최소한 MongoDB 3 에 있어야 합니다.4.0 이상.

MongoDB LDAP 권한 부여를 위해서는 샤드 클러스터의 모든 mongodmongos 가 최소 MongoDB 3 에 있어야 합니다.4.0 이상.

1

TLS/SSL을 통해 AD (AD) 서버에 연결하려면 mongod 또는 mongos 이(가) AD 서버의 인증 기관(CA) 인증서에 액세스해야 합니다.

Linux에서는 ldap.conf 파일의 TLS_CACERT 또는 TLS_CACERTDIR 옵션을 통해 AD 서버의 CA 인증서를 지정합니다.

플랫폼의 패키지 관리자가 ldap.conf MongoDB Enterprise의 종속성을 설치하는 동안 파일을 libldap 생성합니다. 구성 파일 또는 참조된 옵션에 대한 전체 문서는 ldap.conf 를 참조하세요. .

Microsoft Windows 에서는 플랫폼의 자격 증명 관리 도구를 사용하여 AD 서버의 인증 기관(CA) 인증서를 로드합니다. 정확한 자격 증명 관리 도구는 Windows 버전에 따라 다릅니다. 이 도구를 사용하려면 사용 중인 Windows 버전에 대한 설명서를 참조하세요.

mongod 또는 mongosAD CA 파일에 액세스할 수 없는 경우, Active Directory 서버에 대한 TLS/SSL 연결을 생성할 수 없습니다.

선택적으로 security.ldap.transportSecuritynone 로 설정하여 TLS/SSL을 비활성화합니다.

경고

transportSecuritynone 로 설정하면 MongoDB와 AD 서버 간에 사용자 자격 증명을 포함한 일반 텍스트 정보가 전송됩니다.

2

Windows 운영 체제에서 실행되는 MongoDB 서버의 경우, 다음을 사용해야 합니다. MongoDB 서비스를 실행하는 계정에 SPN(서비스 주체 이름)을 할당합니다.

setspn.exe -S <service>/<fully qualified domain name> <service account name>

예제

예를 들어 mongodmongodbserver.example.com 에서 mongodb_dev@example.com 서비스 계정 이름으로 mongodb 라는 서비스로 실행되는 경우 SPN을 할당하는 명령은 다음과 같습니다.

setspn.exe -S mongodb/mongodbserver.example.com mongodb_dev@example.com

참고

Windows Server 2003 는 setspn.exe -S 을(를) 지원하지 않습니다. 에 대한 전체 문서는 setspn.exe setspn.exe 를 참조하세요. .

3

Linux 플랫폼에서 실행되는 MongoDB 서버의 경우, 해당 서버에서 실행 중인 MongoDB 인스턴스와 관련된 키탭 파일 의 복사본이 서버에 있는지 확인해야 합니다.

MongoDB 서비스를 실행하는 Linux 사용자에게 키탭 파일에 대한 읽기 권한을 부여해야 합니다. 키탭 파일 위치의 전체 경로를 기록해 둡니다.

4

mongosh --host --port 옵션을 사용하여 를 사용하여 MongoDB 서버에 연결합니다.

mongosh --host <hostname> --port <port>

현재 MongoDB 서버가 인증을 시행하고 있는 경우, userAdmin 또는 userAdminAnyDatabase 에서 제공하는 것과 같은 역할 관리 권한이 있는 사용자로 admin 데이터베이스에 인증해야 합니다. MongoDB 서버의 구성된 인증 메커니즘에 적합한 --authenticationMechanism 를 포함합니다.

mongosh --host <hostname> --port <port> --username <user> --password <pass> --authenticationDatabase="admin" --authenticationMechanism="<mechanism>"

참고

Windows MongoDB 배포의 경우 mongoshmongo.exe로 바꿔야 합니다.

5

AD 를 사용하여 MongoDB 사용자를 관리하려면 userAdmin 또는 userAdminAnyDatabase 에서제공하는 역할과 같이 역할을 생성하고 관리할 수 있는 admin 데이터베이스에 역할을 하나 이상 생성해야 합니다.

역할의 이름은 AD 그룹의 고유 이름과 정확히 일치해야 합니다. 이 그룹에는 AD 사용자가 한 명 이상 있어야 합니다.

사용 가능한 Active Directory 그룹 이 주어지면 다음 작업이 수행됩니다.

  • AD 그룹 CN=dba,CN=Users,DC=example,DC=com 에 해당하는 역할을 생성합니다.

  • admin 데이터베이스에서 userAdminAnyDatabase 역할을 할당합니다.

var admin = db.getSiblingDB("admin")
admin.createRole(
{
role: "CN=dba,CN=Users,DC=example,DC=com",
privileges: [],
roles: [ "userAdminAnyDatabase" ]
}
)

또는 사용자가 사용자 관리 권한을 가져야 하는 각 데이터베이스에 대해 userAdmin 역할을 부여할 수 있습니다. 이러한 역할은 역할 생성 및 관리에 필요한 권한을 제공합니다.

중요

최소 권한 원칙 적용 고려 MongoDB 역할, AD 그룹 또는 그룹 멤버십을 구성할 때 사용합니다.

6

MongoDB 구성 파일 은 파일 확장자가 .conf 인 일반 텍스트 YAML 파일입니다.

  • 기존 MongoDB 배포를 업그레이드하는 경우 현재 구성 파일을 복사하고 해당 복사본에서 작업합니다.

  • (Linux만 해당) 새 배포 이고 플랫폼의 패키지 관리자를 사용하여 MongoDB Enterprise를 설치한 경우 설치에는 /etc/mongod.conf 기본 구성 파일이 포함됩니다. 해당 기본 구성 파일을 사용하거나 해당 파일의 복사본을 만들어 작업하세요.

  • 이러한 파일이 없는 경우 확장자가 .conf 인 빈 파일을 만들고 해당 새 구성 파일에서 작업합니다.

7

MongoDB 구성 파일에서 security.ldap.serversAD 서버의 호스트 및 포트로 설정합니다. AD 인프라에 복제 목적의 여러 AD 서버가 포함된 경우 서버의 호스트와 포트를 쉼표로 구분된 목록으로 security.ldap.servers 지정하세요.

예제

activedirectory.example.net 에 있는 AD 서버에 연결하려면 구성 파일에 다음을 포함합니다.

security:
ldap:
servers: "activedirectory.example.net"

쿼리를 수행하려면 MongoDB가 AD 서버에 바인딩되어야 합니다. 기본적으로 MongoDB는 간단한 인증 메커니즘을 사용하여 AD 서버에 자체적으로 바인딩합니다.

또는 구성 파일에서 다음 설정을 구성하여 SASL 를 사용하여 AD 서버에 바인딩할 수 있습니다.

이 튜토리얼에서는 기본 simple LDAP 인증 메커니즘을 사용합니다.

8

MongoDB 구성 파일에서 security.authorizationenabled 로, setParameter authenticationMechanismsGSSAPI로 설정합니다.

Kerberos를 통한 인증을 활성화하려면 구성 파일에 다음을 포함합니다.

security:
authorization: "enabled"
setParameter:
authenticationMechanisms: "GSSAPI"
9

MongoDB 구성 파일에서 를 security.ldap.authz.queryTemplate RFC4516 로 설정합니다. 형식이 지정된 LDAP 쿼리 URL 템플릿입니다.

템플릿에서는 다음 중 하나를 사용할 수 있습니다.

  • {USER} 자리 표시자를 사용하여 인증된 사용자 이름을 LDAP 쿼리 URL로 대체합니다.

  • {PROVIDED_USER} 인증 또는 LDAP 변환 전에 제공된 사용자 이름은 LDAP 쿼리로 대체하는 자리 표시자입니다. (버전 4.2부터 사용 가능)

사용자 그룹을 조회하기 위한 쿼리 템플릿을 디자인하세요.

참고

RFC4515 에 대한 전체 설명 ,4516 RFC 또는 AD 쿼리는 이 튜토리얼의 범위를 벗어납니다.queryTemplate 이 튜토리얼에서 제공하는 는 예시일 뿐이며, 특정 AD 배포서버에는 적용되지 않을 수 있습니다.

예제

다음 쿼리 템플릿은 {USER} 재귀 그룹 멤버십에 따라 을(를) 멤버로 나열하는 모든 그룹을 반환합니다. 이 LDAP 쿼리는 그룹 객체가 속성을 사용하여 전체 사용자 DN(고유 이름)을 저장하여 사용자 멤버십을 추적한다고 member 가정합니다. 쿼리에는 1.2.840.113556.1.4.1941 LDAP_MATCHING_RULE_IN_CHAIN 에 대한 AD 특정 일치 규칙 OID 가 포함됩니다. . 이 일치 규칙은 LDAP 검색 필터에 대한 AD 특정 확장입니다.

security:
ldap:
authz:
queryTemplate:
"DC=example,DC=com??sub?(&(objectClass=group)(member:1.2.840.113556.1.4.1941:={USER}))"

MongoDB는 쿼리 템플릿을 사용하여 {USER} 을 인증된 사용자 이름으로 대체하여 LDAP 서버를 쿼리합니다.

예를 들어 사용자가 CN=sam,CN=Users,DC=dba,DC=example,DC=com 으로 인증합니다. MongoDB는 queryTemplate 기반으로 LDAP 쿼리를 생성하고, {USER} 토큰을 인증된 사용자 이름으로 대체합니다. Active Directory 서버는 사용자를 구성원으로 직접 또는 전이적으로 나열하는 모든 그룹에 대해 재귀적 그룹 조회를 수행합니다. Active Directory 그룹 을 기반으로 AD 서버는 CN=dba,CN=Users,DC=example,DC=comCN=engineering,CN=Users,DC=example,DC=com 를 반환합니다.

MongoDB는 반환된 각 그룹 DNadmin 데이터베이스의 역할에 매핑합니다. 매핑된 각 그룹 DN 에 대해 admin 데이터베이스에 이름이 정확히 DN 과 일치하는 기존 역할이 있는 경우 MongoDB는 사용자에게 해당 역할에 할당된 역할 및 권한을 부여합니다.

매칭 규칙 LDAP_MATCHING_RULE_IN_CHAIN 에서는 인증 사용자의 전체 고유 이름 을 제공해야 합니다. Kerberos를 userPrincipalName 사용하려면 사용자의 으로 인증해야 하므로 을 사용하여 들어오는 사용자 이름을 DN 으로 security.ldap.userToDNMapping변환해야 합니다. 다음 단계에서는 수신 사용자 이름을 queryTemplate 을 지원하도록 변환하는 방법에 대한 지침을 제공합니다.

10

MongoDB 구성 파일에서 설정하여 userToDNMapping 인증 사용자가 제공한 사용자 이름을 을 지원하는 AD 고유 queryTemplate 이름으로 변환합니다.

예제

다음 userToDNMapping 구성은 match 정규 표현식 필터를 사용하여 제공된 사용자 이름을 캡처합니다. MongoDB는 쿼리를 실행하기 전에 캡처한 사용자 이름을 ldapQuery 쿼리 템플릿에 삽입합니다.

security:
ldap:
userToDNMapping:
'[
{
match : "(.+)",
ldapQuery: "DC=example,DC=com??sub?(userPrincipalName={0})"
}
]'

배포서버와 일치하도록 지정된 샘플 구성을 수정해야 합니다. 예를 들어, ldapQuery 기본 고유 이름 은 사용자 엔터티가 포함된 기본 고유 이름 과 일치해야 합니다. AD 배포를 지원하기 위해 다른 수정이 필요할 수 있습니다.

예제

사용자가 alice@ENGINEERING.EXAMPLE.COM 으로 인증합니다. MongoDB는 먼저 userToDNMapping 에 지정된 모든 변환을 적용합니다. 제공된 구성을 기반으로 MongoDB는 match 단계에서 사용자 이름을 캡처하고 LDAP 쿼리를 실행합니다.

DC=example,DC=com??sub?(userPrincipalName=alice@ENGINEERING.EXAMPLE.COM)

구성된 Active Directory 사용자 에 따라 AD 서버는 CN=alice,CN=Users,DC=engineering,DC=example,DC=com 를 반환해야 합니다.

그런 다음 MongoDB는 queryTemplate 에 구성된 LDAP 쿼리를 실행하여 {USER} 토큰을 변환된 사용자 이름 CN=alice,CN=Users,DC=engineering,DC=example,DC=com 로 바꿉니다.

중요

userToDNMapping의 매개 substitution 변수를 사용하여 그룹 이름을 변환하는 경우 대체 결과 RFC4514 이스케이프된 문자열.

11

MongoDB는 AD 서버에서 쿼리를 수행하려면 자격 증명이 필요합니다.

구성 파일에서 다음 설정을 구성합니다.

security:
ldap:
bind:
queryUser: "mongodbadmin@dba.example.com"
queryPassword: "secret123"

Windows MongoDB Server에서는 security.ldap.bind.useOSDefaultstrue 로 설정하여 queryUserqueryPassword 대신 OS 사용자의 자격 증명을 사용할 수 있습니다.

queryUser 에는 MongoDB를 대신하여 모든 LDAP 쿼리를 수행할 수 있는 권한이 있어야 합니다.

12

구성에 필요한 추가 옵션을 포함합니다. 예를 들어 원격 클라이언트를 배포에 연결하거나 배포 멤버가 다른 호스트에서 실행되도록 하려면 net.bindIp 설정을 지정합니다.

13

이 절차 중에 생성된 구성 파일의 경로를 지정하여 --config 옵션을 사용하여 MongoDB 서버를 시작합니다. 현재 MongoDB 서버가 실행 중인 경우 서버 중지를 위한 적절한 준비를 합니다.

Linux MongoDB Servers

Linux에서는 KRB5_KTNAME 환경 변수를 지정하여 MongoDB 서버의 키탭 파일 경로를 지정해야 합니다.

env KRB5_KTNAME <path-to-keytab> mongod --config <path-to-config-file>

Microsoft Windows MongoDB Servers

Windows 에서는 절차의 앞부분에서 구성된 대로 MongoDB Server를 서비스 주체 계정으로 시작해야 합니다.

mongod.exe --config <path-to-config-file>
14

MongoDB 서버에 연결하여 직접 또는 전이적 그룹 멤버십이 userAdmin, userAdminAnyDatabase 를 가진 admin 데이터베이스의 MongoDB 역할 또는 이와 동등한 권한을 가진 사용자 지정 역할에 해당하는 사용자로 인증합니다.

mongosh 를 사용하여 MongoDB 서버에 인증하고 다음 옵션을 설정합니다.

예제

이 절차의 이전 단계에서는 필요한 권한으로 admin 데이터베이스에서 dn:CN=dba,CN=Users,DC=example,DC=com 역할을 구성했습니다. 이 역할은 AD 그룹에 해당합니다. 구성된 AD 사용자 를 기반으로 sam@dba.example.com 사용자로 인증하고 필요한 권한을 받을 수 있습니다.

mongosh --username sam@DBA.EXAMPLE.COM --password --authenticationMechanisms="GSSAPI" --authenticationDatabase "$external" --host <hostname> --port <port>

-p 명령줄 옵션에 비밀번호를 지정하지 않으면 mongosh 에서 비밀번호를 입력하라는 메시지를 표시합니다.

Windows MongoDB 배포에서는mongosh 대신 mongo.exe 를 사용해야 합니다

구성된 Active Directory 사용자가 주어지면 사용자는 성공적으로 인증되고 적절한 권한을 받습니다.

참고

기존의$external 이 아닌 사용자로 인증하려면 --authenticationMechanism 를 SCRAM 인증 메커니즘(예: SCRAM-SHA-1 또는 SCRAM-SHA-256)으로 설정합니다. 이를 위해서는 MongoDB 서버의 setParameter authenticationMechanismsSCRAM-SHA-1 및/또는 SCRAM-SHA-256 가 적절하게 포함되어 있어야 합니다.

15

MongoDB 권한 부여에 사용하려는 AD 서버의 각 그룹에 대해 MongoDB 서버의 admin 데이터베이스에서 일치하는 역할을 생성해야 합니다.

예제

다음 작업에서는 AD 그룹 DN CN=PrimaryApplication,CN=Users,DC=example,DC=com 의 이름을 딴 역할을 생성하고 해당 그룹에 적절한 역할 및 권한을 할당합니다.

db.getSiblingDB("admin").createRole(
{
role: "CN=PrimaryApplication,CN=Users,DC=example,DC=com",
privileges: [],
roles: [
{ role: "readWrite", db: "PrimaryApplication" }
]
}
)

구성된 Active Directory 그룹 이 주어지면 MongoDB는 PrimaryApplication 데이터베이스에서 sam@DBA.EXAMPLE.COM 또는 alice@ENGINEERING.EXAMPLE.COM (으)로 인증하는 사용자에게 readWrite 역할을 부여합니다.

참고

admin 데이터베이스에서 역할을 관리하려면 admin userAdmin } , userAdminAnyDatabase 또는 이와 동등한 권한을 가진 사용자 지정 역할이 있는 사용자로 인증되어야 합니다.

16

$external 데이터베이스에 구성된 사용자 로 기존 설치를 업그레이드하는 경우 Kerberos 인증 및 AD 권한 부여를 위해 MongoDB를 구성한 후 각 사용자가 액세스할 수 있도록 다음 요구 사항을 충족해야 합니다.

  • 사용자는 AD 서버에 해당 사용자 객체가 있습니다.

  • 사용자는 AD 서버에서 적절한 그룹의 멤버십이 있습니다.

  • MongoDB에는 사용자의 AD 그룹에 따라 명명된 admin 데이터베이스에 대한 역할이 포함되어 있으므로 권한이 부여된 사용자가 해당 권한을 유지할 수 있습니다.

예제

$external 데이터베이스에 다음 사용자가 존재합니다.

{
user : "joe@ANALYTICS.EXAMPLE.COM",
roles: [
{ role : "read", db : "web_analytics" },
{ role : "read", db : "PrimaryApplication" }
]
}

사용자가 AD 그룹 CN=marketing,CN=Users,DC=example,DC=com 에 속해 있다고 가정하면 다음 작업은 적절한 권한을 가진 일치하는 역할을 생성합니다.

db.getSiblingDB("admin").createRole(
{
role: "CN=marketing,CN=Users,DC=example,DC=com",
privileges: [],
roles: [
{ role: "read", db: "web_analytics" }
{ role: "read", db: "PrimaryApplication" }
]
}
)

구성된 queryTemplate 에 따라 MongoDB는 CN=marketing,CN=Users,DC=example,DC=com 그룹에 직접 또는 전이 멤버십이 있는 모든 사용자에게 web_analyticsPrimaryApplication 데이터베이스에서 read 작업을 수행할 수 있는 권한을 부여합니다.

중요

해당 AD 그룹의 역할을 구성할 때는 해당 그룹의 멤버십이 있는 모든 사용자가 할당된 역할과 권한을 받을 수 있다는 점을 기억하세요. 최소 권한 원칙 적용 고려 MongoDB 역할, AD 그룹 또는 그룹 멤버십을 구성할 때 사용합니다.

$external 이 아닌 데이터베이스의 사용자가 MongoDB에 액세스할 수 있도록 계속 허용하려면 setParameter authenticationMechanisms 구성 옵션에 SCRAM 인증 메커니즘(예: SCRAM-SHA-1 및/또는 SCRAM-SHA-256)을 포함해야 합니다.

setParameter:
authenticationMechanisms: "GSSAPI,SCRAM-SHA-1,SCRAM-SHA-256"

또는 위의 절차에 따라$external 가 아닌 사용자를 AD 로 전환합니다.

이 절차를 수행하면 다음 구성 파일이 생성됩니다.

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: "GSSAPI"

중요

지정된 샘플 구성을 AD 스키마, 디렉토리 구조 및 구성에 맞게 수정해야 합니다. 배포서버를 위한 추가 구성 파일 옵션 이 필요할 수도 있습니다.

역할 및 권한 구성에 대한 자세한 내용은 다음을 참조하세요.

구성 단계를 완료한 후 mongokerberos 도구를 사용하여 구성의 유효성을 검사할 수 있습니다.

mongokerberos 은(는) MongoDB와 함께 사용하기 위한 플랫폼의 Kerberos 구성을 확인하고, MongoDB 클라이언트의 Kerberos 인증이 예상대로 작동하는지 테스트할 수 있는 편리한 방법을 제공합니다. 자세한 내용은 mongokerberos 문서를 참조하세요.

mongokerberos MongoDB Enterprise에서만 사용할 수 있습니다.

← Kerberos 인증 문제 해결