자체 관리형 배포서버에서 사용자 만들기
이 페이지의 내용
액세스 제어가 활성화되면 사용자는 자신을 식별해야 합니다. 사용자에게 하나 이상의 역할을 부여해야 합니다. 역할은 사용자에게 MongoDB 리소스에 대해 특정 조치를 수행할 수 있는 권한을 부여합니다.
MongoDB 시스템의 각 애플리케이션과 사용자는 고유한 사용자에게 매핑되어야 합니다. 이러한 액세스 격리 원칙은 액세스 해지 및 지속적인 사용자 유지 관리를 용이하게 합니다. 최소 권한의 시스템을 보장하려면 사용자에게 필요한 최소 권한 세트만 부여합니다.
이 페이지의 사용자 정보는 별도로 지정하지 않는 한 다음 환경 모두에서 호스팅되는 자체 관리 배포서버에 적용됩니다.
MongoDB Enterprise: MongoDB의 구독 기반 자체 관리 버전
MongoDB Community: MongoDB의 소스 사용 가능 무료 자체 관리 버전
MongoDB Atlas 호환성
다음 제한 사항은 MongoDB Atlas 에서 호스팅되는 배포에만 적용 됩니다. 이러한 제한 사항 중 하나라도 조직 에 문제가 있는 경우 Atlas 지원에 문의 하세요.
MongoDB Atlas cluster에서 데이터베이스 사용자를 추가, 수정 또는 삭제 Atlas CLI, Atlas 관리 API, Atlas UI 또는 지원되는 통합 을 사용해야 합니다. 그렇지 않으면 MongoDB Atlas 는 모든 사용자 수정 사항을 롤백합니다. MongoDB Atlas 에서 사용자를 추가하려면 MongoDB Atlas 설명서에서 데이터베이스 사용자 추가 를 참조하세요.
사용 가능한 MongoDB Atlas 기본 제공 역할 및 특정 권한은 MongoDB 명령의 하위 집합을 지원합니다. 자세한 내용은 M10+ 클러스터에서 지원되지 않는 명령을 참조하세요.
MongoDB Atlas는 MongoDB Atlas 프로젝트당 최대 100명의 데이터베이스 사용자를 지원합니다. 프로젝트에 100명 이상의 데이터베이스 사용자가 필요한 경우 Atlas 지원팀에 문의하세요.
전제 조건
사용자 생성이 가능하려면 다음을 수행해야 합니다.
일상적인 사용자 생성을 위해서는 다음 권한이 있어야 합니다.
데이터베이스에서 새 사용자를 생성하려면 해당 데이터베이스 리소스에
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
데이터베이스에 생성되어야 합니다.
2} 인증 사용자(Kerberos, LDAP 또는 x.509 사용자)와 함께 클라이언트 세션 및 인과적 일관성 보장을 사용하려면 사용자 이름이 10KB보다 클 수 없습니다. $external
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
데이터베이스에 생성되어야 합니다.
2} 인증 사용자(Kerberos, LDAP 또는 x.509 사용자)와 함께 클라이언트 세션 및 인과적 일관성 보장을 사용하려면 사용자 이름이 10KB보다 클 수 없습니다. $external
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
데이터베이스에 생성되어야 합니다.
2} 인증 사용자(Kerberos, LDAP 또는 x.509 사용자)와 함께 클라이언트 세션 및 인과적 일관성 보장을 사용하려면 사용자 이름이 10KB보다 클 수 없습니다. $external
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 배포서버 에 대한 사용자를 관리 하고, 역할을 할당하고, 사용자 지정 역할을 만들려면 자체 관리 배포서버에서 사용자 및 역할 관리를 참조하세요.