정의
createUser명령을 실행하는 데이터베이스에 새 사용자를 생성합니다.
createUser명령은 사용자가 있는 경우 중복 사용자 오류를 반환합니다.팁
mongosh에서 이 명령은db.createUser()헬퍼 메서드를 통해서도 실행 수 있습니다.헬퍼 메서드는
mongosh사용자에게 편리하지만 데이터베이스 명령과 동일한 수준의 정보를 반환하지 못할 수 있습니다. 편의가 필요하지 않거나 추가 리턴 필드가 필요한 경우 데이터베이스 명령을 사용합니다.
호환성
이 명령은 다음 환경에서 호스팅되는 배포에서 사용할 수 있습니다.
MongoDB Enterprise: MongoDB의 구독 기반 자체 관리 버전
MongoDB Community: MongoDB의 소스 사용 가능 무료 자체 관리 버전
중요
이 명령은 MongoDB Atlas 클러스터에서 지원되지 않습니다. 모든 명령에 대한 Atlas 지원 에 대한 자세한 내용은 지원되지 않는 명령을 참조하세요.
구문
명령은 다음과 같은 구문을 가집니다:
팁
메서드/명령 호출에서 암호를 직접 지정하는 대신 passwordPrompt() 메서드를 다양한 사용자 인증/관리 메서드/명령과 함께 사용하여 암호를 묻는 메시지를 표시할 수 있습니다. 그러나 이전 버전의 mongo 셸에서와 마찬가지로 비밀번호를 직접 지정할 수도 있습니다.
db.runCommand( { createUser: "<name>", pwd: passwordPrompt(), // Or "<cleartext password>" customData: { <any information> }, roles: [ { role: "<role>", db: "<database>" } | "<role>", ... ], writeConcern: { <write concern> }, authenticationRestrictions: [ { clientSource: [ "<IP|CIDR range>", ... ], serverAddress: [ "<IP|CIDR range>", ... ] }, ... ], mechanisms: [ "<scram-mechanism>", ... ], digestPassword: <boolean>, comment: <any> } )
명령 필드
createUser 에는 다음과 같은 필드가 있습니다:
필드 | 유형 | 설명 |
|---|---|---|
| 문자열 | 새 사용자의 이름입니다. |
| 문자열 | 사용자의 비밀번호입니다. 데이터베이스 에서 를 실행 자격 증명 MongoDB 외부에 저장된 사용자를 생성하는 값은 다음 중 하나일 수 있습니다.
메서드/명령 호출에서 암호를 직접 지정하는 대신 |
| 문서 | 선택 사항입니다. 모든 임의 정보입니다. 이 필드는 관리자가 이 특정 사용자와 연결하려는 데이터를 저장하는 데 사용될 수 있습니다. 예를 들어 사용자의 전체 이름이나 직원 ID가 될 수 있습니다. |
| 배열 | 사용자에게 부여된 역할입니다. 빈 배열 |
| 부울 | 선택 사항입니다. 서버 또는 클라이언트 중 어느 쪽에서 비밀번호를 해독할지를 나타냅니다. 참인 경우 서버는 클라이언트로부터 다이제스트되지 않은 비밀번호를 수신하여 비밀번호를 다이제스트합니다. 거짓인 경우 클라이언트는 비밀번호를 다이제스트하고, 이후 다이제스트된 비밀번호를 서버에 전달합니다. 다음과 호환되지 않음 기본값은 |
| 문서 | |
| 배열 | 선택 사항입니다. 서버가 생성된 사용자에게 시행하는 인증 제한 사항입니다. 사용자가 서버에 연결할 수 있거나 서버가 사용자를 받아들일 수 있는 IP 주소 및 CIDR 범위의 목록을 지정합니다. |
| 배열 | 선택 사항입니다. SCRAM 사용자 자격 증명을 생성하기 위한 특정 SCRAM 메커니즘(1개 또는 여러 개)을 지정합니다. 유효한 값은 다음과 같습니다.
기능 호환성 버전의 기본값은 기능 호환성 버전의 기본값은 |
| 부울 | 선택 사항입니다. 서버 또는 클라이언트 중 어느 쪽에서 비밀번호를 해독할지를 나타냅니다. 참인 경우 서버는 클라이언트로부터 다이제스트되지 않은 비밀번호를 수신하여 비밀번호를 다이제스트합니다. 거짓인 경우 클라이언트는 비밀번호를 다이제스트하고, 이후 다이제스트된 비밀번호를 서버에 전달합니다. 다음과 호환되지 않음 기본값은 |
| any | 선택 사항. 이 명령에 첨부할 사용자 제공 코멘트입니다. 설정되면 이 설명은 다음 위치에서 이 명령의 레코드와 함께 표시됩니다.
댓글은 유효한 모든 BSON types (문자열, 정수, 객체, 배열 등)이 될 수 있습니다. |
역할
roles 필드에서 기본 제공 역할과 사용자 정의 역할을 모두 지정할 수 있습니다.
createUser가 실행되는 동일한 데이터베이스에 존재하는 역할을 지정하려면 역할의 이름과 함께 역할을 지정할 수 있습니다.
"readWrite"
또는 다음과 같이 문서로 역할을 지정할 수도 있습니다.
{ role: "<role>", db: "<database>" }
다른 데이터베이스에 존재하는 역할을 지정하려면 문서를 사용하여 역할을 지정합니다.
인증 제한
authenticationRestrictions 문서에는 다음 필드만 포함될 수 있습니다. authenticationRestrictions 문서에 인식할 수 없는 필드가 포함되어 있으면 서버에서 오류를 발생시킵니다.
필드 이름 | 값 | 설명 |
|---|---|---|
| IP 주소 및/또는 CIDR 범위의 배열 | 존재하는 경우, 사용자를 인증할 때 서버는 클라이언트의 IP 주소가 지정된 목록에 있거나 목록에 있는 CIDR 범위에 속하는지 확인합니다. 클라이언트의 IP 주소가 없는 경우 서버는 사용자를 인증하지 않습니다. |
| IP 주소 및/또는 CIDR 범위의 배열 | 클라이언트가 연결할 수 있는 IP 주소 또는 CIDR 범위의 목록입니다. 존재하는 경우, 서버는 주어진 목록의 IP 주소를 통해 클라이언트의 연결이 승인되었는지 확인합니다. 인식할 수 없는 IP 주소를 통해 연결이 수락된 경우 서버는 사용자를 인증하지 않습니다. |
중요
사용자가 인증 제한이 호환되지 않는 여러 역할을 상속하는 경우 해당 사용자는 사용할 수 없게 됩니다.
예를 들어, 사용자가 clientSource 필드가 ["198.51.100.0"]인 역할과 clientSource 필드가 ["203.0.113.0"]인 다른 역할을 상속하는 경우 서버는 사용자를 인증할 수 없습니다.
MongoDB 의 인증 에 대한 자세한 내용 은 자체 관리형 배포서버에 대한 인증을 참조하세요.
행동
사용자 ID
MongoDB는 생성 시 사용자에게 고유한 userId를 자동으로 할당합니다.
암호화 (Encryption)
경고
기본값 으로 는 를 사용하는createUser 경우에도 지정된 모든 데이터를 일반 텍스트로 MongoDB 인스턴스 에 passwordPrompt() 전송합니다. TLS 전송 암호화 사용하여 에서 보낸 비밀번호를 포함하여 클라이언트와 서버 간의 통신을 createUser 보호합니다. TLS 전송 암호화 활성화하는 방법에 대한 지침은 자체 관리형 배포서버에서 TLS/SSL을 위한 MongoDB 인스턴스 구성을 참조하세요.
MongoDB는 비밀번호를 일반 텍스트로 저장하지 않습니다. 비밀번호는 클라이언트와 서버 간의 전송 시 그리고 TLS 전송 암호화가 활성화되지 않은 경우에만 취약합니다.
외부 자격 증명
$external 데이터베이스에서 생성된 사용자는 예를 들어 Kerberos를 사용하는 MongoDB Enterprise 설치와 같이 MongoDB 외부에 자격 증명이 저장되어 있어야 합니다.
$external 인증 사용자(Kerberos, LDAP 또는 X.509 사용자)와 함께 클라이언트 세션 및 인과적 일관성 보장 을 사용하려면 사용자 이름이 10KB보다 클 수 없습니다.
local Database
로컬 데이터베이스에서는 사용자를 생성할 수 없습니다.
사용자 이름 제한
사용자 이름은 한 글자 이상으로 구성되어야 하며 7MB를 초과할 수 없습니다.
필요한 액세스 권한
데이터베이스에서 새 사용자를 생성하려면 해당 데이터베이스 리소스에 대해
createUser작업을 수행할 수 있어야 합니다.
userAdmin 및 userAdminAnyDatabase 기본 제공 역할은 해당 리소스에 대한 createUser 및 grantRole 조치를 제공합니다.
예시
다음 createUser 명령은 products 데이터베이스에 사용자 accountAdmin01을 생성합니다. 이 명령은 accountAdmin01에 admin 데이터베이스에서 clusterAdmin 및 readAnyDatabase 역할을 부여하고 products 데이터베이스에서 readWrite 역할을 부여합니다.
팁
메서드/명령 호출에서 암호를 직접 지정하는 대신 passwordPrompt() 메서드를 다양한 사용자 인증/관리 메서드/명령과 함께 사용하여 암호를 묻는 메시지를 표시할 수 있습니다. 그러나 이전 버전의 mongo 셸에서와 마찬가지로 비밀번호를 직접 지정할 수도 있습니다.
db.getSiblingDB("products").runCommand( { createUser: "accountAdmin01", pwd: passwordPrompt(), customData: { employeeId: 12345 }, roles: [ { role: "clusterAdmin", db: "admin" }, { role: "readAnyDatabase", db: "admin" }, "readWrite" ], writeConcern: { w: "majority" , wtimeout: 5000 } } )