クラス: Mongo::Crypt::ExpriteEncrypter Private

継承:
オブジェクト
  • オブジェクト
すべて表示
次による拡張機能。
転送可能
定義:
lib/mongo/crypt/explit_encrypter.rb

Overview

このクラスは、プライベート API の一部です。 このクラスは将来削除または変更される可能性があるため、可能な限り使用しないでください。

Explorer は、明示的な暗号化操作を実行し、関連するすべてのオプションとインスタンス変数を取り扱うオブジェクトです。

インスタンス メソッドの概要を折りたたむ

コンストラクターの詳細

# 初期化(key_vault_client, key_vault_namespace, kms_providers, kms_tls_options, timeout_ms = nil)= nil)========================================================

このメソッドは、プライベート API の一部です。 このメソッドは将来削除または変更される可能性があるため、可能な限り使用しないでください。

新しい Explorer オブジェクトを作成します。

パラメーター:

  • 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 オプション。 ハッシュのキーは、K SM プロバイダー名である必要があります。値は、TLS 接続オプションのハッシュである必要があります。 オプションは、Mongo::Client の TLS 接続オプションと同じです。

  • timeout_ms (Integer | nil) (デフォルトはnil

    このオブジェクトで実行されたすべての操作のタイムアウト。



40
41
42
43
44
45
46
47
48
49
50
51
52
53
# ファイル 'lib/mongo/crypt/explit_encrypter.rb' 行 40

デフォルト 初期化(key_vault_client, key_vault_namespace, kms_providers, kms_tls_options, timeout_ms = nil)
  暗号化.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
  )
  @timeout_ms = timeout_ms
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 。



203
204
205
# ファイル 'lib/mongo/crypt/explit_encrypter.rb' 行 203

デフォルト add_key_alt_name(id, key_alt_name)
  @encryption_io.add_key_alt_name(id, key_alt_name, timeout_ms: @timeout_ms)
end

# create_and_insert_data_key (マスター_キー_ドキュメント、key_alt_names、 key_rate

このメソッドは、プライベート API の一部です。 このメソッドは将来削除または変更される可能性があるため、可能な限り使用しないでください。

暗号化および復号化に使用されるデータキーを生成し、そのキーを KMS コレクションに保存します。 生成されたキーは KMS マスター キーで暗号化されます。

