TLS/SSL(전송 암호화)
이 페이지의 내용
TLS/SSL
MongoDB는 TLS/SSL(전송 계층 보안/보안 소켓 계층) 을 지원하여 MongoDB의 모든 네트워크 트래픽을 암호화합니다. TLS/SSL은 의도한 클라이언트만 MongoDB 네트워크 트래픽을 읽을 수 있도록 보장합니다.
TLS 버전
MongoDB는 TLS 1.1 이상이 사용 가능한 시스템에서 TLS 1.0 암호화를 지원하지 않습니다.
TLS 라이브러리
MongoDB는 네이티브 TLS/SSL OS 라이브러리를 사용합니다.
플랫폼 | TLS/SSL 라이브러리 |
---|---|
Windows | 보안 채널(Schannel) |
Linux/BSD | OpenSSL |
macOS | 보안 전송 |
TLS/SSL 암호
MongoDB의 TLS/SSL 암호화는 모든 연결에 대해 최소 128비트 키 길이의 강력한 TLS/SSL 암호만 사용할 수 있도록 허용합니다.
Forward Secrecy
순방향 비밀성(Forward Secrecy) 암호 제품군은 서버의 개인 키로 보호되지만 전송되지 않는 임시 세션 키를 생성합니다. 이는 서버의 개인 키가 손상되더라도, 손상된 키로 과거 세션을 해독할 수 없음을 보장합니다.
MongoDB는 일시적 디피-헬만(DHE) 및 일시적 타원 곡선 디피-헬만(ECDHE) 알고리즘을 사용하는 순방향 비밀 암호 제품군을 지원합니다.
ECDHE(Ephemeral Elliptic Curve Diffie-Hellman)
플랫폼 | 지원 수준 |
---|---|
리눅스 | . Linux 플랫폼의 OpenSSL이 자동 커브 선택을 지원할 경우, MongoDB는 임시 타원 곡선 디피-헬만(ECDHE)을 지원합니다. 그렇지 않으면 Linux 플랫폼의 OpenSSL이 자동 커브 선택을 지원하지 않는 경우, MongoDB는 |
Windows | ECDHE(Ephemeral Elliptic Curve Diffie-Hellman)는 네이티브 Windows TLS/SSL 라이브러리인 보안 채널(Schannel)을 사용하여 암시적으로 지원됩니다. |
macOS | ECDHE(Ephemeral Elliptic Curve Diffie-Hellman)는 네이티브 macOS TLS/SSL 라이브러리인 보안 전송을 통해 암시적으로 지원됩니다. |
ECDHE 암호 제품군은 정적 RSA 암호 제품군보다 속도가 느립니다. ECDHE의 성능을 향상하려면 ECDSA
(Elliptic Curve Digital Signature Algorithm)를 사용하는 인증서를 사용할 수 있습니다. 자세한 내용은 순방향 비밀성 성능을 참조하세요.
DHE(Ephemeral Diffie-Hellman)
플랫폼 | 지원 수준 |
---|---|
리눅스 | MongoDB는 DHE(Ephemeral Diffie-Hellman)를 지원합니다.
|
Windows | DHE(Ephemeral Diffie-Hellman)는 네이티브 Windows TLS/SSL 라이브러리인 보안 채널(Schannel)을 사용하여 암시적으로 지원됩니다. |
macOS | DHE(Ephemeral Diffie-Hellman)는 네이티브 macOS TLS/SSL 라이브러리인 보안 전송을 통해 암시적으로 지원됩니다. |
참고
클라이언트가 DHE와 암호 그룹을 협상하지만 서버가 선택한 매개 변수를 수락할 수 없는 경우 TLS 연결이 실패합니다.
강력한 매개 변수(예 크기가 102.4보다 크면 (Oracle에서 확장 지원을 구입하지 않은 경우) Java 6 및 7에서는 지원되지 않습니다. 그러나 Java 7은 ECDHE를 지원하고 선호하므로 가능한 경우 ECDHE를 협상할 것입니다.
DHE (및 ECDHE) 암호 제품군은 정적 RSA 암호 제품군보다 성능이 느리고 DHE는 ECDHE보다 훨씬 느립니다. 자세한 내용은 순방향 비밀성 성능을 참조하세요.
순방향 비밀 유지 성능
DHE 및 ECDHE 암호 제품군은 정적 RSA 암호 제품군보다 느리고 DHE는 ECDHE보다 훨씬 느립니다.
ECDHE의 성능 향상을 위해 타원 곡선 디지털 서명 알고리즘(ECDSA
)을 사용하는 인증서를 사용할 수 있습니다. 또는 다음 예제에서와 같이 opensslCipherConfig
매개 변수를 사용하여 ECDHE 암호 제품군을 비활성화할 수 있습니다(DHE도 비활성화).
mongod --setParameter opensslCipherConfig='HIGH:!EXPORT:!aNULL:!kECDHE:!ECDHE:!DHE:!kDHE@STRENGTH'
성능 때문에 DHE 암호 모음에 대한 지원을 비활성화해야 하는 경우 다음 예시에서와 같이 opensslCipherConfig
매개변수를 사용할 수 있습니다.
mongod --setParameter opensslCipherConfig='HIGH:!EXPORT:!aNULL:!DHE:!kDHE@STRENGTH'
인증서
MongoDB로 TLS/SSL을 사용하려면 연결된 인증서 container인 PEM
파일로 된 TLS/SSL 인증서가 있어야 합니다.
MongoDB는 인증 기관에서 발급한 유효한 TLS/SSL 인증서 또는 자체 서명된 인증서를 사용할 수 있습니다. 프로덕션 용도의 경우 MongoDB deployment는 동일한 인증 기관에서 생성하고 서명한 유효한 인증서를 사용해야 합니다. 독립적인 인증 기관을 생성 및 유지 관리하거나 타사 TLS/SSL 밴더에서 생성한 인증서를 사용할 수 있습니다.
신뢰할 수 있는 인증 기관이 서명한 인증서를 사용하면 MongoDB 드라이버가 서버의 ID를 확인할 수 있습니다.
예시는 클라이언트에 대한 TLS/SSL 구성을 참조하세요.
인증서 만료 경고
mongod
/mongos
는 제시된 x.509 인증서가 mongod/mongos
호스트 시스템 시간으로부터 30
일 이내에 만료되는 경우 연결 시 경고를 기록합니다. 자세한 내용은 경고를 트리거하는 만료 임박 x.509 인증서를 참조하세요.
OCSP(온라인 인증서 상태 프로토콜)
인증서 폐기를 확인하기 위해 MongoDB는 기본적으로 OCSP(온라인 인증서 상태 프로토콜)를 enables
합니다. OCSP를 사용하면 정기적으로 Certificate Revocation List (CRL)
를 다운로드하고 업데이트된 CRL로 mongod
/mongos
를 다시 시작할 필요가 없습니다.
OCSP 지원의 일부로 MongoDB는 Linux에서 다음을 지원합니다.
OCSP 스테이플링. OCSP 스테이플링을 사용하면
mongod
및mongos
인스턴스가 TLS/SSL 핸드셰이크 중에 클라이언트에 인증서를 제공할 때 OCSP 상태 응답을 인증서에 첨부하거나 '스테이플'합니다. 인증서에 OCSP 상태 응답을 포함함으로써 OCSP 스테이플링은 클라이언트가 제공된 인증서의 OCSP 상태를 조회하기 위해 별도의 요청을 할 필요가 없도록 합니다.OCSP 필수 스테이플 확장. OCSP 필수 스테이플은 서버 인증서에 추가할 수 있는 확장으로, 클라이언트가 TLS/SSL 핸드셰이크 중에 인증서를 받을 때 OCSP 스테이플을 기대하도록 지시합니다.
MongoDB는 다음과 같은 OCSP 관련 매개변수도 제공합니다.
매개 변수 | 설명 |
---|---|
OCSP 지원을 사용하거나 사용하지 않도록 설정합니다. | |
스테이플링된 OCSP 상태 응답을 새로 고치기 전에 대기할 시간(초)을 지정합니다. | |
setParameter
구성 파일 설정 또는 --setParameter
명령줄 옵션을 사용하여 시작할 때 이러한 매개 변수를 설정할 수 있습니다.
참고
MongoDB 5.0부터 rotateCertificates
명령과 db.rotateCertificates()
메서드는 스테이플링된 OCSP 응답도 새로 고칩니다.
신원 확인
연결을 암호화하는 것 외에도, TLS/SSL은 클라이언트 인증과 복제본 세트 및 샤드 클러스터 노드의 내부 인증 모두에 인증서를 사용한 인증을 허용합니다.
자세한 내용은 다음을 참조하세요.
FIPS 모드
참고
엔터프라이즈 기능
MongoDB Enterprise에서만 사용할 수 있습니다.
FIPS(연방 정보 처리 표준)는 데이터를 안전하게 암호화하고 해독하는 소프트웨어 모듈 및 라이브러리를 인증하는 데 사용되는 미국 정부의 컴퓨터 보안 표준입니다. MongoDB를 OpenSSL용 FIPS 140-2 인증 라이브러리와 함께 실행되도록 구성할 수 있습니다. 기본적으로 실행되거나 명령줄에서 필요에 따라 실행되도록 FIPS를 구성합니다.
예시는 FIPS에 대한 MongoDB 구성을 참조하세요.