MongoDB Authorization 설정
기본적으로 MongoDB 를 설치하고 구동하게되면 보안 관련 설정이 없기 때문에 로그인 없이 접속하여 이용 가능하다.
이러한 문제를 해결하기 위해 아이디와 패스워드를 통해서만 이용 가능하도록 설정을 해본다.
MongoDB User 생성
db.createUser({
user: "accountUser", <- 계정 이름
pwd: "password", <- 비밀번호
{
role: "root",
db: "admin"
} <- 권한 내용 , 그 권한을 적용할 db 이름 // admin 은 MongoDB가 기본으로 가지고 있는 DB
})
// role : "root", db: "admin" 으로 설정하게되면 모든 db를 관리할 수 있게 된다.
MongoDB 접속
위에서 만든 유저로 접속을 해보자.
mongo -u accountUser -p
이렇게만 치고 엔터를 누르면 패스워드를 입력하라는 창이 나온다.
/etc/mongod.conf
위 파일이 MongoDB 환경 변수 파일이다. 이 파일을 열어서 다음과 같이 수정한다.
# network interfaces net:
port: 27017
bindIp: 127.0.0.1 <- 이 부분을 0.0.0.0 으로 변경한다.
bindIp 부분을 0.0.0.0 으로 변경하게 되면 모든 아이피 주소에서 접근하는 것을 허용하게 된다. 그만큼 보안이 취약.
따라서 특정 아이피에서 접근 가능하도록 하려면 bindIp: 127.0.0.1, 126.32.22.14 처럼 콤마를 이용해 나열하면 된다.
Security 부분을 수정
security:
authorization: enabled
여기서 주의할게 현재 mongod.conf 문서는 YAML 양식으로 작성되어 있으며, YAML 문법을 어긋나게되면 MongoDB가 이 파일을 제대로 읽어들이지 못해 에러가 발생한다.
가장 주의해야 할점은 YAML 에서는 TAB이 안먹힌다는 점이다.
( security: 하고 다음줄로가서 빈공간을 만들때 Tab을 이용하게되면 에러가 발생한다. 이것때문에 엄청난 시간을 삽질.......)
sudo service mongod restart
모든 설정을 마치고 mongod 를 재시작하면 원격에서 아이디와 패스워드를 가지고 접근할 수 있다.