CSFLE 라이브러리 설치 및 구성
MongoDB 는 CSFLE(클라이언트 측 필드 레벨 암호화 )에 두 라이브러리 중 하나를 사용할 수 있습니다. 권장 라이브러리는 자동 암호화 공유 라이브러리입니다.
시작하기 전에
자동 암호화 와 함께 CSFLE를 사용하려면 먼저 MongoDB 에서 필드를 암호화하는 데 사용할 라이브러리를 선택해야 합니다.
crypt_shared - 권장 CSFLE 라이브러리입니다.
mongocryptd 는 MongoDB 엔터프라이즈 Server 설치에 포함되어 있습니다.
둘 다 libmongocrypt
라이브러리가 필요합니다. 자세한 내용은 CSFLE용 libmongocrypt 설치를 참조하세요.
자동 암호화 공유 라이브러리
자동 암호화 공유 라이브러리는 클라이언트 애플리케이션 이 자동 암호화 를 수행할 수 있도록 하는 동적 라이브러리 입니다. 동적 라이브러리는 컴파일 타임이 아닌 런타임에 애플리케이션 이 액세스하는 기능 설정하다 입니다. 자동 암호화 공유 라이브러리는 다음 작업을 수행합니다.
암호화 스키마를 읽어 암호화하거나 해독할 필드를 결정합니다.
애플리케이션이 암호화된 필드에서 지원되지 않는 작업을 실행하는 것을 방지합니다.
자동 암호화 공유 라이브러리는 다음 중 어느 것도 수행하지 않습니다:
데이터 암호화 또는 복호화 수행
암호화 키 자료에 액세스
네트워크를 통해 데이터 수신
자동 암호화 공유 라이브러리는 mongocryptd
보다 선호되는 대안이며 자동 암호화를 수행하기 위해 다른 프로세스를 생성할 필요가 없습니다.
참고
자동 암호화 공유 라이브러리를 사용하는 것이 좋지만 mongocryptd
은 계속 지원됩니다.
자동 암호화에 대해 자세히 알아보려면 기능을 참조하세요.
mongocryptd
mongocryptd
MongoDB 엔터프라이즈 Server와 함께 설치됩니다.
CSFLE 지원 MongoDB 클라이언트를 생성하면 기본적으로 mongocryptd
프로세스가 자동으로 시작됩니다.
mongocryptd
프로세스는 다음과 같습니다:
지정된 자동 암호화 규칙을 사용하여 읽기 및 쓰기 작업에서 암호화할 필드를 표시합니다.
암호화된 필드에서 지원하지 않는 작업의 실행을 방지합니다.
데이터베이스 연결에 지정된 암호화 스키마를 분석합니다. 자동 암호화 규칙은 JSON schema 구문의 엄격한 하위 집합을 사용합니다. 규칙에 유효하지 않은 자동 암호화 구문이나
document validation
구문이 포함된 경우mongocryptd
는 오류를 반환합니다
mongocryptd
이전 기능만 수행하며 다음과 같은 작업은 수행하지 않습니다:
mongocryptd
암호화나 복호화를 수행하지 않습니다.mongocryptd
어떠한 암호화 키 자료에도 접근하지 않습니다.mongocryptd
네트워크를 통해 대기하지 않습니다.
필드 암호화 및 자동 암호 해독을 수행하기 위해 드라이버는 Apache 라이선스가 부여된 libmongocrypt 라이브러리.
공식 MongoDB 드라이버를 사용하려면 클라이언트 호스팅하다 시스템의 mongocryptd
프로세스 에 액세스 해야 합니다. 이러한 클라이언트는 기본값 PATH
시스템에서 mongocryptd
프로세스 를 검색 합니다.
단계
자동 암호화 공유 라이브러리 다운로드
버전과 플랫폼을 선택한 다음 라이브러리를 선택하여 MongoDB 다운로드 센터에서 자동 암호화 공유 라이브러리를 다운로드합니다.
Version 드롭다운 메뉴에서 'current'로 레이블이 지정된 버전을 선택합니다.
Platform 드롭다운에서 플랫폼을 선택합니다.
Package 드롭다운 메뉴에서
crypt_shared
를 선택합니다.Download를 클릭합니다.
팁
사용 가능한 릴리스 및 패키지의 확장된 목록을 보려면 MongoDB Enterprise 다운로드를 참조하세요.
자동 암호화 공유 라이브러리 구성
다음 매개변수를 통해 드라이버가 자동 암호화 공유 라이브러리를 검색하는 방법을 구성할 수 있습니다.
이름 | 설명 |
---|---|
cryptSharedLibPath | 자동 암호화 공유 라이브러리 패키지 기본값: |
cryptSharedLibRequired | 운전자 가 자동 암호화 공유 라이브러리를 사용해야 하는지 여부를 지정합니다.
기본값: |
이러한 매개변수를 구성하는 방법을 보여주는 예시를 보려면 Quick Start을 참조하세요.
mongocryptd 설치
지원되는 Linux 운영 체제의 경우: MongoDB Server 패키지를 설치하려면 Linux 에서 설치하기 튜토리얼 을 따라 mongodb-enterprise
서버 패키지를 설치합니다. 또는 mongodb-enterprise-cryptd
를 지정하여 mongocryptd
바이너리만 설치합니다. 패키지 관리자는 시스템 PATH의 위치에 바이너리를 설치합니다.
OSX의 경우: MongoDB Server 패키지를 설치 하려면 MacOS에 설치하기 튜토리얼 을 따르세요. 패키지 관리자는 시스템 PATH의 위치에 바이너리를 설치합니다.
Windows 의 경우: MongoDB Server 패키지를 설치하려면 Windows 에서 설치하기 튜토리얼 을 따르세요. 설치 후 시스템 PATH에 mongocryptd
패키지를 추가해야 합니다. 문서화된 Windows 설치 권장사항에 따라 mongocryptd
바이너리를 시스템 PATH에 추가합니다.
공식 tarball/ZIP 아카이브 에서 설치하려면 공식 아카이브에서 설치하려면 문서화된 운영 체제 권장사항에 따라 시스템 PATH에 mongocryptd
바이너리를 추가하세요.
mongocryptd 구성
드라이버가 mongocryptd
프로세스에 접근할 수 있다면, 기본적으로 프로세스를 생성합니다.
중요
부팅 시 시작하기
가능하다면 mongocryptd
를 요청할 때 시작하기 보다는 부팅 할 때 시작하세요.
다음 매개 변수를 통해 드라이버가 mongocryptd
를 시작하는 방법을 구성하세요:
이름 | 설명 |
---|---|
포트 | The port from which mongocryptd listens for messages.Default: 27020 |
idleShutdownTimeoutSecs | Number of idle seconds the mongocryptd process waits
before exiting.Default: 60 |
mongocryptdURI | The URI on which to run the mongocryptd process.Default: "mongodb://localhost:27020" |
mongocryptdBypassSpawn | When true , prevents the driver from automatically
spawning mongocryptd .Default: false |
mongocryptdSpawnPath | The full path to mongocryptd .Default: Defaults to empty string and spawns from the system
path. |
드라이버에서 지정한 포트에서 mongocryptd
프로세스가 이미 실행 중인 경우, 드라이버는 경고를 로그에 기록하고 새 프로세스를 생성하지 않고 계속할 수 있습니다. 드라이버에 의해 지정된 모든 설정은 기존 프로세스가 종료되고 새로운 암호화된 클라이언트가 연결을 시도할 때만 적용됩니다.
예시
애플리케이션에서 사용 중인 드라이버에 해당하는 탭을 클릭하여 mongocryptd
프로세스를 구성하는 방법의 예시를 확인하세요:
다음 코드 스니펫은 mongocryptd
의 수신 대기 포트 구성을 설정합니다.
var extraOptions = new Dictionary<string, object>() { { "mongocryptdSpawnArgs", new [] { "--port=30000" } }, }; autoEncryptionOptions.With(extraOptions: extraOptions);
다음 코드 스니펫은 mongocryptd
의 기본 시간 초과 구성을 설정합니다.
var extraOptions = new Dictionary<string, object>() { { "idleShutdownTimeoutSecs", 60 }, }; autoEncryptionOptions.With(extraOptions: extraOptions);
다음 코드 스니펫은 mongocryptd
의 수신 대기 포트 구성을 설정합니다.
extraOptions := map[string]interface{}{ "mongocryptdSpawnArgs": []string{ "--port=30000", }, }
다음 코드 스니펫은 mongocryptd
의 기본 시간 초과 구성을 설정합니다.
extraOptions := map[string]interface{}{ "mongocryptdSpawnArgs": []string{ "--idleShutdownTimeoutSecs=75", }, }
다음 코드 스니펫은 mongocryptd
의 수신 대기 포트 구성을 설정합니다.
List<String> spawnArgs = new ArrayList<String>(); spawnArgs.add("--port=30000"); Map<String, Object> extraOpts = new HashMap<String, Object>(); extraOpts.put("mongocryptdSpawnArgs", spawnArgs); AutoEncryptionSettings autoEncryptionSettings = AutoEncryptionSettings.builder() ... .extraOptions(extraOpts);
다음 코드 스니펫은 mongocryptd
의 기본 시간 초과 구성을 설정합니다.
List<String> spawnArgs = new ArrayList<String>(); spawnArgs.add("--idleShutdownTimeoutSecs") .add("60"); Map<String, Object> extraOpts = new HashMap<String, Object>(); extraOpts.put("mongocryptdSpawnArgs", spawnArgs); AutoEncryptionSettings autoEncryptionSettings = AutoEncryptionSettings.builder() ... .extraOptions(extraOpts);
다음 코드 스니펫은 mongocryptd
의 수신 대기 포트 구성을 설정합니다.
autoEncryption: { ... extraOptions: { mongocryptdSpawnArgs: ["--port", "30000"], mongocryptdURI: 'mongodb://localhost:30000', }
참고
NodeJS 드라이버에서 mongocryptdURI
은(는) 수신 포트와 일치해야 합니다.
다음 코드 스니펫은 mongocryptd
의 기본 시간 초과 구성을 설정합니다.
autoEncryption: { ... extraOptions: { mongocryptdSpawnArgs: ["--idleShutdownTimeoutSecs", "75"] }
다음 코드 스니펫은 mongocryptd
의 수신 대기 포트 구성을 설정합니다.
auto_encryption_opts = AutoEncryptionOpts(mongocryptd_spawn_args=['--port=30000'])
다음 코드 스니펫은 mongocryptd
의 기본 시간 초과 구성을 설정합니다.
auto_encryption_opts = AutoEncryptionOpts(mongocryptd_spawn_args=['--idleShutdownTimeoutSecs=75'])