클래스: Mongo::Crypt::AutoEncrypter Private

상속:
객체
  • 객체
모두 표시
다음에 정의됨:
build/ruby-driver-v2.19/lib/mongo/crypt/auto_encrypter.rb

개요

이 클래스는 비공개 API의 일부입니다. 이 클래스는 향후 제거되거나 변경될 수 있으므로 가능하면 사용하지 않는 것이 좋습니다.

AutoEcnrypter는 자동 암호화 동작을 캡슐화하는 객체 입니다. libmongocrypt 처리하다, 키 볼트 클라이언트 객체, mongocryptd 클라이언트 객체 및 암호화 I/O를 포함하여 자동 암호화와 관련된 모든 리소스를 제어합니다.

자동 암호화기는 Mongo::Client에서 인스턴스로 유지됩니다. 동일한 auto_encryption_options 해시를 가진 클라이언트 객체는 자동 암호화기를 공유할 수 있습니다.

상수 요약 접기

DEFAULT_EXTRA_OPTIONS =

이 상수는 비공개 API의 일부입니다. 이 상수는 향후 제거되거나 변경될 수 있으므로 가능하면 사용하지 않는 것이 좋습니다.

:extra_options 옵션에 대한 기본값의 해시입니다.

옵션::편집됨.신규({
  mongocryptd_uri: 'mongodb://localhost:27020',
  mongocryptd_bypass_spawn: 거짓,
  mongocryptd_spawn_path: 'mongocryptd',
  mongocryptd_spawn_args: ['--idleShutdownTimeoutSecs=60'],
})

인스턴스 속성 요약 접기

인스턴스 메서드 요약 접기

생성자 세부 정보

#initialize(options) ⇒ AutoEncrypter

이 메서드는 비공개 API의 일부입니다. 이 방법은 향후 제거되거나 변경될 수 있으므로 가능하면 사용하지 않는 것이 좋습니다.

이 모듈을 포함하는 클래스에서 암호화 관련 옵션 및 인스턴스 변수를 설정합니다. Mongo::Crypt::Encrypter 모듈에서 동일한 메서드를 호출합니다.

매개변수:

  • 옵션 (해시)

옵션 해시(options):

  • :client (Mongo::Client)

    암호화됨 컬렉션 에 연결된 클라이언트 입니다.

  • :key_Vault_client (Mongo::Client | nil)

    암호화 키 볼트가 포함된 MongoDB 인스턴스에 연결된 클라이언트. 선택 사항입니다. 제공하지 않으면 기본값은 :client 옵션입니다.

  • :key_vault_namespace (string)

    형식 데이터베이스 에 있는 키 볼트의 네임스페이스 입니다. 컬렉션.

  • :schema_map (해시 | nil)

    암호화된 필드가 있는 컬렉션의 JSONSchema입니다. 이 옵션은 :schema_map_path와 상호 배타적입니다.

  • :schema_map_path (string | nil)

    파일 경로에는 자동으로 암호화됨 문서를 저장하는 컬렉션 의 JSON schema 가 포함되어 있습니다. 이 옵션은 :schema_map과 상호 배타적입니다.

  • :bypass_auto_encryption (Boolean | nil)

    true이면 자동 암호화를 비활성화합니다. 기본값은 false입니다.

  • :extra_options (해시 | nil)

    mongocryptd 생성과 관련된 옵션입니다. 옵션이 전달되지 않으면 기본값 설정하다 됩니다.

  • :kms_providers (해시)

    KMS 구성 정보의 해시입니다. 지원되는 모든 제공자에 대한 옵션 목록은 @Mongo::Crypt::KMS::Credentials를 참조하세요. @note 둘 이상의 KMS 제공자가 지정되었을 수 있습니다.

  • :kms_tls_options (해시)

    KMS 제공자에 연결하기 위한 TLS 옵션. 해시의 키는 KSM 제공자 이름이어야 합니다. 값은 TLS 연결 옵션의 해시여야 합니다. 이 옵션은 Mongo::Client의 TLS 연결 옵션과 동일합니다. @TLS 옵션 목록은 Mongo::Client#initialize를 참조하세요.

  • :encrypted_fields_map (해시 | nil)

    컬렉션 네임스페이스 를 암호화된 필드에 매핑합니다.

    • 참고: 컬렉션이 암호화된 필드 맵과 schemaMap 모두에 존재하는 경우 오류가 발생합니다.

  • :bypass_query_analysis (Boolean | nil)

    true이면 발신 명령의 자동 분석이 비활성화됩니다.

  • :crypt_shared_lib_path (string | nil)

    crypt 공유 라이브러리를 로드하는 데 사용해야 하는 경로입니다. 이 옵션을 제공하면 libmongocrypt에 대한 기본 암호화 공유 라이브러리 로드 경로가 재정의됩니다.

  • :crypt_shared_lib_required (Boolean | nil)

    crypt 공유 라이브러리가 필요한지 여부입니다. 'true'인 경우, libmongocrypt가 crypt_shared 라이브러리를 로드할 수 없는 경우 오류가 발생합니다.

