일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- 토스카드
- MongoEngine
- built-in
- 리워드앱
- codecommit
- S3
- python3
- namespace
- clone
- 커피머니불리기
- MongoDB
- 도커
- 실사용
- network
- Linux
- Python
- mininet
- 앱테크
- 리뷰
- VPC
- DocumentDB
- Container
- 포인트앱
- aws codecommit
- docker
- 후기
- 하나머니
- 재테크
- docker network
- AWS
- Today
- Total
ㅍㅍㅋㄷ
AWS DocumentDB(MongoDB) 를 python 을 활용해 접속해 보자 (TLS 암호화) 본문
AWS의 DocumentDB 를 이용해 개발을 하려다 보니,
DocumentDB에서 사용되는 MongoDB 에 기본으로 TLS 암호화 통신 되도록 설정되어 있다.
필자의 경우 Python 으로 개발시 MongoDB 를 ORM 형태로 사용 가능한 MongoEngine 이라는 패키지를 주로 이용하는데, 이때 TLS 암호화 통신 설정 관련 일부 내용을 정리한다.
TLS 통신을 위한 public key 다운로드
Client와 서버 (documentDB) 간 암호화 통신을 위해서는 서로의 신뢰를 확인하기 위해서 Certificate 를 확인하는 절차가 필요하다.
이때 certificate 에 대한 발급은 서버 관리 권한을 가지고 있는 AWS 측에서 제공해준 Certificate 를 사용하면 된다.
해당 key 는 AWS S3 에서 다운받도록 한다.
wget https://s3.amazonaws.com/rds-downloads/rds-combined-ca-bundle.pem
참고로 해당 key 의 경우, DocumentDB가 생성될때 자동으로 부여되는 endpoint URL 에 대해서만 인증이 된다. 따라서 Route53 을 이용해 내부 도메인을 사용하는 경우는 동작하지 않는다.
MongoEngine 설치
MongoEngine 은 MongoDB 를 ORM 형태로 개발 하도록 해주는 python SDK 이다. Python framework 중 가장 많이 사용되는 Django 의 ORM 과 사용성이 거의 비슷하기 때문에 Django 를 사용한 개발자면 어렵지 않게 사용 가능하다.
pip 로 쉽게 설치 가능하다.
pip3 install mongoengine
MongoEngine 을 이용한 DocumentDB 연결
MongoEngine 을 이용해 DocumentDB 에 TLS 로 연결 하려면 아래와 같이
SSL 관련 Option 을 지정해 주면 된다.
ssl_ca_certs 는 위 S3 에서 다운받은 public key를 지정해주면 된다.
from mongoengine import *
from model import User
ssl_config = {
'ssl': True,
'ssl_ca_certs': 'rds-combined-ca-bundle.pem'
}
connect(
'<DB>',
username='<MONGODB_USER>',
password='<MONGODB_PASSWORD>',
host='<MONGODB_HOST>',
port=27017,
**ssl_config
)
user_vos = User.objects()
for user in user_vos:
print(f'{user_vo.email} {user_vo.first_name} {user_vo.last_name}')
# model.py
from mongoengine import *
class User(Document):
email = StringField(required=True)
first_name = StringField(max_length=50)
last_name = StringField(max_length=50)
Reference
- https://docs.aws.amazon.com/documentdb/latest/developerguide/security.encryption.ssl.html
'IT > mongoDB' 카테고리의 다른 글
AWS DocumentDB Failover 동작 방식에 대한 이해 (0) | 2019.05.29 |
---|---|
AWS DocumentDB(MongoDB) 의 Replication 구조 - Write Concern 에 대하여 (0) | 2019.05.27 |
AWS DocumentDB(MongoDB) Replication 과 MongoEngine 설정 (Read Preference) (0) | 2019.05.25 |