저장된 데이터 암호화
이 페이지의 내용
미사용 암호화는 전송 암호화 및 관련 계정, 비밀번호, 암호화 키를 보호하는 보안 정책과 함께 사용하면 HIPAA, PCI-DSS, FERPA를 비롯한 보안 및 개인정보 보호 표준을 준수하는 데 도움이 될 수 있습니다.
암호화된 스토리지 엔진
참고
엔터프라이즈 기능
MongoDB Enterprise에서만 사용할 수 있습니다.
중요
WiredTiger 스토리지 엔진에서만 사용할 수 있습니다.
MongoDB Enterprise 3.2에는
WiredTiger 스토리지 엔진에 대한 네이티브 암호화 옵션이 도입되었습니다. 이 기능을 사용하면 MongoDB가 데이터 파일을 암호화하여
암호 해독 키를 가진 당사자만 데이터를 해독하고 읽을 수
있습니다.
암호화 프로세스
참고
Windows용 MongoDB Enterprise에서는 더 이상 미사용 데이터 암호화를 위한 블록 암호로 AES256-GCM
을 지원하지 않습니다. 이 사용 방식은 Linux에서만 지원됩니다.
MongoDB Enterprise에서 암호화 기능을 활성화하면 기본적으로 OpenSSL을 통한 AES256-CBC
(256비트 고급 암호화 표준, Cipher Block Chaining 모드) 암호화 모드를 사용합니다. AES-256은 대칭 키 방식을 사용하여, 암호화와 해독에 동일한 키를 사용합니다. Linux용 MongoDB Enterprise는 인증된 암호화 AES256-GCM
(또는 갈루아/카운터 모드에서 256비트 고급 암호화 표준)도 지원합니다.
암호화된 스토리지 엔진은 기본 운영 체제의 인증된 암호화 제공자를 사용하여 암호화 작업을 수행합니다. 예를 들어, Linux 운영 체제에 MongoDB를 설치할 때는 OpenSSL libcrypto
FIPS-140 모듈을 사용합니다.
FIPS 호환 모드에서 MongoDB를 실행하려면 다음 안내를 따르세요.
운영 체제가 FIPS 시행 모드에서 실행되도록 구성합니다.
net.tls.FIPSMode
설정을 활성화하도록 MongoDB를 구성합니다.mongod
또는mongos
을 다시 시작합니다.서버 로그 파일을 확인하여 FIPS 모드가 활성화되어 있는지 확인합니다. FIPS 모드가 활성화된 경우 로그 파일에
FIPS 140-2 mode activated
메시지가 나타납니다.
자세한 내용은 FIPS용 MongoDB 구성을 참조하세요.
참고
AES256-GCM 및 파일 시스템 백업
AES256-GCM
암호화 모드를 사용하는 암호화된 스토리지 엔진의 경우 AES256-GCM
에서는 모든 프로세스가 키와 함께 고유한 카운터 블록 값을 사용해야 합니다.
AES256-GCM
암호로 구성된 암호화된 스토리지 엔진의 경우는 다음과 같습니다.
- 핫 백업에서 복원
- 4.2부터 "hot" 백업을 통해 가져온 파일에서 복원하는 경우(즉,
mongod
가 실행 중일 때), MongoDB는 시작 시 "더티" 키를 감지하고 데이터베이스 키를 자동으로 롤오버하여 IV(초기화 벡터) 재사용을 방지할 수 있습니다.
- 콜드 백업에서 복원
그러나 "cold" 백업을 통해 가져온 파일에서 복원하는 경우(즉,
mongod
가 실행 중이 아닌 경우), MongoDB는 시작 시 "더티" 키를 감지할 수 없으며, IV를 재사용하면 기밀성 및 무결성 보증이 무효화됩니다.4.2부터 콜드 파일 시스템 스냅샷에서 복원한 후 키 재사용을 방지하기 위해 MongoDB는 새로운 명령줄 옵션
--eseDatabaseKeyRollover
를 추가합니다.--eseDatabaseKeyRollover
옵션으로 시작하면mongod
인스턴스는AES256-GCM
암호로 구성된 데이터베이스 키를 롤오버하고 종료합니다.
데이터 암호화 프로세스에는 다음이 포함됩니다.
마스터 키를 생성합니다.
각 데이터베이스에 대한 키를 생성합니다.
데이터베이스 키로 데이터를 암호화합니다.
마스터 키로 데이터베이스 키를 암호화합니다.
이 암호화는 스토리지 계층에서 투명하게 일어나며, 모든 데이터 파일은 파일 시스템 관점에서 완전히 암호화됩니다. 데이터는 메모리와 전송 중에만 암호화되지 않은 상태로 존재합니다.
MongoDB의 모든 네트워크 트래픽을 암호화하려면 TLS/SSL (전송 계층 보안/보안 소켓 계층)을 사용할 수 있습니다. See TSS/SSL을 위해 mongod
및 mongos
구성, 클라이언트를 위한 TLS/SSL 구성을 참조하세요.
키 관리
중요
암호화 키의 안전한 관리는 매우 중요합니다.
데이터베이스 키는 서버 내부에 존재하며, 암호화된 형태로만 디스크에 저장됩니다. MongoDB는 어떤 상황에서도 마스터 키를 디스크에 저장하지 않습니다.
마스터 키만 서버 외부(예: 데이터 및 데이터베이스 키와 별도로 보관)에 있으며 외부 관리가 필요합니다. MongoDB의 암호화된 스토리지 엔진은 마스터 키를 관리하기 위해 두 가지 키 관리 옵션을 지원합니다.
Key Management Interoperability Protocol(KMIP)를 통해 타사 키 관리 어플라이언스와 통합합니다. 권장
참고
KMIP를 사용하는 타사 키 관리 어플라이언스와 통합하려면 다음 KMIP 작업을 허용해야 합니다.
생성(
operation_create
)(
operation_get
) 가져오기(
operation_activate
)활성화
키 파일을 통한 로컬 키 관리.
암호화를 위해 MongoDB를 구성하고 두 가지 키 관리 옵션 중 하나를 사용하려면 암호화 구성을 참조하세요.
암호화 및 복제
암호화는 복제의 일부가 아닙니다:
마스터 키와 데이터베이스 키는 복제되지 않습니다.
데이터는 기본적으로 유선을 통해 암호화되지 않습니다.
노드에 동일한 키를 재사용할 수 있지만 MongoDB에서는 각 노드에 대해 개별 키를 사용하고 전송 암호화를 사용할 것을 권장합니다.
자세한 내용은 암호화 키 회전을 참조하세요.
감사 로그
MongoDB Enterprise에서만 사용할 수 있습니다.
KMIP 서버를 사용하여 MongoDB 감사 로그 암호화를 위한 키 관리하기
MongoDB 6.0 Enterprise부터는 외부 KMIP(Key Management Interoperability Protocol) 서버를 사용하여 MongoDB 감사 로그를 암호화하는 데 필요한 키를 안전하게 관리할 수 있습니다.
KMIP는 암호화 키 관리를 단순화하고 비표준 키 관리 프로세스의 사용을 제거합니다.
기본 KMIP 프로토콜 버전은 1.2입니다. MongoDB 서버 구성 파일에서 KMIP 버전 1.0 또는 1.1을 사용하도록 MongoDB를 구성할 수 있습니다
감사 로그 암호화와 함께 KMIP 서버를 사용하려면 다음 설정 및 매개변수를 구성하십시오.
auditEncryptionHeaderMetadataFile
parameterauditEncryptKeyWithKMIPGet
parameter
감사 로그 암호화를 테스트하기 위해 auditLog.localAuditKeyFile
설정을 사용할 수도 있습니다.
MongoDB 6.0 이상에서 이전 버전으로 다운그레이드해야 하는 경우, 감사 로그 암호화를 비활성화하기 위해 auditLog.auditEncryptionKeyIdentifier
또는 auditLog.localAuditKeyFile
설정을 제거해야 합니다. 기존에 있던 암호화된 감사 로그는 암호화된 상태로 유지되며, 암호화된 로그의 저장과 처리를 위해 개발한 모든 절차를 그대로 유지할 수 있습니다.
참고
감사 로그 암호화의 경우 감사 로그 대상은 파일이어야 합니다. 시스템 로그는 대상으로 사용할 수 없습니다.
암호화되지 않은 감사 로그 및 프로세스 로그
이 섹션은 이전 섹션에서 설명한 것처럼 외부 Key Management Interoperability Protocol(KMIP) 서버를 사용하여 감사 로그를 암호화하기 위한 키를 관리하지 않는 경우에 적용됩니다.
감사 로그 파일은 MongoDB의 암호화된 스토리지 엔진의 일부로 암호화되지 않습니다. mongod
가 로깅을 활성화한 상태로 실행되는 경우, 설정된 로그 상세도에 따라 정상적인 작업의 일부로 로그 파일에 잠재적으로 민감한 정보를 출력할 수 있습니다.
security.redactClientLogData
설정을 사용하여 잠재적으로 중요한 정보가 mongod
프로세스 로그에 들어가지 않도록 합니다. redactClientLogData
를 설정하면 로그의 세부 정보가 줄어들고 로그 진단이 복잡해질 수 있습니다.
자세한 내용은 로그 편집 매뉴얼 항목에서 확인할 수 있습니다.
애플리케이션 수준 암호화
또한, 애플리케이션 수준 암호화(Application Level Encryption)는 애플리케이션 계층에서 필드별 또는 문서별로 데이터를 암호화하는 기능을 제공합니다.
전체 문서를 암호화하려면 사용자 지정 암호화 및 암호 해독 루틴을 작성하거나 상용 솔루션을 사용하세요.
MongoDB의 인증된 제휴사 목록은 제휴사 목록을 참조하세요.