클래스: Mongo::Crypt::ExplicitEncrypter Private

상속:
객체
  • 객체
모두 표시
확장자:
전달 가능
다음에 정의됨:
build/ruby-driver-v2.19/lib/mongo/crypt/explicit_encrypter.rb

개요

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

ExplicitEncrypter는 명시적 암호화 작업을 수행하고 모든 관련 옵션 및 인스턴스 변수를 처리하는 객체입니다.

인스턴스 메서드 요약 접기

생성자 세부 정보

#initialize(key_vault_client, key_vault_namespace, kms_providers, kms_tls_options) ⇒ ExplicitEncrypter

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

새 ExplicitEncrypter 객체를 만듭니다.

매개변수:

  • key_Vault_client (Mongo::Client)

    키 볼트 컬렉션 에 연결할 Mongo::Client 인스턴스 입니다.

  • key_Vault_namespace (string)

    'db_name.collection_name' 형식의 키 볼트 컬렉션의 네임스페이스입니다.

  • kms_providers (Crypt:: KMS::Credentials)

    KMS 구성 정보의 해시입니다.

  • kms_tls_options (해시)

    KMS 제공자에 연결하기 위한 TLS 옵션. 해시의 키는 KSM 제공자 이름이어야 합니다. 값은 TLS 연결 옵션의 해시여야 합니다. 이 옵션은 Mongo::Client의 TLS 연결 옵션과 동일합니다.



38
39
40
41
42
43
44
45
46
47
48
49
50
# 파일 'build/ruby-driver-v2.19/lib/mongo/crypt/explicit_encrypter.rb', 줄 38

def 초기화(key_Vault_client, key_Vault_namespace, kms_providers, kms_tls_options)
  암호화.validate_ffi!
  @crypt_handle = 핸들.신규(
    kms_providers,
    kms_tls_options,
    명시적_암호화_전용: true
  )
  @encryption_io = EncryptionIO.신규(
    key_vault_client: key_Vault_client,
    metadata_client: nil,
    key_vault_namespace: key_Vault_namespace
  )
end

인스턴스 메서드 세부 정보

#add_key_alt_name(ID, key_alt_name) ⇒ BSON::Document | nil

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

지정된 ID를 가진 키 볼트 컬렉션의 키에 대한 key_alt_name을 추가합니다.

매개변수:

  • id (BSON::Binary)

    새 키 대체 이름을 추가할 키의 ID입니다.

  • key_alt_name (string)

    추가할 새 키 대체 이름입니다.

반환합니다:

  • (BSON::Document | nil)

    키를 추가하기 전에 식별된 키를 설명하는 문서로, 해당 키가 없는 경우 nil을 추가하세요.



197
198
199
# 파일 'build/ruby-driver-v2.19/lib/mongo/crypt/explicit_encrypter.rb', 줄 197

def add_key_alt_name(id, key_alt_name)
  @encryption_io.add_key_alt_name(id, key_alt_name)
end

#create_and_insert_data_key(master_key_document, key_alt_names, key_material = nil) ⇒ BSON::Binary

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

암호화/복호화에 사용되는 데이터 키를 생성하고 해당 키를 KMS 컬렉션에 저장합니다. 생성된 키는 KMS 마스터 키로 암호화됩니다.

매개변수:

  • master_key_document (Mongo::Crypt::KMS::MasterKeyDocument)

    마스터 암호화 키 매개변수가 포함된 마스터 키 문서입니다.

  • key_alt_names (Array<String> | nil)

    새 데이터 키의 대체 이름을 지정하는 문자열의 선택적 배열입니다.

  • key_material (string | nil) (기본값: nil)

    생성 중인 데이터 키의 사용자 지정 키 자료로 사용할 선택적 96 바이트입니다. key_material 옵션이 지정되면 사용자 지정 키 자료가 데이터 암호화 및 암호 해독에 사용됩니다.

반환합니다:

  • (BSON::Binary)

    새 데이터 키의 16-바이트 UUID로, 유형이 :uuid인 BSON::Binary 객체 입니다.