다음을 발생시킵니다.

  • (ArgumentError)

    필수 옵션이 누락되었거나 형식이 잘못된 경우.



93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
# 파일 'build/ruby-driver-v2.19/lib/mongo/crypt/auto_encrypter.rb', 줄 93

def 초기화(옵션)
  암호화.validate_ffi!
  # 이 호출은 결국 다른 메서드 호출을 통해
  # 정리해야 하는 추가 클라이언트를 만듭니다.
  @options = set_default_options(옵션).동결

  @crypt_handle = 암호화::핸들.신규(
    암호화::KMS::자격 증명.신규(@options[:kms_providers]),
    암호화::KMS::유효성 검사.validate_tls_options(@options[:kms_tls_options]),
    schema_map: @options[:schema_map],
    schema_map_path: @options[:schema_map_path],
    encryption_fields_map: @options[:encrypted_fields_map],
    bypass_query_analysis: @options[:bypass_query_analysis],
    crypt_shared_lib_path: @options[:extra_options][:crypt_shared_lib_path],
    crypt_shared_lib_required: @options[:extra_options][:crypt_shared_lib_required],
  )

  @mongocryptd_options = @options[:extra_options].슬라이스(
    :mongocryptd_uri,
    :mongocryptd_bypass_spawn,
    :mongocryptd_spawn_path,
    :mongocryptd_spawn_args
  )
  @mongocryptd_options[:mongocryptd_bypass_spawn] = @options[:bypass_auto_encryption] ||
    @options[:extra_options][:mongocryptd_bypass_spawn] ||
    @crypt_handle.crypt_shared_lib_available? ||
    @options[:extra_options][:crypt_shared_lib_required]

  하지 않는 한 @options[:extra_options][:crypt_shared_lib_required] || @crypt_handle.crypt_shared_lib_available? || @options[:bypass_query_analysis]
    # 서버 선택 시간 제한을 1 으)로 설정하여 클라이언트 가 다음 시간 동안 기다리지 않도록
    # mongocryptd를 생성하기 전에 긴 시간 초과
    @mongocryptd_client = 고객.신규(
      @options[:extra_options][:mongocryptd_uri],
      monitoring_io: @options[:client].옵션[:monitoring_io],
      populator_io: @options[:client].옵션[:populator_io],
      server_selection_timeout: 10,
      database: @options[:client].옵션[:database]
    )
  end

  시작
    @encryption_io = EncryptionIO.신규(
      클라이언트: @options[:client],
      mongocryptd_client: @mongocryptd_client,
      key_vault_namespace: @options[:key_vault_namespace],
      key_vault_client: @key_Vault_client,
      metadata_client: @metadata_client,
      mongocryptd_options: @mongocryptd_options
    )
  구출
    시작
      @mongocryptd_client&.닫기
    구출 => e
      log_warn("자동 암호화기의 생성자에서 mongocryptd 클라이언트를 닫는 중 오류 발생: #{e.class}: #{e}")
      # 이 예외를 삭제하여 원래 예외가 발생하도록 합니다.
    end
    올리다
  end
구출
  만약 @key_Vault_client && @key_Vault_client != 옵션[:client] &&
    @key_Vault_client.cluster != 옵션[:client].cluster
  then
    시작
      @key_Vault_client.닫기
    구출 => e
      log_warn("자동 암호화기의 생성자에서 키 볼트 클라이언트 를 닫는 동안 오류가 발생했습니다: #{e.class}: #{e}")
      # 이 예외를 삭제하여 원래 예외가 발생하도록 합니다.
    end
  end

  만약 @metadata_client && @metadata_client != 옵션[:client] &&
    @metadata_client.cluster != 옵션[:client].cluster
  then
    시작
      @metadata_client.닫기
    구출 => e
      log_warn("자동 암호화기의 생성자에서 메타데이터 클라이언트를 닫는 중 오류가 발생했습니다: #{e.class}: #{e}")
      # 이 예외를 삭제하여 원래 예외가 발생하도록 합니다.
    end
  end

  올리다
end

인스턴스 속성 세부 정보

#key_vault_client객체 (읽기 전용)

이 메서드는 비공개 API의 일부입니다. 이 방법은 향후 제거되거나 변경될 수 있으므로 가능하면 사용하지 않는 것이 좋습니다.



