Docs Menu
Docs Home
/
MongoDB 매뉴얼
/ / / /

자체 관리형 배포서버에서 사용자 만들기

이 페이지의 내용

  • MongoDB Atlas 호환성
  • 전제 조건
  • 단계
  • 연결 및 인증
  • 배포서버를 위한 추가 사용자 생성
  • 인스턴스에 연결하고 다음 계정으로 인증: myTester
  • (으)로 문서 삽입 myTester
  • 추가 예시
  • 사용자 이름/비밀번호 인증
  • Kerberos 인증
  • LDAP 인증
  • x.509 클라이언트 인증서 인증
  • 다음 단계

액세스 제어가 활성화되면 사용자는 자신을 식별해야 합니다. 사용자에게 하나 이상의 역할을 부여해야 합니다. 역할은 사용자에게 MongoDB 리소스에 대해 특정 조치를 수행할 수 있는 권한을 부여합니다.

MongoDB 시스템의 각 애플리케이션과 사용자는 고유한 사용자에게 매핑되어야 합니다. 이러한 액세스 격리 원칙은 액세스 해지 및 지속적인 사용자 유지 관리를 용이하게 합니다. 최소 권한의 시스템을 보장하려면 사용자에게 필요한 최소 권한 세트만 부여합니다.

이 페이지의 사용자 정보는 별도로 지정하지 않는 한 다음 환경 모두에서 호스팅되는 자체 관리 배포서버에 적용됩니다.

  • MongoDB Enterprise: MongoDB의 구독 기반 자체 관리 버전

  • MongoDB Community: MongoDB의 소스 사용 가능 무료 자체 관리 버전

다음 제한 사항은 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 지원팀에 문의하세요.

사용자 생성이 가능하려면 다음을 수행해야 합니다.

일상적인 사용자 생성을 위해서는 다음 권한이 있어야 합니다.

userAdminuserAdminAnyDatabase 기본 제공 역할은 해당 리소스에 대한 createUsergrantRole 조치를 제공합니다.

참고

다음 절차는 SCRAM 인증을 사용합니다. 다른 인증 메커니즘에 대한 자세한 내용은 추가 예시를 참조하세요.

자체 관리형 MongoDB Enterprise 또는 MongoDB Community 배포서버 에 대한 데이터베이스 사용자를 구성하려면 다음 단계를 따르세요.

1

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() 방법을 사용하는 것이 좋습니다.

메시지가 표시되면 비밀번호를 입력합니다.

2

참고

다음 단계에서는 SCRAM 인증을 사용합니다. 다른 인증 메커니즘에 대한 자세한 내용은 추가 예시를 참조하세요.

사용자 관리자로 인증한 후 db.createUser() 메서드를 사용하여 추가 사용자를 생성합니다. 사용자에게 기본 제공 역할 또는 사용자 정의 역할을 할당할 수 있습니다.

다음 작업은 test 데이터베이스에서 readWrite 역할과 reporting 데이터베이스에서 read 역할을 가진 사용자 myTestertest 데이터베이스에 추가합니다.

use test
db.createUser(
{
user: "myTester",
pwd: passwordPrompt(), // or cleartext password
roles: [ { role: "readWrite", db: "test" },
{ role: "read", db: "reporting" } ]
}
)

passwordPrompt() 메서드는 암호를 입력하라는 메시지를 표시합니다. 암호를 문자열로 직접 지정할 수도 있습니다. 암호가 화면에 표시되어 셸 기록에 암호가 유출될 가능성을 방지하려면 passwordPrompt() 방법을 사용하는 것이 좋습니다.

사용자를 생성하는 데이터베이스(이 예시에서는 test)는 해당 사용자의 인증 데이터베이스입니다. 사용자는 이 데이터베이스에 대해 인증하더라도 다른 데이터베이스에서 역할을 가질 수 있습니다. 사용자의 인증 데이터베이스는 사용자의 권한을 제한하지 않습니다.

추가 사용자를 생성한 후 mongosh를 종료합니다.

3

중요

동일한 mongosh 세션에 있는 사용자 간에는 전환할 수 없습니다. 다른 사용자로 인증하면 세션에 인증된 두 사용자의 권한이 모두 부여됩니다. 사용자 간에 전환하려면 mongosh를 종료하고 다시 시작하세요.

mongoshmyUserAdmin으로 종료한 후 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() 방법을 사용하는 것이 좋습니다.

메시지가 표시되면 사용자의 비밀번호를 입력합니다.

4

사용자 myTestertest 데이터베이스에서 읽기 및 쓰기 작업을 수행할 수 있는 권한이 있습니다(reporting 데이터베이스에서 읽기 작업도 수행 가능). myTester으로 인증되면 test 데이터베이스의 컬렉션에 문서를 삽입합니다. 예를 들어 test 데이터베이스에서 다음과 같은 삽입 작업을 수행할 수 있습니다.

db.foo.insertOne( { x: 1, y: 1 } )

다음도 참조하세요.

다음 작업은 지정된 이름, 비밀번호 및 역할을 사용하여 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와 같은 외부 인증 메커니즘을 사용하여 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 인증 설정에 관한 자세한 내용은 다음 튜토리얼에서 확인하세요.

참고

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 클라이언트 인증서 인증과 같은 외부 인증 메커니즘을 사용하여 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 배포서버 에 대한 사용자를 관리 하고, 역할을 할당하고, 사용자 지정 역할을 만들려면 자체 관리 배포서버에서 사용자 및 역할 관리를 참조하세요.

돌아가기

사용자