Windows에서 Kerberos 인증을 사용하여 자체 관리 MongoDB 구성
개요
MongoDB Enterprise 는 Kerberos 서비스 를 사용한 인증 을 지원합니다. Kerberos 는 대규모 클라이언트/ 서버 시스템을 위한 업계 표준 인증 프로토콜 입니다. Kerberos 를 사용하면 MongoDB 와 애플리케이션이 기존 인증 인프라 및 프로세스를 활용할 수 있습니다. MongoDB Enterprise 는 MIT 구현 만 Kerberos 지원합니다. 의 .
전제 조건
Kerberos 배포 설정 및 구성은 이 문서의 범위를 벗어납니다. 이 튜토리얼에서는 각 mongod.exe
및 인스턴스에 대해 Kerberos mongos.exe
서비스 주체 를 구성했다고 가정합니다.
복제본 세트 및 샤딩된 클러스터의 경우, 구성에서 IP 주소나 정규화되지 않은 호스트 이름 대신 FQDN(정규화된 도메인 이름)을 사용해야 합니다. Kerberos 영역을 올바르게 확인하고 연결할 수 있도록 하려면 GSSAPI용 FQDN을 사용해야 합니다.
절차
mongod.exe
Kerberos 없이 을(를) 시작합니다.
Kerberos 사용자를 처음 추가하려면 Kerberos 지원 없이 mongod.exe
를 시작합니다.
Kerberos 사용자가 이미 MongoDB에 있고 사용자 생성에 필요한 권한이 있는 경우, Kerberos 지원으로 mongod.exe
를 시작할 수 있습니다.
배포에 적합한 추가 설정을 포함하세요.
참고
mongod
mongos
{ 2} 및 는 기본적으로 로컬 호스트에 바인딩됩니다. 배포 구성원이 다른 호스트에서 실행되거나 원격 클라이언트를 배포에 연결하려는 경우 --bind_ip
또는 net.bindIp
를 지정해야 합니다.
에 mongod
연결합니다.
mongosh
를 mongod.exe
인스턴스에 연결합니다. mongod.exe
에 --auth
가 활성화되어 있는 경우 사용자를 만드는 데 필요한 권한으로 연결해야 합니다.
MongoDB에 Kerberos 주체를 추가합니다.
Kerberos 주체 <username>@<KERBEROS REALM>
를 $external
데이터베이스의 MongoDB에 추가합니다. 대문자만을 사용해 Kerberos 영역을 지정합니다. $external
데이터베이스를 통해 mongod.exe
가 외부 소스(예: Kerberos)를 사용하여 인증할 수 있습니다. 사용자의 권한을 지정하려면 사용자에게 역할을 할당합니다.
2} 인증 사용자(Kerberos, LDAP 또는 x.509 사용자)와 함께 클라이언트 세션 및 인과적 일관성 보장을 사용하려면 사용자 이름이 10KB보다 클 수 없습니다. $external
다음 예에서는 records
데이터베이스에 대한 읽기 전용 액세스 권한이 있는 Kerberos 주체 reportingapp@EXAMPLE.NET
을 추가합니다.
use $external db.createUser( { user: "reportingapp@EXAMPLE.NET", roles: [ { role: "read", db: "records" } ] } )
필요에 따라 주체를 추가합니다. Kerberos를 사용하여 인증하려는 모든 사용자에 대해 MongoDB에서 해당 사용자를 생성해야 합니다. 사용자 생성 및 관리에 대한 자세한 내용은 사용자 관리 명령을 참조하세요.
mongod.exe
Kerberos 지원 으로 를 시작합니다.
서비스 주체 계정으로 mongod.exe
를 시작해야 합니다.
Kerberos 지원으로 mongod.exe
를 시작하려면 mongod.exe
매개 변수 authenticationMechanisms
를 GSSAPI
로 설정합니다.
mongod.exe --setParameter authenticationMechanisms=GSSAPI <additional mongod.exe options>
구성에 필요한 추가 옵션을 포함합니다. 예를 들어 원격 클라이언트를 배포에 연결하거나 배포 구성원이 다른 호스트에서 실행되도록 하려면 --bind_ip
를 지정합니다.
예를 들어 다음은 Kerberos를 지원하는 독립형 mongod.exe
인스턴스를 시작합니다:
mongod.exe --auth --setParameter authenticationMechanisms=GSSAPI --bind_ip localhost,<hostname(s)|ip address(es)>
mongosh.exe
shell mongod.exe
셸 을 에 연결하고 인증합니다.
mongosh
shell 셸 클라이언트 Kerberos application@EXAMPLE.NET
를 Kerberos 주체 로 연결합니다.
명령줄에서 연결하고 인증할 수 있습니다.
cmd.exe
사용:
mongosh.exe --host hostname.example.net --authenticationMechanism=GSSAPI --authenticationDatabase=$external --username reportingapp@EXAMPLE.NET
Windows PowerShell
사용:
mongosh.exe --host hostname.example.net --authenticationMechanism=GSSAPI --authenticationDatabase='$external' --username reportingapp@EXAMPLE.NET
호스트 이름이 Kerberos 이름과 일치하는 시스템에 연결하는 경우 --host
옵션에 IP 주소나 정규화되지 않은 호스트 이름 대신 FQDN(정규화된 도메인 이름)을 지정해야 합니다.
Kerberos shell shell 호스트 이름이 Kerberos 이름과 일치하지 않는 시스템에 연결하는 경우, 먼저mongosh
셸 을mongod.exe
에 연결한 다음mongosh
셸 에서db.auth()
메서드를 사용하여 $external
에서 인증합니다. 데이터베이스.
use $external db.auth( { mechanism: "GSSAPI", user: "reportingapp@EXAMPLE.NET" } )
추가 고려 사항
Kerberos 에 대해 mongos.exe
구성
Kerberos 지원으로 mongos.exe
를 시작하려면 mongos.exe
매개 변수 authenticationMechanisms
를 GSSAPI
로 설정합니다. 서비스 주체 계정으로 mongos.exe
를 시작해야 합니다.
mongos.exe --setParameter authenticationMechanisms=GSSAPI <additional mongos options>
구성에 필요한 추가 옵션을 포함합니다. 예를 들어 원격 클라이언트를 배포에 연결하거나 배포 구성원이 다른 호스트에서 실행되도록 하려면 --bind_ip
를 지정합니다.
예를 들어 다음은 Kerberos를 지원하는 mongos
인스턴스를 시작합니다.
mongos.exe --setParameter authenticationMechanisms=GSSAPI --configdb shard0.example.net, shard1.example.net,shard2.example.net --keyFile C:\<path>\mongos.keyfile --bind_ip localhost,<hostname(s)|ip address(es)>
구성에 필요한 대로 추가적인 mongos.exe
옵션을 수정하거나 포함합니다. 예를 들어, 샤딩된 클러스터 멤버의 내부 인증에 --keyFile
을 사용하는 대신 x.509 멤버 인증을 사용할 수 있습니다.
MongoDB Windows 서비스에 서비스 주체 이름 할당
setspn.exe
를 사용하여 mongod.exe
및 mongos.exe
서비스를 실행하는 계정에 SPN(서비스 사용자 이름)을 할당합니다.
setspn.exe -S <service>/<fully qualified domain name> <service account name>
예시
mongod.exe
가 서비스 계정 이름 mongodtest
를 사용하여 testserver.mongodb.com
에서 mongodb
라는 서비스로 실행되는 경우 다음과 같이 SPN을 할당합니다.
setspn.exe -S mongodb/testserver.mongodb.com mongodtest
추가 인증 메커니즘 통합
Kerberos 인증(GSSAPI (Kerberos))을 함께 사용할 수 있습니다:
MongoDB의 SCRAM 인증 메커니즘:
LDAP를 위한 MongoDB의 인증 메커니즘:
PLAIN (LDAP SASL)
x.509에 대한 MongoDB의 인증 메커니즘:
다음과 같이 메커니즘을 지정합니다:
--setParameter authenticationMechanisms=GSSAPI,SCRAM-SHA-256
다른 메커니즘은 사용 중인 경우에만 추가하세요. 이 매개 변수 설정은 MongoDB의 클러스터 멤버 내부 인증에 영향을 주지 않습니다.
테스트 및 검증
구성 단계를 완료한 후 mongokerberos
도구를 사용하여 구성의 유효성을 검사할 수 있습니다.
mongokerberos
는 MongoDB와 함께 사용하기 위한 플랫폼의 Kerberos 구성을 확인하고 MongoDB 클라이언트의 Kerberos 인증이 예상대로 작동하는지 테스트하는 편리한 방법을 제공합니다. 자세한 내용은 mongokerberos
문서를 참조하세요.
mongokerberos
MongoDB Enterprise에서만 사용할 수 있습니다.