67
68
69
70
71
72
73
74
75
76
77
# 파일 'build/ruby-driver-v2.19/lib/mongo/crypt/explicit_encrypter.rb', 줄 67

def create_and_insert_data_key(master_key_document, key_alt_names, key_material = nil)
  data_key_document = 암호화::DataKeyContext.신규(
    @crypt_handle,
    @encryption_io,
    master_key_document,
    key_alt_names,
    key_material
  ).run_state_ machine

  @encryption_io.insert_data_key(data_key_document).insert_id
end

#Decrypt(value) ⇒ 객체

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

이미 암호화된 값을 해독합니다.

매개변수:

  • value (BSON::Binary)

    해독될 하위 유형 6 (암호 텍스트)의 BSON 바이너리 객체입니다.

반환합니다:

  • (객체)

    해독된 값



182
183
184
185
186
187
188
# 파일 'build/ruby-driver-v2.19/lib/mongo/crypt/explicit_encrypter.rb', 줄 182

def 암호 해독(value)
  암호화::명시적 암호 해독 컨텍스트.신규(
    @crypt_handle,
    @encryption_io,
    { v: value }
  ).run_state_ machine['v']
end

#암호화(값, 옵션) ⇒ BSON::Binary

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

참고:

:key_id 및 :key_alt_name 옵션은 상호 배타적입니다. 명시적 암호화를 수행하는 데는 하나만 필요합니다.

지정된 암호화 키 및 알고리즘을 사용하여 값을 암호화합니다.

암호화 알고리즘 이 '인덱싱됨'으로 설정하다 경우. 쿼리 유형을 설정하다 해야 합니다.

only if encryption algorithm is set to "Indexed". The only allowed
value is "equality".

매개변수:

  • value (객체)

    암호화할 값

  • 옵션 (해시)

옵션 해시(options):

  • :key_id (BSON::Binary)

    키 볼트 컬렉션 에 저장된 암호화 키 의 UUID를 나타내는 :uuid 유형의 BSON::Binary 객체 입니다.

  • :key_alt_name (string)

    암호화 키의 대체 이름입니다.

  • :algorithm (string)

    값을 암호화하는 데 사용되는 알고리즘 입니다. 512256512다음과256 .

  • :contention_factor (정수 | nil)

    암호화 알고리즘이 '인덱싱됨'으로 설정된 경우 적용되는 경합 요인입니다. 제공하지 않으면 기본값은 0 입니다. 경합 요인은 암호화 알고리즘이 '인덱싱됨'으로 설정된 경우에만 설정해야 합니다.

  • query_type (string | nil)

    적용할 쿼리 유형

반환합니다:

  • (BSON::Binary)

    암호화된 값을 나타내는 하위 유형 6 (암호 텍스트)의 BSON 바이너리 객체

다음을 발생시킵니다.

  • (ArgumentError)

    contention_factor 또는 query_type이 설정되어 있고 알고리즘이 '인덱싱'되지 않은 경우입니다.



108
109
110
111
112
113
114
115
# 파일 'build/ruby-driver-v2.19/lib/mongo/crypt/explicit_encrypter.rb', 줄 108

def 암호화(value, 옵션)
  암호화::명시적 암호화 컨텍스트.신규(
    @crypt_handle,
    @encryption_io,
    { v: value },
    옵션
  ).run_state_ machine['v']
end

# 암호화 표현식 (표현식, 옵션) ⇒BSON :: Binary

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

참고:

RangePreview 알고리즘 은 실험용으로만 제공됩니다. 그렇지 않습니다.

참고:

:key_id 및 :key_alt_name 옵션은 상호 배타적입니다. 명시적 암호화를 수행하는 데는 하나만 필요합니다.

범위 인덱스를 쿼리하기 위해 일치 표현식 또는 애그리게이션 표현식을 암호화합니다.

queryType이 'rangePreview'이고 알고리즘 이 'RangePreview'인 경우에만 지원됩니다. @note: 범위 알고리즘 은 실험적일 뿐입니다. 의도된 것이 아닙니다.

