MongoDB에서 역할을 지정하여 사용자 생성하기
MongoDB에서 새로운 사용자를 생성하려면 createUser() 메서드를 사용합니다. 이 메서드는 사용자 이름, 비밀번호, 그리고 해당 사용자에게 부여할 역할(roles)을 지정할 수 있어, 기존 데이터베이스에 필요한 권한만 가진 사용자를 안전하게 추가할 수 있습니다.
사용자 생성 쿼리
다음은 test 데이터베이스에 대해 읽기·쓰기(readWrite) 권한을 가진 사용자 'John'을 생성하는 예제입니다.
> db.createUser(
... {
... user: "John",
... pwd: "123456",
... roles: [ { role: "readWrite", db: "test" } ],
... mechanisms: [ "SCRAM-SHA-256" ]
... }
... )위 쿼리를 실행하면 다음과 같은 결과가 출력됩니다.
Successfully added user: {
"user" : "John",
"roles" : [
{
"role" : "readWrite",
"db" : "test"
}
],
"mechanisms" : [
"SCRAM-SHA-256"
]
}주요 옵션 설명
user: 생성할 사용자의 이름입니다.
pwd: 사용자의 비밀번호입니다. 실제 운영 환경에서는 복잡도 높은 비밀번호를 사용하는 것이 좋습니다.
roles: 사용자에게 부여할 권한 배열입니다. 위 예제에서는 test 데이터베이스에 대한 readWrite(읽기 및 쓰기) 권한을 부여했습니다. 그 외에도 read(읽기 전용), dbAdmin(데이터베이스 관리), userAdmin(사용자 관리) 등 다양한 내장 역할을 활용할 수 있습니다.
mechanisms: 인증에 사용할 메커니즘을 지정합니다. 여기서는 보안성이 강화된 SCRAM-SHA-256 방식을 사용했습니다.
생성된 사용자 확인하기
등록된 모든 사용자 목록을 조회하려면 getUsers() 메서드를 사용합니다.
> db.getUsers();
실행 결과는 다음과 같습니다.
[
{
"_id" : "test.John",
"user" : "John",
"db" : "test",
"roles" : [
{
"role" : "readWrite",
"db" : "test"
}
],
"mechanisms" : [
"SCRAM-SHA-256"
]
}
]결과에서 확인할 수 있듯이, 사용자 'John'은 test 데이터베이스에 속해 있으며 readWrite 역할과 SCRAM-SHA-256 인증 메커니즘이 정상적으로 적용되었습니다. 이처럼 createUser()와 적절한 역할 조합을 활용하면 데이터베이스별로 최소 권한 원칙(Principle of Least Privilege)에 따라 사용자를 체계적으로 관리할 수 있습니다.