[python] 파이썬(PyMongo)을 사용한 MongoDB SSL/TLS 설정

MongoDB는 데이터베이스를 안전하게 통신하기 위해 SSL/TLS(보안 소켓 계층/전송 계층 보안)을 지원합니다. 이 기능을 활성화하여 데이터를 암호화하고 인증서를 사용하여 클라이언트와 서버 간의 안전한 연결을 설정할 수 있습니다. 이번 포스트에서는 파이썬(PyMongo)을 사용하여 MongoDB의 SSL/TLS 설정하는 방법에 대해 알아보겠습니다.

1. SSL/TLS 인증서 생성 및 설치

MongoDB 서버에서 사용할 SSL/TLS 인증서를 생성해야 합니다. 인증서는 보통 인증기관(CA)에서 제공하거나 직접 생성할 수 있습니다. 이 인증서는 서버측에서 사용할 것이므로, 공개키와 개인키를 모두 포함하고 있어야 합니다.

인증서를 생성한 후, MongoDB 서버에 인증서를 설치해야 합니다. 설치 방법에는 여러 가지가 있으며, MongoDB의 공식 문서를 참고하여 진행하시면 됩니다.

2. PyMongo를 사용하여 SSL/TLS 연결 설정

SSL/TLS 연결을 설정하기 위해 PyMongo를 사용할 때, MongoClient의 ssl 매개변수를 사용하여 연결 옵션을 설정해야 합니다. 이 매개변수에는 True 값을 할당하여 SSL/TLS 연결을 활성화하고, 클라이언트 인증서와 함께 사용하는 등의 추가적인 설정이 가능합니다.

아래는 SSL/TLS 연결을 설정하는 예제 코드입니다.

import pymongo

# SSL/TLS 연결 설정
client = pymongo.MongoClient(
    "mongodb://<hostname>:<port>",
    ssl=True,
    ssl_certfile="<path/to/client_certificate.pem>",
    ssl_ca_certs="<path/to/ca_certificate.pem>",
    ssl_keyfile="<path/to/client_private_key.pem>"
)

# 데이터베이스 및 컬렉션 선택
db = client["mydatabase"]
collection = db["mycollection"]

# 쿼리 실행
result = collection.find({})
for document in result:
    print(document)

위 코드에서 <hostname><port>는 MongoDB 서버의 호스트 이름과 포트 번호로 대체되어야 합니다. 또한, <path/to/client_certificate.pem>, <path/to/ca_certificate.pem>, <path/to/client_private_key.pem>은 각자 SSL/TLS 인증서 파일의 경로로 대체해야 합니다.

3. 추가적인 보안 설정

SSL/TLS 연결 설정 이외에도 MongoDB 서버의 보안 설정을 강화할 수 있습니다. 예를 들어, 클라이언트가 서버에 연결할 때 유저 이름과 비밀번호를 사용하여 인증을 요구하거나, 접속 IP 주소를 제한할 수 있습니다. 이러한 설정은 MongoDB 서버의 설정 파일 혹은 관리 도구를 통해 구성할 수 있습니다. MongoDB의 공식 문서를 참고하여 보다 안전한 연결을 설정할 수 있습니다.

참고 자료