DB
[MongoDB] 계정 관리 ①
동린
2026. 1. 20. 00:56
OS : Rocky Linux 9
ISMS 감사를 받을 때 항상 자세하게 보는 것 중에 하나가
'계정 관리'이다.
현재 사용하고 있는 접근제어 솔루션이 아쉽게도 NoSQL 기반 DB 들은
계정 관리를 지원하지 않아서 계정을 별도로 생성/삭제 하고 관리해주어야 한다.
계정을 생성하기 전에 먼저 고려해야할 사항은
계정을 생성하는 DB를 어디에서 진행하는가이다.
MongoDB는 현재 사용중인 DB에 대해 계정이 생성된다.
해당 포스팅에서는 모든 계정을 admin 이라는 DB에서 생성하도록 한다.
이후 역할(role)을 통해 권한을 제어하도록 할 예정이다.
우선 앞에 본 것처럼 root 계정을 만드는 쿼리는 다음과 같다.
> use admin
> db.createUser({ user: "root", pwd: passwordPrompt(), roles: [ "root" ]})
계정명은 'root'
비밀번호는 프롬프트를 통해 받고
역할은 'root' 인 계정을 생성한다.
예를들어 lieper 라는 계정이 읽기 쓰기 역할을 하는 계정으로 생성하고 싶다면
> use admin
> db.createUser({ user: "lieper", pwd: passwordPrompt(), roles: ["readWrite" ]})
이렇게 생성하면 된다.
계정을 삭제할 때는 다음과 같이 한다.
위에서 생성한 lieper 라는 계정을 삭제해본다.
> use admin
> db.dropUser("lieper")
현재 존재하는 계정 조회는 다음과 같이 한다.
> use admin
> db.getUsers();
여기서 만약 admin이 아닌 각 DB에 맞게 계정을 생성해줬다면
각각 맞는 DB로 이동한 다음 계정을 조회하면 된다.
관리를 일원화 하고 싶다면 상기 방법과 같이 admin DB에 계정을 만들고
접근 권한은 role 을 통해 부여하는게 좋다.