자체 관리 배포의 Kerberos 인증
개요
MongoDB Enterprise 는 Kerberos MongoDB 및 인스턴스에 대한mongod
mongos
클라이언트의 인증 을 지원 합니다. Kerberos 는 대규모 클라이언트/ 서버 시스템을 위한 업계 표준 인증 프로토콜 입니다. Kerberos 를 사용하면 MongoDB 와 애플리케이션이 기존 인증 인프라 및 프로세스를 활용할 수 있습니다. MongoDB Enterprise 는 MIT 구현 만 Kerberos 지원합니다. 의 .
Kerberos 구성 요소 및 MongoDB
Principals
Kerberos 기반 시스템에서 인증된 통신의 모든 참가자를 "주체"라고 하며, 모든 주체는 고유한 이름을 가져야 합니다.
주체는 영역이라는 관리 단위에 속합니다. Kerberos 키 배포 센터(KDC)는 각 영역에 대해 영역의 주체 및 주체와 관련된 "비밀 키" 데이터베이스를 유지 관리합니다.
클라이언트-서버 인증의 경우 클라이언트는 KDC에 특정 자산에 대한 액세스를 위한 "티켓"을 요청합니다. KDC는 클라이언트의 비밀과 서버의 비밀을 사용하여 비밀을 숨기면서도 클라이언트와 서버가 서로를 상호 인증할 수 있는 티켓을 구성합니다.
Kerberos 지원용 MongoDB 구성의 경우, 이해 관계가 있는 사용자 주체 및 서비스 주체라는 두 가지의 주체 이름이 있습니다.
사용자 주체
Kerberos를 사용하여 인증하려면 MongoDB의 Kerberos 사용자 주체를 $external
데이터베이스에 추가해야 합니다. 사용자 주체 이름은 다음과 같은 형식을 갖습니다.
<username>@<KERBEROS REALM>
Kerberos를 사용하여 인증하려는 모든 사용자에 대해 MongoDB의 $external
데이터베이스에 해당 사용자를 생성해야 합니다.
2} 인증 사용자(Kerberos, LDAP 또는 x.509 사용자)와 함께 클라이언트 세션 및 인과적 일관성 보장을 사용하려면 사용자 이름이 10KB보다 클 수 없습니다. $external
MongoDB 에 사용자를 추가하고 해당 사용자로 인증하는 예는 Linux 에서 Kerberos 인증을 사용 MongoDB 자체 관리형 MongoDB 구성 및 Windows 에서 Kerberos 인증을 사용하여 자체 관리형 MongoDB 구성을 참조하세요.
서비스 주체
모든 MongoDB mongod
및 mongos
인스턴스(Windows의 경우 mongod.exe
또는 mongos.exe
)에는 연결된 서비스 주체가 있어야 합니다. 서비스 주체 이름은 다음과 같은 형식을 갖습니다.
<service>/<fully qualified domain name>@<KERBEROS REALM>
MongoDB의 경우 <service>
기본값은 mongodb
입니다. 예를 들어 m1.example.com
이 MongoDB 서버이고 example.com
이 EXAMPLE.COM
Kerberos 영역을 유지 관리하는 경우, m1
은 서비스 주체 이름 mongodb/m1.example.com@EXAMPLE.COM
을 가져야 합니다.
<service>
에 다른 값을 지정하려면 mongod
또는 mongos
(또는 mongod.exe
또는 mongos.exe
)를 시작하는 동안 serviceName
을 사용합니다. mongosh
또는 다른 클라이언트는 serviceName
을 사용하여 다른 서비스 주체 이름을 지정할 수도 있습니다.
서비스 주체 이름은 서비스 주체 이름의 FQDN(정규화된 도메인 이름) 부분을 사용하여 네트워크를 통해 연결할 수 있어야 합니다.
기본적으로 Kerberos는 DNS를 사용하여 호스트를 확인하기 전에 /etc/krb5.conf
파일을 사용하여 호스트를 식별하려고 시도합니다.
Windows에서 MongoDB를 서비스로 실행하는 경우, MongoDB Windows 서비스에 서비스 주체 이름 할당을 참조하세요.
Linux Keytab Files
Linux 시스템은 서비스 주체에 대한 Kerberos 인증 키를 키탭 파일에 저장할 수 있습니다. Linux에서 실행되는 각 Kerberized mongod
및 mongos
인스턴스는 해당 서비스 주체에 대한 키가 포함된 키탭 파일에 액세스할 수 있어야 합니다.
키탭 파일을 안전하게 유지하려면 mongod
또는 mongos
프로세스를 실행하는 사용자로만 액세스를 제한하는 파일 권한을 사용합니다.
티켓
Linux에서 MongoDB 클라이언트는 Kerberos의 kinit
프로그램을 사용하여 사용자 주체를 서버에 인증하기 위해 자격 증명 캐시를 초기화할 수 있습니다.
Windows Active 디렉토리
Linux 시스템과 달리 Windows에서 실행 중인 mongod
및 mongos
인스턴스는 키탭 파일에 액세스할 필요가 없습니다. 대신 mongod
및 mongos
인스턴스는 운영 체제별 자격 증명 저장소에서 서버 자격 증명을 읽습니다.
그러나 Windows Active Directory에서는 Linux 시스템에서 사용할 수 있도록 키탭 파일을 내보낼 수 있습니다. Ktpass 참조 을(를) 참조하세요.
Kerberos로 인증
Kerberos 지원 및 인증을 위해 MongoDB 를 구성하려면 Linux 에서 Kerberos 인증을 사용 MongoDB 자체 관리형 MongoDB 구성 및 Windows 에서 Kerberos 인증을 사용하여 자체 관리형 MongoDB 구성을 참조하세요.
운영 고려 사항
DNS
mongod
또는 mongos
인스턴스를 실행하는 각 호스트에는 A
및 PTR
DNS 레코드가 모두 있어야 정방향 및 역방향 조회를 제공할 수 있습니다.
A
및 PTR
DNS 레코드가 없으면 호스트가 Kerberos 도메인 또는 KDC(키 배포 센터)의 구성 요소를 확인할 수 없습니다.
시스템 시간 동기화
인증에 성공하려면 각 mongod
및 mongos
인스턴스의 시스템 시간이 Kerberos 인프라에 있는 다른 호스트의 시스템 시간에서 5분 이내여야 합니다.
Kerberized MongoDB 환경
드라이버 지원
다음 MongoDB 드라이버는 Kerberos 인증을 지원합니다.
추가 MongoDB 인증 메커니즘과 함께 사용
MongoDB 는 다른 인증 메커니즘과 함께 Kerberos 인증 을 사용하도록 지원하지만, 다른 메커니즘은 필요한 경우에만 추가하세요. 자세한 내용은 Linux 에서 Kerberos 인증을 사용 MongoDB 자체 관리형 MongoDB 구성 및 Windows 에서 Kerberos 인증을 사용하여 자체 관리형 MongoDB 구성의 Incorporate Additional Authentication Mechanisms
섹션을 참조하세요.
테스트 및 검증
mongokerberos
프로그램은 MongoDB와 함께 사용할 플랫폼의 Kerberos 구성을 확인하고 MongoDB 클라이언트의 Kerberos 인증이 예상대로 작동하는지 테스트할 수 있는 편리한 방법을 제공합니다. 자세한 내용은 mongokerberos
문서를 참조하세요.
mongokerberos
MongoDB Enterprise에서만 사용할 수 있습니다.