for public use. It is subject to breaking changes.

# @param [ 해시 ] 옵션은 공개적으로 사용합니다.

예시:

암호화 일치 표현식.

encryption.encrypt_expression(
  {'$and' =>  [{'field' => {'$gt' => 10}}, {'field' =>  {'$lt' => 20 }}]}
)

애그리게이션 표현식을 암호화합니다.

encryption.encrypt_expression(
  {'$and' =>  [{'$gt' => ['$field', 10]}, {'$lt' => ['$field', 20]}}
)
{$and: [{$gt: [<fieldpath>, <value1>]}, {$lt: [<fieldpath>, <value2>]}]

매개변수:

  • 표현식 (해시)

    암호화할 표현식입니다.

  • 옵션 (해시)

    사용자 지정 가능한 옵션 세트

옵션 해시(options):

  • :key_id (BSON::Binary)

    키 볼트 컬렉션 에 저장된 암호화 키 의 UUID를 나타내는 :uuid 유형의 BSON::Binary 객체 입니다.

  • :key_alt_name (string)

    암호화 키의 대체 이름입니다.

  • :algorithm (string)

    표현식을 암호화하는 데 사용되는 알고리즘입니다. 허용되는 유일한 값은 'RangePreview'입니다.

  • :contention_factor (정수 | nil)

    적용할 경합 요인을 제공하지 않으면 기본값은 0 입니다.

  • query_type (string | nil)

    적용할 쿼리 유형입니다. 허용되는 유일한 값은 'rangePreview'입니다.

  • :range_opts (해시 | nil)

    'rangePreview' 쿼리를 지원하는 Queryable Encryption 필드에 대한 인덱스 옵션을 지정합니다. 허용되는 옵션은 다음과 같습니다.

    • :min

    • :max

    • :sparsity

    • :precision

    최소, 최대, 희소성 및 범위는 대상 컬렉션의 암호화된 필드에 설정된 값과 일치해야 합니다. 이중 및 십진수128 의 경우 최소/최대/정밀도를 모두 설정하거나 모두 설정 해제해야 합니다.

반환합니다:

  • (BSON::Binary)

    암호화됨 표현식 나타내는 하위 유형 6 (암호 텍스트)의 BSON 바이너리 객체 입니다.

다음을 발생시킵니다.

  • (ArgumentError)

    options 에 허용되지 않는 값이 설정하다 경우.



167
168
169
170
171
172
173
174
# 파일 'build/ruby-driver-v2.19/lib/mongo/crypt/explicit_encrypter.rb', 줄 167

def 암호화 표현식(표현식, 옵션)
  암호화::명시적 암호화 표현식 컨텍스트.신규(
    @crypt_handle,
    @encryption_io,
    { v: 표현식 },
    옵션
  ).run_state_ machine['v']
end

#rewrap_many_data_key(필터하다, opts = {}) ⇒ Crypt::RewrapManyDataKeyResult

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

여러 데이터 키를 해독하고 새 master_key로 (재)암호화합니다.

or with their current master_key if a new one is not given.

매개변수:

  • 필터 (해시)

    업데이트할 키를 찾는 데 사용되는 필터입니다.

  • 옵션 (해시)

반환합니다:



250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
# 파일 'build/ruby-driver-v2.19/lib/mongo/crypt/explicit_encrypter.rb', 줄 250

def rerap_many_data_key(필터, opts = {})
  validate_rerap_options!(opts)

  master_key_document = master_key_for_provider(opts)

  rerap_result = 암호화::RewrapManyDataKeyContext.신규(
    @crypt_handle,
    @encryption_io,
    필터,
    master_key_document
  ).run_state_ machine

  반환 RewrapManyDataKeyResult.신규(nil) 만약 rerap_result.nil?

  업데이트 = update_from_data_key_documents(rerap_result.가져오기('v'))
  RewrapManyDataKeyResult.신규(@encryption_io.update_data_keys(업데이트))
end