들어가면서
저번 글에서 MongoDB 설치하고 실행하는 것까지 다루었는데요. MongoDB를 처음 설치하면 보안이 설정되어 있지 않아서 문제가 생길 수 있습니다 🥺 이러한 문제를 예방하기 위해 이번에는 MongoDB의 보안 설정과 계정에 대해 알아보겠습니다!
admin 계정 생성
먼저 DB의 모든 권한을 가지는 admin 계정을 만들어보겠습니다.
MongoDB를 실행해주세요.
$ sudo systemctl start mongod
그리고 MongoDB 쉘을 시작합니다.
$ mongosh
쉘에 들어왔으면 admin DB
로 이동합니다.
> use admin
switched to db admin
모든 권한을 가진 계정을 생성합니다.
> db.createUser({user: "계정명", pwd: "비밀번호", roles: ["root"]})
{ ok: 1 }
계정을 만들었으면 MongoDB 쉘에서 나가고 MongoDB를 종료합니다.
> exit
$ sudo systemctl stop mongod
보안 설정
이제 인증과 관련된 설정을 할 건데요. /etc/mongo.conf
파일의 내용을 변경해야 합니다. /etc/mongo.conf
파일을 편집기로 열어주세요.
$ sudo vi /etc/mongod.conf
파일 내용 중 보안과 관련된 부분을 찾아주세요. 아래와 같이 주석 처리가 되어 있습니다.
...
#security:
...
이 부분을 다음과 같이 수정하고 :wq
로 저장 후 파일을 닫아주세요.
...
security:
authorization: enabled
...
보안 설정이 끝났으니 다시 MongoDB를 시작합니다.
$ sudo systemctl start mongod
그리고 이제 생성한 계정으로 MongoDB 쉘에 접속하면 됩니다.
$ mongosh -u 계정명 -p 비밀번호
또는 비밀번호를 따로 입력할 수도 있습니다.
$ mongosh -u 계정명 -p
Enter password:
일반 계정 생성
모든 데이터베이스 작업을 admin 권한으로 하면 위험하니 특정 데이터베이스에서 사용할 일반 계정을 만들어봅시다.
먼저 새로 만들 계정이 사용할 데이터베이스가 생성되어 있어야 합니다. 만약 없다면 use 데이터베이스_이름
을 입력합니다. use 데이터베이스_이름
을 썼을 때 해당하는 데이터베이스가 없다면 새로 만들고 이동합니다. 이미 존재하는 데이터베이스라면 해당 데이터베이스로 이동합니다.
> use 데이터베이스_이름
switched to db 데이터베이스_이름
MongoDB의 계정은 하나의 데이터베이스에 종속되어 생성됩니다. 그렇기 때문에 A
라는 데이터베이스에 tester1
이라는 사용자가 있어도 B
라는 데이터베이스에도 teseter1
라는 사용자가 있을 수 있는 것입니다. A
에 있는 tester1
과 B
에 있는 tester1
은 다른 사용자로 취급됩니다. 계정을 새로 만들었을 때 사용 중이던 데이터베이스에 계정이 종속됩니다. admin 계정은 admin DB
에 저장된 것이죠.
이렇게 데이터베이스마다 계정이 따로 생기면 계정 관리가 어려워질 수 있기 때문에 admin DB
에서 모든 계정을 한 번에 관리하도록 하겠습니다.
admin 계정을 만들었던 것처럼 admin DB
로 이동하여 db.createUser()
를 사용하면 됩니다. 단, admin 계정과 달리 어느 데이터베이스에 대해 어떤 권한을 부여할 것인지 적절히 제한하여 만들어야 합니다. 여기서는 권한을 dbOwner
수준으로 설정하겠습니다. 그리고 db
를 데이터베이스_이름
으로 적어주어 해당 데이터베이스에 대한 권한만 부여했습니다.
> use admin
switched to db admin
> db.createUser({user: "일반_계정명", pwd: "비밀번호", roles: [ { role: "dbOwner", db: "데이터베이스_이름" } ] })
{ ok: 1 }
계정 삭제
계정을 생성했다면 삭제도 할 줄 알아야겠죠! 계정을 삭제하는 방법은 다음과 같습니다.
> use admin
switched to db admin
> db.dropUser("일반_계정명")
마무리하며
간단하게 보안 설정과 계정 생성 및 삭제 방법에 대해 알아보았습니다. MongoDB의 계정과 관련하여 계정을 생성하는 또 다른 방법, 권한과 역할의 종류 등등 더 많은 내용이 있는데요. 자세한 내용은 앞으로 계속 포스팅을 하면서 다뤄보겠습니다!
오늘도 긴 글 읽어주셔서 고맙습니다 😊
'MongoDB' 카테고리의 다른 글
WSL2에서 MongoDB 설치 및 삭제 (0) | 2024.03.15 |
---|