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

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

Overview

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

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

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

コンストラクターの詳細

#initialize(key_vault_client, key_vault_namespace, kms_providers, kms_tls_options, timeout_ms = nil, key_expiration_ms = nil) ⇒ ExplicitEncrypter

このメソッドは、プライベート 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 ) —

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

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

    データ暗号化のキーキャッシュの有効期間(ミリ秒単位)。値が 0 の場合、キャッシュは期限切れになりません。 nil の場合、libmongocrypt のデフォルトの 60000 が使用されます。



43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
# ファイル 'lib/mongo/crypt/explit_encrypter.rb' 行 43

デフォルト 初期化(
  key_vault_client, key_vault_namespace, kms_providers, kms_tls_options,
  timeout_ms = nil, key_expiration_ms = nil
)
  暗号化.validate_ffi!
  @crypt_handle = ハンドル.新着情報(
    kms_providers,
    kms_tls_options,
    明示的_暗号化_専用: true,
    key_expiration_ms: key_expiration_ms
  )
  @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 。



218
219
220
# ファイル 'lib/mongo/crypt/explit_encrypter.rb' 行 218

デフォルト 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 。



77
78
79
80
81
82
83
84
85
86
87
88
89
# ファイル 'lib/mongo/crypt/explit_encrypter.rb' 行 77

デフォルト 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 バイナリ オブジェクト

次の値を返します。

  • (オブジェクト) —

    復号化された値



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

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

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

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

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

パラメーター:

  • id ( BSON ::Binary ) —

    削除するキーの ID。

次の値を返します。

  • (操作 :: 結果) —

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



228
229
230
# ファイル 'lib/mongo/crypt/explit_encrypter.rb' 行 228

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

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

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

注:

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

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

パラメーター:

  • 価値 (オブジェクト) —

    暗号化する値

  • options (ハッシュ)

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

  • :key_id ( BSON::Binary ) —

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

  • :key_alt_name ( string ) —

    暗号化キーの代替名。

  • : アルゴリズム ( string ) —

    値を暗号化するために使用されるアルゴリズム。有効なアルゴリズムは、"AEAD_AES_256 _CBC_HMAC_SHA_512 256512-Deのみごと。

  • :contention_factor (Integer | nil) —

    暗号化アルゴリズムが「Indexed」、「Range」、または「String」に設定されている場合に適用する競合係数。指定しない場合、デフォルトは 0 の値になります。競合係数は、暗号化アルゴリズムが "Indexed"、"Range"、または "String" に設定されている場合にのみ設定する必要があります。

  • :query_type ( string | nil ) —

    暗号化アルゴリズムが "Indexed"、"Range"、または "String" に設定されている場合に適用するクエリタイプ。許可される値は "Equality" (「インデックス付き」の場合)、「範囲」 ("Range" の場合は )、および "prefix"")、"sfix"")、"substring" の("String" の場合は )。

  • :range_opts (ハッシュ | nil ) —

    "range" をサポートするQueryable Encryptionフィールドのインデックスオプションを指定します。クエリを実行します。アルゴリズムが "Range" の場合に必要です。

  • :string_opts (ハッシュ | nil ) —

    「プレフィックス」、「サフィックス」、または「サブストリング」をサポートするQueryable Encryptionフィールドのインデックスオプションを指定します。クエリを実行します。アルゴリズムが "String" の場合に必要です。

次の値を返します。

  • ( BSON ::Binary ) —

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

次の値が発生します。

  • (ArgumentError) —

    は、contents_factor または query_type のいずれかが設定されており、 かつアルゴリズムが"Indexed" 、"Range"、または "String" ではない場合を指します。



128
129
130
131
132
133
134
135
# ファイル 'lib/mongo/crypt/explit_encrypter.rb' 行 128

デフォルト 暗号化(価値, 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 が "範囲" で、アルゴリズムが "範囲" の場合にのみサポートされます。@note: 範囲アルゴリズムは実験的なもののみです。一般的な使用を意図したものではありません。重大な変更が発生する可能性があります。

@ 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
    • :preference min、max、trim_factor、sparse、および精度は、宛先コレクションの encryptedField に設定されている値と一致する必要があります 。double と decimal128 の場合は、最小値/最大値/精度はすべて設定されるか、すべてが設定されていない必要があります。

次の値を返します。

  • ( BSON ::Binary ) —

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

次の値が発生します。

  • (ArgumentError) —

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



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

デフォルト 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 。



238
239
240
# ファイル 'lib/mongo/crypt/explit_encrypter.rb' 行 238

デフォルト 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 。



248
249
250
# ファイル 'lib/mongo/crypt/explit_encrypter.rb' 行 248

デフォルト 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 仕様で定義されています

次の値を返します。



257
258
259
# ファイル 'lib/mongo/crypt/explit_encrypter.rb' 行 257

デフォルト 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 。



269
270
271
# ファイル 'lib/mongo/crypt/explit_encrypter.rb' 行 269

デフォルト 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 の一部です。 このメソッドは将来削除または変更される可能性があるため、可能な限り使用しないでください。

複数のデータキーを復号化し、新しいマスター_キーで、または新しいマスター_キーでそれらを(再)暗号化します。新しいマスター_キーが指定されていない場合は、現在のマスター_キーで(再)暗号化します。

パラメーター:

  • フィルター (ハッシュ) —

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

  • options (ハッシュ)

次の値を返します。



284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
# ファイル 'lib/mongo/crypt/explit_encrypter.rb' 行 284

デフォルト 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