パラメーター:

  • マスター_キー_ドキュメント Mongo::Crypt::KMS:: MasterKeyDocument

    マスター暗号化キー パラメータを含む マスター キー ドキュメント 。

  • key_alt_names 配列<String> | nil

    新しいデータキーの代替名を指定する文字列の任意の配列。

  • key_rate string | nil (デフォルトはnil

    作成されるデータキーのカスタムキーマテリアルとして使用する任意の96バイト。 key_model オプションが指定されている場合、カスタム キーマテリアル はデータの暗号化と復号化に使用されます。

次の値を返します。

  • BSON ::Binary

    :uuid 型の BSON::Binary オブジェクトとしての新しいデータキーの16バイト UUID 。



70
71
72
73
74
75
76
77
78
79
80
81
82
# ファイル 'lib/mongo/crypt/explit_encrypter.rb' 行 70

デフォルト create_and_insert_data_key(マスター_キー_ドキュメント, key_alt_names, key_rate = nil)
  data_key_document = 暗号化::DataKeyContext.新着情報(
    @crypt_handle,
    @encryption_io,
    マスター_キー_ドキュメント,
    key_alt_names,
    key_rate
  ).run_ State_ Machine(timeout_holder)

  @encryption_io.insert_data_key(
    data_key_document, timeout_ms: timeout_holder.retention_timeout_ms。
  ).insert_id
end

#decryption (値)=オブジェクト

このメソッドは、プライベート API の一部です。 このメソッドは将来削除または変更される可能性があるため、可能な限り使用しないでください。

すでに暗号化されている値を復号化します

パラメーター:

  • 価値 BSON ::Binary

    復号化されるサブタイプ6 (暗号テキスト)の BSON バイナリ オブジェクト

次の値を返します。

  • オブジェクト

    復号化された値



188
189
190
191
192
193
194
# ファイル 'lib/mongo/crypt/explit_encrypter.rb' 行 188

デフォルト 解読(価値)
  暗号化::ExplicitDecryptionContext.新着情報(
    @crypt_handle,
    @encryption_io,
    { v: 価値 }
  ).run_ State_ Machine(timeout_holder)['v']
end

# delete_key ( ID ) =操作::結果

このメソッドは、プライベート API の一部です。 このメソッドは将来削除または変更される可能性があるため、可能な限り使用しないでください。

指定された ID を持つキーをキーヴォールト コレクションから削除します。

パラメーター:

  • id BSON ::Binary

    削除するキーの ID。

次の値を返します。

  • 操作 :: 結果

    キーを削除する delete_one 操作に対するデータベースからの応答。



213
214
215
# ファイル 'lib/mongo/crypt/explit_encrypter.rb' 行 213

デフォルト delete_key(id)
  @encryption_io.delete_key(id, timeout_ms: @timeout_ms)
end

#暗号化(値、オプション) = BSON::Binary

このメソッドは、プライベート API の一部です。 このメソッドは将来削除または変更される可能性があるため、可能な限り使用しないでください。

注:

:key_id オプションと :key_alt_name オプションは相互に排他的です。 明示的な暗号化を実行するには 1 つのみが必要です。

指定された暗号化キーとアルゴリズムを使って値を暗号化します

暗号化アルゴリズムが [ Indexed(インデックス付き) ] に設定されている場合。 クエリタイプは、

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

パラメーター:

  • 価値 オブジェクト

    暗号化する値

  • options ハッシュ

オプション ハッシュ( options ):

  • :key_id BSON::Binary

    キーヴォールトコレクションに保存されている暗号化のキーの UUID を表す :uuid の BSON::Binary オブジェクト。

  • :key_alt_name string

    暗号化キーの代替名。

  • : アルゴリズム string

    値を暗号化するために使用されるアルゴリズム。 有効なアルゴリズムは、AEAD_AES_ 256 _CBC_HMAC_SHA_ 512 -決定的)、AEAD_AES_ 256 _CBC_HMAC_SHA_ 512 -ランダム 、インデックス付き 、インデックスなし 。

  • :contention_factor (Integer | nil)

    暗号化アルゴリズムが インデックス付き に設定されている場合に適用される競合係数。 指定しない場合、デフォルトは0の値になります。 競合係数は、暗号化アルゴリズムが [ Indexed(インデックス付き) ] に設定されている場合にのみ設定する必要があります。

  • query_type string | nil

    適用するクエリの種類

次の値を返します。

  • BSON ::Binary

    暗号化された値を表すサブタイプ6 (暗号テキスト)の BSON バイナリ オブジェクト

次の値が発生します。

  • (ArgumentError)

    は、content_factor または query_type のいずれかが設定され、 かつ アルゴリズムが インデックス付きでない 場合に適用されます。



113
114
115
116
117
118
119
120
# ファイル 'lib/mongo/crypt/explit_encrypter.rb' 行 113

デフォルト 暗号化(価値, options)
  暗号化::ExplainEncryptionContext.新着情報(
    @crypt_handle,
    @encryption_io,
    { v: 価値 },
    options
  ).run_ State_ Machine(timeout_holder)['v']
end

#暗号化_式(式、オプション) =BSON::Binary

このメソッドは、プライベート API の一部です。 このメソッドは将来削除または変更される可能性があるため、可能な限り使用しないでください。

注:

Rangeアルゴリズムは実験的なもののみです。 ではありません

注:

:key_id オプションと :key_alt_name オプションは相互に排他的です。 明示的な暗号化を実行するには 1 つのみが必要です。

範囲インデックスをクエリするには、 マッチ式 または 集計式 を暗号化します。

queryType が range で、アルゴリズムが Range の場合にのみサポートされます。 @note: Rangeアルゴリズムは実験的なもののみです。 意図したものではありません

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 ハッシュ

    カスタマイズ可能なオプションのセット

オプション ハッシュ( options ):

  • :key_id BSON::Binary

    キーヴォールトコレクションに保存されている暗号化のキーの UUID を表す :uuid の BSON::Binary オブジェクト。

  • :key_alt_name string

    暗号化キーの代替名。

  • : アルゴリズム string

    式を暗号化するために使用されるアルゴリズム。 許可される値は範囲のみ

  • :contention_factor (Integer | nil)

    適用される競合係数。指定されない場合、デフォルトは0の値になります。

  • query_type string | nil

    適用されるクエリのタイプ。 許可される値は範囲のみです。

  • :range_opts ハッシュ | nil

    範囲 クエリをサポートするQueryable Encryptionフィールドのインデックスオプションを指定します。 許可されるオプションは次のとおりです。

    • :min

    • :max

    • :trim_factor

    • :sparsity

    • : 精度

    min、max、trim_factor、スパース、精度は、宛先コレクションの encryptedFields に設定されている値と一致する必要があります 。 double と decimal128 の場合は、最小値/最大値/精度はすべて設定されるか、すべてが設定されていない必要があります。

