Docs Menu
Docs Home
/
MongoDB 매뉴얼
/ /

저장된 데이터 암호화

이 페이지의 내용

  • 암호화된 스토리지 엔진
  • 애플리케이션 수준 암호화

미사용 암호화는 전송 암호화 및 관련 계정, 비밀번호, 암호화 키를 보호하는 보안 정책과 함께 사용하면 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를 실행하려면 다음 안내를 따르세요.

  1. 운영 체제가 FIPS 시행 모드에서 실행되도록 구성합니다.

  2. net.tls.FIPSMode 설정을 활성화하도록 MongoDB를 구성합니다.

  3. mongod 또는 mongos 을 다시 시작합니다.

  4. 서버 로그 파일을 확인하여 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을 위해 mongodmongos 구성, 클라이언트를 위한 TLS/SSL 구성을 참조하세요.

중요

암호화 키의 안전한 관리는 매우 중요합니다.

데이터베이스 키는 서버 내부에 존재하며, 암호화된 형태로만 디스크에 저장됩니다. MongoDB는 어떤 상황에서도 마스터 키를 디스크에 저장하지 않습니다.

마스터 키만 서버 외부(예: 데이터 및 데이터베이스 키와 별도로 보관)에 있으며 외부 관리가 필요합니다. MongoDB의 암호화된 스토리지 엔진은 마스터 키를 관리하기 위해 두 가지 키 관리 옵션을 지원합니다.

  • Key Management Interoperability Protocol(KMIP)를 통해 타사 키 관리 어플라이언스와 통합합니다. 권장

    참고

    KMIP를 사용하는 타사 키 관리 어플라이언스와 통합하려면 다음 KMIP 작업을 허용해야 합니다.

    • 생성(operation_create)

    • (operation_get) 가져오기

    • (operation_activate)활성화

  • 키 파일을 통한 로컬 키 관리.

암호화를 위해 MongoDB를 구성하고 두 가지 키 관리 옵션 중 하나를 사용하려면 암호화 구성을 참조하세요.

암호화는 복제의 일부가 아닙니다:

  • 마스터 키와 데이터베이스 키는 복제되지 않습니다.

  • 데이터는 기본적으로 유선을 통해 암호화되지 않습니다.

노드에 동일한 키를 재사용할 수 있지만 MongoDB에서는 각 노드에 대해 개별 키를 사용하고 전송 암호화를 사용할 것을 권장합니다.

자세한 내용은 암호화 키 회전을 참조하세요.

MongoDB Enterprise에서만 사용할 수 있습니다.

MongoDB 6.0 Enterprise부터는 외부 KMIP(Key Management Interoperability Protocol) 서버를 사용하여 MongoDB 감사 로그를 암호화하는 데 필요한 키를 안전하게 관리할 수 있습니다.

KMIP는 암호화 키 관리를 단순화하고 비표준 키 관리 프로세스의 사용을 제거합니다.

기본 KMIP 프로토콜 버전은 1.2입니다. MongoDB 서버 구성 파일에서 KMIP 버전 1.0 또는 1.1을 사용하도록 MongoDB를 구성할 수 있습니다

감사 로그 암호화와 함께 KMIP 서버를 사용하려면 다음 설정 및 매개변수를 구성하십시오.

감사 로그 암호화를 테스트하기 위해 auditLog.localAuditKeyFile 설정을 사용할 수도 있습니다.

MongoDB 6.0 이상에서 이전 버전으로 다운그레이드해야 하는 경우, 감사 로그 암호화를 비활성화하기 위해 auditLog.auditEncryptionKeyIdentifier 또는 auditLog.localAuditKeyFile 설정을 제거해야 합니다. 기존에 있던 암호화된 감사 로그는 암호화된 상태로 유지되며, 암호화된 로그의 저장과 처리를 위해 개발한 모든 절차를 그대로 유지할 수 있습니다.

참고

감사 로그 암호화의 경우 감사 로그 대상은 파일이어야 합니다. 시스템 로그는 대상으로 사용할 수 없습니다.

이 섹션은 이전 섹션에서 설명한 것처럼 외부 Key Management Interoperability Protocol(KMIP) 서버를 사용하여 감사 로그를 암호화하기 위한 키를 관리하지 않는 경우에 적용됩니다.

감사 로그 파일은 MongoDB의 암호화된 스토리지 엔진의 일부로 암호화되지 않습니다. mongod 가 로깅을 활성화한 상태로 실행되는 경우, 설정된 로그 상세도에 따라 정상적인 작업의 일부로 로그 파일에 잠재적으로 민감한 정보를 출력할 수 있습니다.

security.redactClientLogData 설정을 사용하여 잠재적으로 중요한 정보가 mongod 프로세스 로그에 들어가지 않도록 합니다. redactClientLogData를 설정하면 로그의 세부 정보가 줄어들고 로그 진단이 복잡해질 수 있습니다.

자세한 내용은 로그 편집 매뉴얼 항목에서 확인할 수 있습니다.

또한, 애플리케이션 수준 암호화(Application Level Encryption)는 애플리케이션 계층에서 필드별 또는 문서별로 데이터를 암호화하는 기능을 제공합니다.

전체 문서를 암호화하려면 사용자 지정 암호화 및 암호 해독 루틴을 작성하거나 상용 솔루션을 사용하세요.

MongoDB의 인증된 제휴사 목록은 제휴사 목록을 참조하세요.

돌아가기

libmongocrypt 사용