기능
이 페이지의 내용
개요
이 페이지에서는 클라이언트 측 필드 레벨 암호화(CSFLE)의 보안 이점에 대해 알아보고 CSFLE가 MongoDB에서 지원하는 다른 보안 메커니즘과 어떻게 비교되는지 알아볼 수 있습니다. 데이터 보안에 있어 CSFLE의 가치를 보여주는 가상의 시나리오도 볼 수 있습니다.
클라이언트 사이드 필드 레벨 암호화
클라이언트 측 필드 레벨 암호화(CSFLE)는 클라이언트 애플리케이션이 네트워크를 통해 데이터를 전송하기 전에 암호화할 수 있도록 하는 MongoDB의 기능입니다. 민감한 데이터는 클라이언트에 의해 투명하게 암호화되고 해독되며 암호화된 형태로만 서버와 주고 받을 수 있습니다. CSFLE는 다음 시나리오에서 암호화된 필드를 안전하게 유지합니다.
데이터베이스 슈퍼유저가 암호화된 필드에 직접 액세스
서버의 메모리를 읽어 암호화된 필드에 액세스
안전하지 않은 네트워크를 통해 암호화된 필드 캡처
데이터베이스 또는 백업 파일을 읽어 온디스크 암호화된 필드에 액세스합니다.
모든 클라이언트는 민감하지 않은 데이터 필드에 액세스할 수 있지만, 적절하게 구성된 CSFLE 클라이언트만 암호화된 데이터 필드를 읽고 쓸 수 있습니다.
중요
원격 키 관리 시스템
프로덕션 환경에서 CSFLE를 사용하는 경우, 원격 KMS(키 관리 시스템)를 사용하여 암호화 키를 저장해야 합니다.
CSFLE와 함께 원격 KMS를 사용하는 방법을 보여주는 단계별 가이드를 보려면 튜토리얼을 참조하세요.
지원되는 모든 KMS 제공자 목록을 보려면 CSFLE KMS 제공자를 참조하세요.
원격 KMS를 사용해야 하는 이유에 대해 자세히 알아보려면 Reasons to Use a Remote Key Management System(원격 키 관리 시스템을 사용하는 이유)를 참조하세요.
보안 고려 사항
CSFLE는 고객 마스터 키 또는 데이터 암호화 키에 액세스할 수 있는 공격자에 대한 암호화 무결성을 보장하지 않습니다.
CSFLE는 암호화된 데이터가 포함된 컬렉션에 임의의 쓰기 권한을 가진 공격자에 대해 어떠한 암호화 무결성도 보장하지 않습니다.
MongoDB는 스키마 유효성 검사를 사용하여 컬렉션의 특정 필드에 암호화를 시행하는 기능을 지원합니다. 클라이언트 사이드 스키마가 없으면 클라이언트는 컬렉션에 대한 서버 사이드 스키마를 다운로드하여 암호화할 필드를 결정합니다. 이 문제를 방지하려면 클라이언트 사이드 스키마 유효성 검사를 사용하세요.
CSFLE는 스키마의 무결성을 검증하는 메커니즘을 제공하지 않기 때문에 서버 사이드 스키마에 의존한다는 것은 서버의 스키마가 변조되지 않았음을 신뢰한다는 의미입니다. 공격자가 서버를 침해하면 스키마를 수정하여 이전에 암호화된 필드가 더 이상 암호화 레이블이 지정되지 않도록 할 수 있습니다. 그러면 클라이언트가 해당 필드에 대한 일반 텍스트 값을 전송합니다.
클라이언트 및 서버 사이드 스키마에 대한 CSFLE 구성의 예는 CSFLE 서버 사이드 필드 레벨 암호화 시행을 참조하세요.
기타 보안 메커니즘
이 섹션에서는 MongoDB에서 지원하는 다음 보안 메커니즘에 대해 설명하고 사용 사례와 제한 사항을 설명합니다.
역할 기반 액세스 제어
역할 기반 액세스 제어는 관리자가 사용자에게 컬렉션 수준의 권한을 부여하고 제한할 수 있는 보안 메커니즘입니다. 이 솔루션은 적절한 역할 정의 및 할당을 통해 실수로 데이터 및 액세스 권한이 공개되는 것을 방지합니다.
역할 기반 액세스 제어는 다음과 같은 시나리오를 보호할 수 없습니다.
안전하지 않은 네트워크를 통한 데이터 캡처
데이터베이스 또는 백업 파일을 읽어 온디스크 데이터에 액세스
서버의 메모리를 읽어서 데이터 액세스
데이터베이스 슈퍼유저가 데이터에 직접 액세스
자세한 내용은 역할 기반 액세스 제어를 참조하세요.
저장된 데이터 암호화
미사용 데이터 암호화는 디스크의 데이터베이스 파일을 암호화하는 메커니즘입니다. 이 메커니즘은 데이터베이스 자격 증명이 없지만 데이터베이스를 호스팅하는 컴퓨터에 액세스할 수 있는 사람이 데이터를 볼 수 없도록 합니다.
이 메커니즘은 다음과 같은 시나리오에 대해서는 데이터를 보호하지 않습니다.
안전하지 않은 네트워크를 통한 데이터 캡처
서버의 메모리를 읽어서 데이터 액세스
데이터베이스 슈퍼유저가 데이터에 직접 액세스
자세한 내용은 미사용 데이터 암호화를 참조하세요.
전송 암호화(TLS/SSL)
TLS/SSL을 사용한 전송 암호화는 네트워크를 통해 데이터를 암호화합니다. TLS/SSL은 안전하지 않은 네트워크를 통해 이동하는 데이터를 보호하지만, 권한이 있는 사용자로부터 데이터를 보호하거나 디스크에 저장된 데이터를 보호할 수는 없습니다.
자세히 알아보려면 TLS/SSL을 사용한 전송 암호화를 참조하세요.
기능 비교
다음 다이어그램에는 MongoDB가 지원하는 보안 기능과 해당 기능이 해결하는 잠재적인 보안 취약점이 나열되어 있습니다.
중요
메커니즘을 함께 사용
프로덕션 배포를 보호하려면 역할 기반 액세스 제어, 미사용 데이터 암호화, 전송 암호화 및 선택 사항으로 사용 중 암호화 보안 메커니즘을 함께 사용합니다. CSFLE와 Queryable Encryption을 모두 사용하여 동일한 collection의 서로 다른 필드를 암호화할 수는 없습니다.
Queryable Encryption에 대해 자세히 알아보려면 Queryable Encryption 기능을 참조하세요.
Scenario
다음 가상의 시나리오는 애플리케이션 데이터 보안에 있어 CSFLE(클라이언트 측 필드 레벨 암호화)의 가치와 CSFLE가 이 가이드에서 설명하는 다른 보안 메커니즘과 어떻게 상호 작용하는지 보여줍니다.
이 시나리오에서는 가상의 회사인 메드코MD 의 환자의 개인 정보, 보험 정보 및 의료 기록을 저장하는 의료 관리 시스템에서 민감한 데이터를 보호합니다. 환자 데이터는 모두 공개되지 않으며, 사회보장번호(SSN, 미국 정부 발급 ID 번호), 정책 번호, 바이탈 사인 측정값과 같은 특정 데이터는 특히 민감하며 개인정보보호 규정을 준수합니다. 데이터를 비공개로 안전하게 보호하는 것은 회사와 환자 모두에게 중요합니다.
MedcoMD는 다음 사용 사례를 충족하기 위해 이 시스템이 필요합니다.
의사는 시스템을 사용하여 환자의 의료 기록, 의료 정보에 액세스하고 새로운 바이탈 사인 측정값을 추가합니다.
접수 담당자는 시스템을 통해 연락처 정보를 사용하여 환자의 신원을 확인합니다.
접수원은 환자의 정책 제공자를 볼 수는 있지만, 정책 번호는 볼 수 없습니다.
접수원은 환자의 의료 기록에 액세스할 수 없습니다.
MedcoMD는 또한 다음과 같은 방법을 통한 민감한 데이터의 공개를 염려하고 있습니다.
접수 담당자가 공개적으로 볼 수 있는 화면에서 실수로 데이터를 공개하는 경우.
데이터베이스 관리자와 같은 슈퍼유저가 데이터베이스에 직접 접근합니다.
안전하지 않은 네트워크를 통한 데이터 캡처입니다.
데이터베이스 서버의 메모리를 읽어 데이터에 액세스합니다.
데이터베이스 또는 백업 파일을 읽어 데이터에 액세스합니다.
의료 서비스 관리 시스템의 기능과 액세스 제한의 균형을 맞추려면 MedcoMD는 무엇을 할 수 있을까요?
솔루션
MedcoMD는 다음과 같은 보안 메커니즘을 사용하여 사용 사례를 충족하고 민감한 의료 데이터의 공개를 방지합니다.
네트워크를 통해 이동하는 데이터를 보호하기 위한 전송 암호화(TLS/SSL)
데이터베이스 또는 백업 파일을 읽음으로써 데이터가 유출되지 않도록 보호하기 위한 미사용 데이터 암호화입니다.
역할 기반 액세스 제어를 통해 데이터베이스 사용자의 액세스를 작업 수행에 필요한 컬렉션으로 제한합니다.
다음 사용 사례 및 제약 조건을 충족하기 위해 CSFLE로 민감한 필드를 암호화합니다.
CSFLE로 암호화된 데이터는 암호화되지 않은 형태로 데이터베이스 서버에 존재하지 않으므로 서버 메모리에서 데이터를 읽는 것을 방지합니다.
접수 담당자가 환자의 신원을 확인하고 CSFLE를 지원하지 않는 클라이언트를 안내원에게 제공하여 안내원의 공개적으로 볼 수 있는 화면에서 민감한 데이터가 실수로 공개되는 것을 방지할 수 있습니다.
의사에게 CSFLE 지원 클라이언트를 제공하여 의사가 사무실에서 민감한 데이터를 비공개로 볼 수 있도록 허용하세요.
자세히 알아보기
MongoDB 배포를 보호하기 위해 구현해야 하는 보안 조치 목록을 보려면 Security Checklist(보안 체크리스트)를 참조하세요.
CSFLE 사용을 시작하려면 퀵 스타트를 참조하세요.