Queryable Encryption 라이브러리 설치 및 구성
MongoDB는 쿼리를 암호화된 쿼리로 변환하고 데이터를 암호화 및 해독하기 위해 두 라이브러리 중 하나를 사용합니다. 최신 버전은 자동 암호화 공유 라이브러리입니다.
시작하기 전
계속하기 전에 이전 작업에 따라Queryable Encryption 호환 운전자 및 종속성 을 설치합니다.
라이브러리 선택
자동 암호화 공유 라이브러리
자동 암호화 공유 라이브러리는 클라이언트 애플리케이션 이 자동 암호화 를 수행할 수 있도록 하는 동적 라이브러리 입니다. 동적 라이브러리는 컴파일 타임이 아닌 런타임에 애플리케이션 이 액세스하는 기능 설정하다 입니다. 자동 암호화 공유 라이브러리는 다음 작업을 수행합니다.
암호화 스키마를 읽어 암호화하거나 해독할 필드를 결정합니다.
애플리케이션이 암호화된 필드에서 지원되지 않는 작업을 실행하는 것을 방지합니다.
자동 암호화 공유 라이브러리는 다음 중 어느 것도 수행하지 않습니다:
데이터 암호화 또는 복호화 수행
암호화 키 자료에 액세스
네트워크를 통해 데이터 수신
자동 암호화 공유 라이브러리는 mongocryptd
대신 선호되는 대안이며 자동 암호화 를 수행하기 위해 다른 프로세스 를 시작할 필요가 없습니다.
mongocryptd
중요
자동 암호화 공유 라이브러리 사용하기
새 프로젝트 를 시작하는 경우 자동 암호화 공유 라이브러리를 사용하세요. 자동 암호화 공유 라이브러리는 mongocryptd
대체하며 새 프로세스 를 시작할 필요가 없습니다.
mongocryptd
MongoDB Enterprise MongoDB Server와 함께 설치됩니다.
사용 중 암호화 하여 MongoDB 클라이언트 를 만들면 기본값 으로 mongocryptd
프로세스 가 자동으로 시작됩니다.
mongocryptd
프로세스는 다음과 같습니다:
지정된 자동 암호화 규칙을 사용하여 읽기 및 쓰기 작업에서 암호화할 필드를 표시합니다.
암호화된 필드에서 지원하지 않는 작업의 실행을 방지합니다.
데이터베이스 연결에 지정된 암호화 스키마를 분석합니다. 자동 암호화 규칙은 JSON schema 구문의 엄격한 하위 집합을 사용합니다. 규칙에 유효하지 않은 자동 암호화 구문이나
document validation
구문이 포함된 경우mongocryptd
는 오류를 반환합니다
mongocryptd
이전 기능만 수행하며 다음과 같은 작업은 수행하지 않습니다:
mongocryptd
암호화나 복호화를 수행하지 않습니다.mongocryptd
어떠한 암호화 키 자료에도 접근하지 않습니다.mongocryptd
네트워크를 통해 대기하지 않습니다.
필드 암호화 및 자동 암호 해독을 수행하기 위해 드라이버는 Apache 라이선스가 부여된 libmongocrypt 라이브러리.
절차
MongoDB 다운로드 센터 에서 자동 암호화 공유 라이브러리를 다운로드하려면 버전과 플랫폼을 선택한 다음 라이브러리를 선택합니다.
팁
사용 가능한 릴리스 및 패키지의 확장된 목록을 보려면 MongoDB Enterprise 다운로드를 참조하세요.
Version 드롭다운 메뉴에서 7.0.0 (current)
을(를) 선택합니다.
Platform 드롭다운에서 플랫폼을 선택합니다.
Package 드롭다운 메뉴에서 crypt_shared
를 선택합니다.
Download를 클릭합니다.
운전자 가 자동 암호화 공유 라이브러리를 검색하는 방법을 구성하려면 다음 매개 변수를 사용합니다.
이름 | 설명 |
---|---|
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
를 시작하는 방법을 구성하세요:
이름 | 설명 |
---|---|
포트 | 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'])
다음 단계
라이브러리를 설치한 후 선택한 키 관리 시스템에서 고객 마스터 키 를 생성합니다 .