한번에 끝내는 AWS EC2에 MongoDB 설치하고 보안설정하기

사용 환경

AWS EC2(Amazon Linux AMI)인스턴스에 MongoDB Community Edition을 설치합니다.

AWS RDS에서 MongoDB를 지원하면 참 좋으련만, 현재 지원하지 않기에 EC2에 설정합니다.

EC2 생성

EC2 Console의 Instances메뉴에서 Amazon Linux AMI 이미지를 선택하고 사용 용도에 맞는 타입으로 인스턴스를 생성합니다.

MongoDB 설치

ssh로 서버에 접속합니다. Amazon Linux AMI의 user는 항상 ec2-user입니다.

sudo su를 입력해 root권한으로 변경합니다.

vi /etc/yum.repos.d/mongodb-org-4.0.repo 입력 후 아래 내용으로 저장합니다.

[mongodb-org-4.0]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/amazon/2013.03/mongodb-org/4.0/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-4.0.asc
yum install -y mongodb-org

설치가 완료되면 다음 명령을 입력합니다.

service mongod start

설치가 끝났습니다.

MongoDB 공식 사이트에서 제공하는 설치 방법은 여기에 나와있습니다.

MongoDB 계정 생성

mongo를 입력해 MongoDB에 접속합니다.

use admin
db.createUser({ user: "사용자 계정",
  pwd: "패스워드",
  roles: [ "userAdminAnyDatabase",
    "dbAdminAnyDatabase",
    "readWriteAnyDatabase"
  ]
})

위 명령을 입력해서 관리자 계정을 생성합니다.

use customDB
db.createUser({ user: "계정",
  pwd: "패스워드",
  roles: ["dbAdmin", "readWrite"]
})

위 명령을 입력해서 DB의 계정을 생성합니다.

MongoDB 보안 설정

vi /etc/mongod.conf를 입력해 MongoDB 설정을 수정합니다.

# network interfaces
net:
  port: 27017
  #bindIp: 127.0.0.1

bindIp를 주석처리하면 bindIp에 나열된 ip가 아니더라도 MongoDB에 접근할 수 있습니다. 우리는 EC2 Security Group에서 접근을 제어하기 때문에 bindIp옵션을 주석처리합니다.

security:
    authorization: enabled

같은 파일의 security 옵션을 주석해제하고, authorization: enabled옵션을 추가합니다. 이 옵션을 설정하면 MongoDB에 익명으로 로그인할 수 없습니다.

이제 service mongod restart를 입력해 변경 사항을 적용합니다.

EC2 Security Group 설정

EC2 Instance에 설정된 Security Group의 inbound rule에 MongoDB 포트를 열어줍니다. 포트를 변경하지 않으셨다면 27017번이 기본 MongoDB 포트입니다.

Source는 DB에 접근하는 서버의 ip 혹은 현재 작업하는 위치의 ip로 설정합니다. 현재 작업 위치가 신뢰할 수 없는 네트워크일 경우, 작업이 끝난 뒤 해당 rule을 삭제하는 것이 안전합니다.

0
👍
0
❤️
0
😄
0
😝
0
😢
0
😡