JavaScript & Node.js

[MongoDB 계정 사용하여 권한 부여하기 (feat. Node.js, robo 3T]

Haksae 2022. 2. 15. 15:09

0. TLDR

  • EC2로 열어놓은 서버 MongoDB에 접근하는 방법 중 하나(Robo3T 연결)
  • MongoDB에서 계정을 생성하고, 해당 계정이 DB를 관리

 

1. DB 보안과 접근

  • 서버에 있는 DB를 누구나 접근하면 큰일난다.
  • 그래서 대부분의 DB들은 (MongoDB, MySQL 등) 다음과 같은 기초적인 보안 기능을 제공한다.
  • 그렇다면 어떤 방식으로 DB에 접근할 수 있을까? 대부분 아래의 2가지 방식이다.
    1. Whitelist : 허용된 IP만 DB에 접근할 수 있도록 설정하는 방식
    2. 계정 : 허용된 사용자만 DB에 접근할 수 있도록 계정을 관리하는 방식
  • 본 글은 2번째 방식인, 계정을 관리하여 접근을 허용하는 방식을 MongoDB에서 구현해볼 것이다.

 

2. 계정 생성하고 권한 부여하기

  • 참고로 본 글은 아래와 같은 작업 환경에서 진행됩니다.
    • OS : Ubuntu 18.04 LTS
    • DB : MongoDB V4.2.18
    • Node.js V16.14.0

0) 선행 작업

  • OS에 node.js, MongoDB 설치가 되어있어야합니다.
  • EC2에서 인바운드 규칙 편집에서 27017 포트를 열어주어야합니다. (일반적으로 27017 사용)

1) Mongo DB 계정 생성

  • Mongo DB 접속
    • 명령어를 쓰면 많은 내용이 뜨다가,  > 이 뜨면 정상
$ mongo

 

  • admin으로 DB 바꾸기
    • admin은 Mongo DB 관리자
$ use admin

 

  • 계정 생성하기
    • 아래와 같이 생성하면 Successfully added user: { "user" : "test", "roles" : [ "root" ] } 와 같이 응답이 떠야함
$ db.createUser({user: "test", pwd: "test", roles:["root"]});

 

  • 계정 로그인, 권한 확인하기
    • db.auth로 로그인 할 수 있다. (정상적인 로그인이라면 리턴 값은 1)
    • 로그인 상태에서 getUsers()를 입력하면 권한에 대한 정보가 나온다.
$ db.auth("아이디", "비밀번호")

$ db.getUsers();

 

2) 외부에 권한 주기

  • Mongo DB 설정 파일 vi 에디터로 열기
$ sudo vi /etc/mongod.conf

 

  • 설정 파일 변경
    • i 를 누르면 수정 권한이 생긴다.
    • 아래의 2가지 내용을 변경해주어야한다.
      • bingIp : 0.0.0.0으로 수정
      • #security 를 다음과 같이 수정해야함
        • security: authorization: "enabled"
    • 수정을 마무리하면 esc 누르고 :wq 입력하고 엔터
    • 아래는 설정 파일을 발췌한 예시다.
# network interfaces
net:
  port: 27017
  bindIp: 0.0.0.0


# how the process runs
processManagement:
  timeZoneInfo: /usr/share/zoneinfo

security:
  authorization: "enabled"

 

  • Mongo DB 재시작
$ sudo service mongod restart

 

3.)Node.js 에서 설정

  • Mongo DB URL 설정
    • 아래와 같이 Mongo DB URL을 설정해준다.

 

'mongodb://test:test@localhost:27017/admin'
         // id : pwd @ ip 주소 : port / db

 

  • dbName 설정
    • connect 아래 생성하여 접근할 db명을 설정해주어야한다.

 

4) robo 3T에서 연결

  • address, port 입력
    • EC2 ip주소와 인바운드 규칙 편집에서 열어준 port 번호를 기입한다.

 

  • Authentication 작성
    • db는 admin으로 설정, mongo DB에서 만든 계정과 비밀번호 입력

 

  • Test 하고 Save 하기
    • 위의 작업을 다 마무리 하고 Test 하면 아래와 같이 성공할 것이다. 그러면 Save 하고 마음 껏 사용!

 

참고

https://spiralmoon.tistory.com/entry/MongoDB-%EA%B3%84%EC%A0%95%EC%9D%84-%EC%82%AC%EC%9A%A9%ED%95%98%EC%97%AC-DB-%EA%B6%8C%ED%95%9C-%EC%A0%9C%EC%96%B4%ED%95%98%EA%B8%B0