액세스 제어가 활성화되면 사용자는 자신을 식별해야 합니다. 사용자에게 하나 이상의 역할을 부여해야 합니다. 역할은 사용자에게 MongoDB 리소스에 대해 특정 조치를 수행할 수 있는 권한을 부여합니다.
MongoDB 시스템의 각 애플리케이션과 사용자는 고유한 사용자에게 매핑되어야 합니다. 이러한 액세스 격리 원칙은 액세스 해지 및 지속적인 사용자 유지 관리를 용이하게 합니다. 최소 권한의 시스템을 보장하려면 사용자에게 필요한 최소 권한 세트만 부여합니다.
이 페이지의 사용자 정보는 다음 환경 모두에서 호스팅되는 자체 관리형 배포서버에 적용됩니다.
MongoDB Enterprise: MongoDB의 구독 기반 자체 관리 버전
MongoDB Community: MongoDB의 소스 사용 가능 무료 자체 관리 버전
MongoDB Atlas 배포서버 에서 데이터베이스 사용자를 만드는 방법을 학습 보려면 mongodb-users를 참조하세요.
전제 조건
사용자 생성이 가능하려면 다음을 수행해야 합니다.
일상적인 사용자 생성을 위해서는 다음 권한이 있어야 합니다.
데이터베이스에서 새 사용자를 생성하려면 해당 데이터베이스 리소스에
createUser조치가 있어야 합니다.
userAdmin 및 userAdminAnyDatabase 기본 제공 역할은 해당 리소스에 대한 createUser 및 grantRole 조치를 제공합니다.
단계
자체 관리형 MongoDB Enterprise 또는 MongoDB Community 배포서버 에 대한 데이터베이스 사용자를 구성하려면 다음 단계를 따르세요.
연결 및 인증
mongosh를 사용하여 프라이머리 mongod에 연결하거나, 샤딩된 클러스터에서 mongos에 연결하고 사용자 관리자 또는 필요한 권한을 가진 사용자로 인증합니다.
-u
<username>, -p 및 --authenticationDatabase <database> 명령줄 옵션으로 mongosh(을)를 시작합니다.
mongosh --port 27017 --authenticationDatabase \ "admin" -u "myUserAdmin" -p
메시지가 표시되면 비밀번호를 입력합니다.
mongosh(을)를 사용하여 데이터베이스 배포에 연결합니다.
mongosh --port 27017
mongosh 에서 인증 데이터베이스 (이 경우 admin)로 전환하고 db.auth(<username>, <pwd>) 메서드를 사용하여 인증합니다.
use admin db.auth("myUserAdmin", passwordPrompt()) // or cleartext password
팁
passwordPrompt() 메서드는 암호를 입력하라는 메시지를 표시합니다. 암호를 문자열로 직접 지정할 수도 있습니다. 암호가 화면에 표시되어 셸 기록에 암호가 유출될 가능성을 방지하려면 passwordPrompt() 방법을 사용하는 것이 좋습니다.
메시지가 표시되면 비밀번호를 입력합니다.
배포서버를 위한 추가 사용자 생성
사용자 관리자로 인증한 후 db.createUser() 메서드를 사용하여 추가 사용자를 생성합니다. 사용자에게 기본 제공 역할 또는 사용자 정의 역할을 할당할 수 있습니다.
다음 작업은 test 데이터베이스에서 readWrite 역할과 reporting 데이터베이스에서 read 역할을 가진 사용자 myTester를 test 데이터베이스에 추가합니다.
use test db.createUser( { user: "myTester", pwd: passwordPrompt(), // or cleartext password roles: [ { role: "readWrite", db: "test" }, { role: "read", db: "reporting" } ] } )
팁
passwordPrompt() 메서드는 암호를 입력하라는 메시지를 표시합니다. 암호를 문자열로 직접 지정할 수도 있습니다. 암호가 화면에 표시되어 셸 기록에 암호가 유출될 가능성을 방지하려면 passwordPrompt() 방법을 사용하는 것이 좋습니다.
사용자를 생성하는 데이터베이스(이 예시에서는 test)는 해당 사용자의 인증 데이터베이스입니다. 사용자는 이 데이터베이스에 대해 인증하더라도 다른 데이터베이스에서 역할을 가질 수 있습니다. 사용자의 인증 데이터베이스는 사용자의 권한을 제한하지 않습니다.
추가 사용자를 생성한 후 mongosh를 종료합니다.
인스턴스에 연결하고 다음 계정으로 인증: myTester
중요
mongosh를 myUserAdmin으로 종료한 후 myTester로 다시 연결합니다.
-u
<username>, -p 및 --authenticationDatabase <database> 명령줄 옵션으로 mongosh(을)를 시작합니다.
mongosh --port 27017 -u "myTester" \ --authenticationDatabase "test" -p
메시지가 표시되면 사용자의 비밀번호를 입력합니다.
mongosh(을)를 사용하여 데이터베이스 배포에 연결합니다.
mongosh --port 27017
mongosh 에서 인증 데이터베이스 (이 경우 admin)로 전환하고 db.auth(<username>, <pwd>) 메서드를 사용하여 인증합니다.
use test db.auth("myTester", passwordPrompt()) // or cleartext password
팁
passwordPrompt() 메서드는 암호를 입력하라는 메시지를 표시합니다. 암호를 문자열로 직접 지정할 수도 있습니다. 암호가 화면에 표시되어 셸 기록에 암호가 유출될 가능성을 방지하려면 passwordPrompt() 방법을 사용하는 것이 좋습니다.
메시지가 표시되면 사용자의 비밀번호를 입력합니다.
추가 예시
사용자 이름/비밀번호 인증
다음 작업은 지정된 이름, 비밀번호 및 역할을 사용하여 reporting 데이터베이스에 사용자를 생성합니다.
팁
passwordPrompt() 메서드는 암호를 입력하라는 메시지를 표시합니다. 암호를 문자열로 직접 지정할 수도 있습니다. 암호가 화면에 표시되어 셸 기록에 암호가 유출될 가능성을 방지하려면 passwordPrompt() 방법을 사용하는 것이 좋습니다.
use reporting db.createUser( { user: "reportsUser", pwd: passwordPrompt(), // or cleartext password roles: [ { role: "read", db: "reporting" }, { role: "read", db: "products" }, { role: "read", db: "sales" }, { role: "readWrite", db: "accounts" } ] } )
Kerberos 인증
Kerberos와 같은 외부 인증 메커니즘을 사용하여 MongoDB에 인증하는 사용자는 mongos 또는 mongod를 허용해 인증을 위한 외부 소스를 참조할 수 있는 $external 데이터베이스에 생성되어야 합니다.
$external 인증 사용자(Kerberos, LDAP 또는 X.509 사용자)와 함께 클라이언트 세션 및 인과적 일관성 보장 을 사용하려면 사용자 이름이 10KB보다 클 수 없습니다.
Kerberos 인증의 경우 Kerberos 주체를 사용자 이름으로 추가해야 합니다. 비밀번호를 지정할 필요는 없습니다.
다음 작업은 records 데이터베이스에 대한 읽기 전용 액세스 권한을 가진 Kerberos 주체 reportingapp@EXAMPLE.NET을 추가합니다.
use $external db.createUser( { user: "reportingapp@EXAMPLE.NET", roles: [ { role: "read", db: "records" } ] } )
팁
MongoDB deployment에 대한 Kerberos 인증 설정에 관한 자세한 내용은 다음 튜토리얼에서 확인하세요.
LDAP 인증
참고
MongoDB 8.0 부터 시작됩니다. LDAP 인증 및 권한 부여 는 더 이상 사용되지 않습니다. LDAP 는 사용할 수 있으며 MongoDB 8 의 수명 기간 동안 변경 없이 계속 작동합니다. LDAP 는 향후 주요 출시하다 에서 제거될 예정입니다.
자세한 내용은 LDAP 사용 중단을 참조하세요.
LDAP와 같은 외부 인증 메커니즘을 사용하여 MongoDB에 인증하는 사용자는 mongos 또는 mongod를 허용해 인증을 위한 외부 소스를 참조할 수 있는 $external 데이터베이스에 생성되어야 합니다.
$external 인증 사용자(Kerberos, LDAP 또는 X.509 사용자)와 함께 클라이언트 세션 및 인과적 일관성 보장 을 사용하려면 사용자 이름이 10KB보다 클 수 없습니다.
LDAP 인증의 경우 사용자 이름을 지정해야 합니다. 비밀번호는 LDAP 서비스에서 처리하므로 지정할 필요가 없습니다.
다음 작업은 records 데이터베이스에 읽기 전용 액세스 권한이 있는 reporting 사용자를 추가합니다.
use $external db.createUser( { user: "reporting", roles: [ { role: "read", db: "records" } ] } )
팁
MongoDB deployment에 대한 LDAP 인증 설정에 관한 자세한 내용은 다음 튜토리얼에서 확인하세요.
X.509 클라이언트 인증서 인증
X.509 클라이언트 인증서 인증과 같은 외부 인증 메커니즘 사용하여 MongoDB 에 인증하는 사용자는 mongos 또는 mongod 이 인증 위해 외부 소스를 참조할 수 있는 $external 데이터베이스 에 생성되어야 합니다.
$external 인증 사용자(Kerberos, LDAP 또는 X.509 사용자)와 함께 클라이언트 세션 및 인과적 일관성 보장 을 사용하려면 사용자 이름이 10KB보다 클 수 없습니다.
X.509 클라이언트 인증서 인증 의 경우 클라이언트 인증서의 subject 값을 MongoDB 사용자로 추가해야 합니다. 각 고유 X.509 클라이언트 인증서는 단일 MongoDB 사용자에 해당합니다. 비밀번호를 지정할 필요는 없습니다.
다음 작업은 records 데이터베이스에 대한 읽기 전용 액세스 권한이 있는 클라이언트 인증서 주체 CN=myName,OU=myOrgUnit,O=myOrg,L=myLocality,ST=myState,C=myCountry 사용자를 추가합니다.
use $external db.createUser( { user: "CN=myName,OU=myOrgUnit,O=myOrg,L=myLocality,ST=myState,C=myCountry", roles: [ { role: "read", db: "records" } ] } )
팁
MongoDB deployment 위한 X.509 클라이언트 인증서 인증 설정에 대한 자세한 내용은 다음 튜토리얼을 참조하세요.
다음 단계
자체 관리형 MongoDB Enterprise 또는 MongoDB Community 배포서버 에 대한 사용자를 관리 하고, 역할을 할당하고, 사용자 지정 역할을 만들려면 자체 관리 배포서버에서 사용자 및 역할 관리를 참조하세요.