[mongodb] 외부 접속 허용하기와 인증 설정
mongodb는 외부 접속이 기본적으로 막혀 있다.
외부에서 DB 접속 클라이언트를 사용해 접속하기 위해서는 조금 설정을 바꾸어 주어야 한다.
https://ianlondon.github.io/blog/mongodb-auth/
위 링크를 참고하여 설명한다.
모든 외부 아이피 허용을 위해 /etc/mongod.conf 단순 수정
.......
net:
port: 27017
bindIp: 127.0.0.1
#bindIp: 0.0.0.0
.......
위처럼 생긴 부분을 찾는다.
기본적으로는 bindIp: 127.0.0.1 로 되어있고 다음 라인은 주석처리 되어 있을 것이다.
여기에서 단순히 외부 접속을 허용하고 싶다면
.......
net:
port: 27017
#bindIp: 127.0.0.1
bindIp: 0.0.0.0
.......
위처럼 하면 되겠지만, 이건 모든 사람이 인증 절차 없이 접근 가능하게 하기 때문에 위험하다.
일단 인증을 추가한 다음 bindIp: 0.0.0.0을 활성화하는 것이 좋다.
계정 추가하기
mongo 커맨드를 이용해 mongo shell을 연다.
use cool_db
db.createUser({
user: 'ian',
pwd: 'secretPassword',
roles: [{ role: 'readWrite', db:'cool_db'}]
})
use 커맨드로 대상 db를 선택하고,
db.createUser 메서드로 인증 사용자를 추가한다.
여기에서는 대상 db가 cool_db,
사용자의 id가 ian,
사용자의 비밀번호가 secretPassword,
권한은 cool_db에 대해 읽기&쓰기 권한을 부여한다.
사용자가 성공적으로 생성되었다면 쉘을 빠져나온다.
인증을 사용하도록 /etc/mongod.conf 수정
security:
authorization: 'enabled'
맨 아래에 다음을 추가한다.
그리고 나서 다시 net: 쪽으로 돌아가서
.......
net:
port: 27017
#bindIp: 127.0.0.1
bindIp: 0.0.0.0
.......
외부 접속을 모두 허용한다.
이제 인증이 걸려있기 때문에 시도를 할 수는 있지만 인증 정보가 없으면 접근이 불가능하다.
이것도 불안하다면
.......
net:
port: 27017
bindIp: 127.0.0.1,123.456.789.123
#bindIp: 0.0.0.0
.......
처럼 127.0.0.1옆에 컴마를 찍은 후 접근 허용할 아이피를 입력한다.
컴마 옆에 공백문자를 넣지 않도록 주의한다.
sudo service mongod restart
몽고를 재시작한다.
인증이 잘 먹는지 로컬에서 실험해보자.
mongo
정상적으로 완료되었다면 이제 mongo 명령어로는 db에 접근할 수 없다.
mongo -u [USER_ID] -p [PASSWORD] 127.0.0.1/[DB_NAME]
이렇게 하면 그 DB에 접근할 수 있게 된다.
외부에서도 동일한 방법으로 실행할 수 있다.
mongo -u [USER_ID] -p [PASSWORD] [YOUR_MONGO_SERVER_IP]/[DB_NAME]