Queryable Encryption을 위한 mongocryptd 설치 및 구성하기
개요
팁
자동 암호화 공유 라이브러리 사용하기
MongoDB는 공유 라이브러리라고 하는 새로운 암호화 헬퍼 crypt_shared
를 출시했습니다. 공유 라이브러리는 mongocryptd
을(를) 대체하며 새 프로세스 를 생성할 필요가 없습니다.
참고
엔터프라이즈 기능
필드 레벨 암호화의 자동 기능은 MongoDB Enterprise 4.2 이상 및 MongoDB Atlas 4.2 이상 cluster에서만 사용할 수 있습니다.
mongocryptd
MongoDB Enterprise MongoDB Server (버전 4.2 이상)와 함께 설치됩니다.
Queryable Encryption이 활성화된 MongoDB 클라이언트를 생성하면, 기본적으로 mongocryptd
프로세스가 자동으로 시작되며 다음과 같은 책임을 처리합니다.
지정된 자동 암호화 규칙을 사용하여 읽기 및 쓰기 작업에서 암호화할 필드를 표시합니다.
암호화된 필드에서 지원되지 않는 작업이 실행되는 것을 방지합니다.
데이터베이스 연결에 지정된 암호화 스키마를 구문 분석합니다. 자동 암호화 규칙은 JSON schema 구문의 엄격한 하위 집합을 사용합니다. 자동 암호화 규칙에 유효하지 않은 자동 암호화 구문 이나 문서 유효성 검사 구문이 포함된 경우
mongocryptd
는 오류를 반환합니다.
mongocryptd
은(는) 위의 기능만 담당하며 다음과 같은 작업을 수행하지 않습니다.
mongocryptd
자체적으로 암호화 또는 복호화를 수행 하지 않습니다 .mongocryptd
어떤 암호화 키 자료에도 액세스 하지 않습니다 .mongocryptd
네트워크를 통해 수신 대기 하지 않음
MongoDB 이상과 호환되는 4.2 드라이버는 Apache 라이선스가 부여된 libmongocrypt 를 사용합니다. 클라이언트 사이드 필드 레벨 암호화 및 자동 암호 해독을 수행하기 위한 라이브러리입니다.
공식 MongoDB 4.2+ 호환 드라이버, mongosh
및 4.2 이상 레거시 mongo
shell 을 사용하려면 클라이언트 호스팅하다 시스템의 mongocryptd
프로세스 에 액세스 해야 합니다. 이러한 클라이언트는 기본값 시스템 PATH에서 mongocryptd
프로세스 를 검색 합니다.
설치
지원되는 Linux 운영 체제의 경우 Linux에서 설치하기 튜토리얼을 따라 mongodb-enterprise
서버 패키지를 설치합니다. 또는 mongocryptd
바이너리만 설치하려면 mongodb-enterprise-cryptd
를 지정하세요. 패키지 관리자는 시스템 PATH에 있는 위치에 바이너리를 설치합니다 (예: /usr/bin/
).
OSX의 경우, MacOS에 설치하기 튜토리얼을 따라 Server 패키지를 설치합니다. 패키지 관리자는 시스템 PATH에 있는 위치에 바이너리를 설치합니다.
Windows의 경우, Windows에 설치하기 튜토리얼을 따라 서버 패키지를 설치합니다. 설치 후 시스템 PATH에 mongocryptd
패키지를 추가해야 합니다. mongocryptd
바이너리를 시스템 PATH에 추가하는 방법에 대한 지침은 문서화된 Windows 설치 권장사항을 참조하십시오.
공식 tarball 또는 ZIP 아카이브를 통해 설치하는 경우, 운영 체제에 대해 문서화된 권장사항에 따라 시스템 PATH에 mongocryptd
바이너리를 추가하세요.
구성
4.2+ 호환 드라이버가 mongocryptd
프로세스에 액세스할 수 있는 경우 기본적으로 드라이버는 mongocryptd
프로세스의 생성을 managed합니다.
참고
mongocryptd 포트의 사용
드라이버에서 지정한 포트에서 mongocryptd
프로세스가 이미 실행 중인 경우, 드라이버는 경고를 로그에 기록하고 새 프로세스를 생성하지 않고 계속 작동할 수 있습니다. 드라이버에 의해 지정된 모든 설정은 기존 프로세스가 종료되고 새로운 암호화된 클라이언트가 연결을 시도할 때만 적용됩니다.
다음 매개변수를 통해 드라이버가 mongocryptd
을(를) 시작하는 방법을 구성할 수 있습니다.
이름 | 설명 |
---|---|
포트 | The port from which mongocryptd listens for messages.Specify this value in the AutoEncryptionSettings .Default: 27020 |
idleShutdownTimeoutSecs | Number of idle seconds in which the mongocryptd process should wait before exiting.Specify this value in the AutoEncryptionSettings .Default: 60 |
중요
부팅 시 시작하기
가능하면 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 드라이버의 현재 버전(3.3.4)에서는 수신 대기 포트와 일치하도록 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'])