次の値を返します。

  • BSON ::Binary

    暗号化された式を表すサブタイプ6 (暗号テキスト)の BSON バイナリ オブジェクト。

次の値が発生します。

  • (ArgumentError)

    オプションで許可されていない値が設定されている場合。



173
174
175
176
177
178
179
180
# ファイル 'lib/mongo/crypt/explit_encrypter.rb' 行 173

デフォルト encryption_式(, options)
  暗号化::ExplainEncryptionExpressionContext.新着情報(
    @crypt_handle,
    @encryption_io,
    { v:  },
    options
  ).run_ State_ Machine(timeout_holder)['v']
end

#get_key(id) ⇒ BSON::Document | nil

このメソッドは、プライベート API の一部です。 このメソッドは将来削除または変更される可能性があるため、可能な限り使用しないでください。

指定された ID を持つ単一のキーを検索します。

パラメーター:

  • id BSON ::Binary

    取得するキーの ID。

次の値を返します。

  • (BSON::Document | nil)

    見つかったキー ドキュメント、または見つからない場合は nil 。



223
224
225
# ファイル 'lib/mongo/crypt/explit_encrypter.rb' 行 223

デフォルト get_key(id)
  @encryption_io.get_key(id, timeout_ms: @timeout_ms)
end

#get_key_by_alt_name(key_alt_name) ⇒ BSON::Document | nil

このメソッドは、プライベート API の一部です。 このメソッドは将来削除または変更される可能性があるため、可能な限り使用しないでください。

指定された key_alt_name を持つキーヴォールト コレクション内のキーを返します。

パラメーター:

  • key_alt_name ( string )

    キーを検索するには、 キー代替名 を参照してください。

次の値を返します。

  • (BSON::Document | nil)

    見つかったキー ドキュメント、または見つからない場合は nil 。



233
234
235
# ファイル 'lib/mongo/crypt/explit_encrypter.rb' 行 233

デフォルト get_key_by_alt_name(key_alt_name)
  @encryption_io.get_key_by_alt_name(key_alt_name, timeout_ms: @timeout_ms)
end

get_keys = Collection::View

このメソッドは、プライベート API の一部です。 このメソッドは将来削除または変更される可能性があるため、可能な限り使用しないでください。

キーヴォールト コレクション内のすべてのキーを返します。

rust スコープ: disable 命名/Accessor MethodName このメソッドの名前は FLE 仕様で定義されています

次の値を返します。



242
243
244
# ファイル 'lib/mongo/crypt/explit_encrypter.rb' 行 242

デフォルト get_keys
  @encryption_io.get_keys(timeout_ms: @timeout_ms)
end

#remove_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 。



254
255
256
# ファイル 'lib/mongo/crypt/explit_encrypter.rb' 行 254

デフォルト delete_key_alt_name(id, key_alt_name)
  @encryption_io.delete_key_alt_name(id, key_alt_name, timeout_ms: @timeout_ms)
end

# brewp_many_data_key (フィルター、opts = {}) = Crypt::RewriteManyDataKeyResult

このメソッドは、プライベート API の一部です。 このメソッドは将来削除または変更される可能性があるため、可能な限り使用しないでください。

複数のデータキーを復号化し、新しいマスター_キーでそれらを(再)暗号化します、

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

パラメーター:

  • フィルター ハッシュ

    更新するキーを検索するために使用されるフィルター。

  • options ハッシュ

次の値を返します。



269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
# ファイル 'lib/mongo/crypt/explit_encrypter.rb' 行 269

デフォルト rewrap_many_data_key(フィルター, ops = {})
  validate_rewrap_options!(ops)

  マスター_キー_ドキュメント = database_key_for_provider(ops)

  replica_result = 暗号化::RewriteManyDataKeyContext.新着情報(
    @crypt_handle,
    @encryption_io,
    フィルター,
    マスター_キー_ドキュメント
  ).run_ State_ Machine(timeout_holder)

  return RewriteManyDataKeyResult.新着情報(nil) 場合 replica_result.nil?

  updates = updates_from_data_key_documents(replica_result.fetch('v'))
  RewriteManyDataKeyResult.新着情報(
    @encryption_io.update_data_keys(updates, timeout_ms: @timeout_ms)
  )
end