34
35
36
# 파일 'build/ruby-driver-v2.19/lib/mongo/crypt/auto_encrypter.rb', 줄 34

def key_Vault_client
  @key_Vault_client
end

#metadata_client객체 (읽기 전용)

이 메서드는 비공개 API의 일부입니다. 이 방법은 향후 제거되거나 변경될 수 있으므로 가능하면 사용하지 않는 것이 좋습니다.



35
36
37
# 파일 'build/ruby-driver-v2.19/lib/mongo/crypt/auto_encrypter.rb', 줄 35

def 
  @metadata_client
end

#mongocryptd_client객체 (읽기 전용)

이 메서드는 비공개 API의 일부입니다. 이 방법은 향후 제거되거나 변경될 수 있으므로 가능하면 사용하지 않는 것이 좋습니다.



33
34
35
# 파일 'build/ruby-driver-v2.19/lib/mongo/crypt/auto_encrypter.rb', 줄 33

def mongocryptd_client
  @mongocryptd_client
end

#options객체 (읽기 전용)

이 메서드는 비공개 API의 일부입니다. 이 방법은 향후 제거되거나 변경될 수 있으므로 가능하면 사용하지 않는 것이 좋습니다.



36
37
38
# 파일 'build/ruby-driver-v2.19/lib/mongo/crypt/auto_encrypter.rb', 줄 36

def 옵션
  @options
end

인스턴스 메서드 세부 정보

#닫기true

이 메서드는 비공개 API의 일부입니다. 이 방법은 향후 제거되거나 변경될 수 있으므로 가능하면 사용하지 않는 것이 좋습니다.

자동 암호화 프로그램에서 생성된 리소스를 닫습니다.

반환합니다:

  • (true)

    항상 사실입니다.



217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
# 파일 'build/ruby-driver-v2.19/lib/mongo/crypt/auto_encrypter.rb', 줄 217

def 닫기
  @mongocryptd_client.닫기 만약 @mongocryptd_client

  만약 @key_Vault_client && @key_Vault_client != 옵션[:client] &&
    @key_Vault_client.cluster != 옵션[:client].cluster
  then
    @key_Vault_client.닫기
  end

  만약 @metadata_client && @metadata_client != 옵션[:client] &&
    @metadata_client.cluster != 옵션[:client].cluster
  then
    @metadata_client.닫기
  end

  true
end

# Decrypt (command) ⇒BSON ::Document

이 메서드는 비공개 API의 일부입니다. 이 방법은 향후 제거되거나 변경될 수 있으므로 가능하면 사용하지 않는 것이 좋습니다.

데이터베이스 명령 을 해독합니다.

매개변수:

  • 명령 (해시)

    암호화된 필드가 있는 명령입니다.

반환합니다:

  • (BSON::Document)

    해독된 명령입니다.



206
207
208
209
210
211
212
# 파일 'build/ruby-driver-v2.19/lib/mongo/crypt/auto_encrypter.rb', 줄 206

def 암호 해독(명령)
  AutoDecryptionContext.신규(
    @crypt_handle,
    @encryption_io,
    명령
  ).run_state_ machine
end

#암호화(database_name, 명령) ⇒ BSON::Document

이 메서드는 비공개 API의 일부입니다. 이 방법은 향후 제거되거나 변경될 수 있으므로 가능하면 사용하지 않는 것이 좋습니다.

데이터베이스 명령 을 암호화합니다.

매개변수:

  • database_name (string)

    명령이 실행 중인 데이터베이스의 이름입니다.

  • 명령 (해시)

    암호화할 명령입니다.

반환합니다:

  • (BSON::Document)

    암호화됨 명령입니다.



192
193
194
195
196
197
198
199
# 파일 'build/ruby-driver-v2.19/lib/mongo/crypt/auto_encrypter.rb', 줄 192

def 암호화(database_name, 명령)
  AutoEncryptionContext.신규(
    @crypt_handle,
    @encryption_io,
    database_name,
    명령
  ).run_state_ machine
end

#암호화?부울

이 메서드는 비공개 API의 일부입니다. 이 방법은 향후 제거되거나 변경될 수 있으므로 가능하면 사용하지 않는 것이 좋습니다.

이 암호화기가 암호화 를 수행해야 하는지 여부(:bypass_auto_encryption 옵션이 true로 설정하다 경우 false 반환).

반환합니다:

  • (부울)

    암호화 를 수행할지 여부입니다.



181
182
183
# 파일 'build/ruby-driver-v2.19/lib/mongo/crypt/auto_encrypter.rb', 줄 181

def 암호화?
  !@options[:bypass_auto_encryption]
end