Class: Mongo::ClientEncryption
- 継承:
-
オブジェクト
- オブジェクト
- Mongo::ClientEncryption
- 定義:
- lib/mongo/client_encryption.rb
Overview
ClientEncryption は、MongoClient では直接実行できないキーヴォールト コレクションに対する明示的な操作をカプセル化します。 値を明示的に暗号化および復号化し、データキーを作成するための API を提供します。
インスタンス メソッドの概要を折りたたむ
-
#add_key_alt_name(id, key_alt_name) ⇒ BSON::Document | nil
指定された ID を持つキーヴォールト コレクション内のキーの key_alt_name を追加します。
-
# create_data_key (kms_provider、オプション={})= BSON::Binary
暗号化および復号化に使用されるデータキーを生成し、そのキーを KMS コレクションに保存します。
-
# create_encrypted_collection (database, coll_name,coll_opts, kms_provider, Master_key) = 配列未満: 結果、ハッシュ>
暗号化されたフィールドを持つコレクションを作成します。
-
#decryption (値)=オブジェクト
すでに暗号化されている値を復号化します。
-
# delete_key ( ID ) = 操作::結果
指定された ID を持つキーをキーヴォールト コレクションから削除します。
-
#暗号化(値、オプション = {{}) = BSON::Binary
指定された暗号化キーとアルゴリズムを使って値を暗号化します。
-
#暗号化_式(式、オプション={{})= BSON::Binary
範囲インデックスをクエリするには、 マッチ式 または 集計式 を暗号化します。
-
#get_key(id) ⇒ BSON::Document | nil
指定された ID を持つ単一のキーを検索します。
-
#get_key_by_alt_name(key_alt_name) ⇒ BSON::Document | nil
指定された key_alt_name を持つキーヴォールト コレクション内のキーを返します。
-
#get_keys = Collection::View(#キーも)
キーヴォールト コレクション内のすべてのキーを返します。
-
#initialize(key_vault_client, options = {}) ⇒ ClientEncryption
コンストラクター
指定されたオプションを使用して新しい ClientEncryption オブジェクトを作成します。
-
#remove_key_alt_name(id, key_alt_name) ⇒ BSON::Document | nil
指定された ID を持つキーヴォールトコレクション内のキーから key_alt_name を削除します。
-
# brewp_many_data_key (フィルター、opts = {}) = Crypt::RewriteManyDataKeyResult
複数のデータキーを復号化し、新しいマスター_キーで、または新しいマスター_キーでそれらを(再)暗号化します。新しいマスター_キーが指定されていない場合は、現在のマスター_キーで(再)暗号化します。
コンストラクターの詳細
#initialize(key_vault_client, options = {}) ⇒ ClientEncryption
指定されたオプションを使用して新しい ClientEncryption オブジェクトを作成します。
52 53 54 55 56 57 58 59 60 61 |
# ファイル 'lib/mongo/client_encryption.rb' 行 52 デフォルト 初期化(key_vault_client, = {}) @encrypter = 暗号化::明示的暗号化.新着情報( key_vault_client, [:key_vault_namespace], 暗号化::KMS::Credentials.新着情報([: kms_providers]), 暗号化::KMS::検証.([: kms_tls_options]), [:timeout_ms], [:key_expiration_ms] ) end |
インスタンス メソッドの詳細
#add_key_alt_name(id, key_alt_name) ⇒ BSON::Document | nil
指定された ID を持つキーヴォールト コレクション内のキーの key_alt_name を追加します。
207 208 209 |
# ファイル 'lib/mongo/client_encryption.rb' 行 207 デフォルト add_key_alt_name(id, key_alt_name) @encrypter.add_key_alt_name(id, key_alt_name) end |
# create_data_key (kms_provider、オプション={})= BSON::Binary
暗号化および復号化に使用されるデータキーを生成し、そのキーを KMS コレクションに保存します。 生成されたキーは KMS マスター キーで暗号化されます。
89 90 91 92 93 94 95 |
# ファイル 'lib/mongo/client_encryption.rb' 行 89 デフォルト create_data_key(kms_provider, = {}) key_document = 暗号化::KMS::MasterKeyDocument.新着情報(kms_provider, ) key_alt_names = [:key_alt_names] key_rate = [:key_rate] @encrypter.create_and_insert_data_key(key_document, key_alt_names, key_rate) end |
# create_encrypted_collection (database, coll_name,coll_opts, kms_provider, Master_key) == Array =======================================
このメソッドでは、クライアントの : auto_encryption_options の :encrypted_fields_map は更新されません。したがって、このメソッドによって作成されたコレクションを自動暗号化と併用するには、 :encrypted_fields が返されたこの関数を呼び出した後、新しいクライアントを作成する必要があります。
暗号化されたフィールドを持つコレクションを作成します。
:encryption_fields に null 値を持つ keyId が含まれている場合、データキーが自動的に生成され、keyId 値に割り当てられます。
294 295 296 297 298 299 300 301 302 303 304 305 |
# ファイル 'lib/mongo/client_encryption.rb' 行 294 デフォルト create_encrypted_collection(database, coll_name, coll_opts, kms_provider, マスター_キー) 発生 ArgumentError, 「 coll_opts には :encrypted_fields が含まれている必要があります」 ただし、 coll_opts[:encrypted_fields] encryption_fields = create_data_keys(coll_opts[:encrypted_fields], kms_provider, マスター_キー) begin new_coll_opts = coll_opts.dup.merge(encryption_fields: encryption_fields) [ database[coll_name].create(new_coll_opts), encryption_fields ] ヘルプ mongo::エラー => e 発生 エラー::CryptError, "暗号化されたフィールドを使用したコレクションの作成エラー\ #{ encrypted_fields } : #{ e .クラス} : #{ e .} " end end |
#decryption (値)=オブジェクト
すでに暗号化されている値を復号化します。
196 197 198 |
# ファイル 'lib/mongo/client_encryption.rb' 行 196 デフォルト 解読(価値) @encrypter.解読(価値) end |
# delete_key ( ID ) =操作::結果
指定された ID を持つキーをキーヴォールト コレクションから削除します。
217 218 219 |
# ファイル 'lib/mongo/client_encryption.rb' 行 217 デフォルト delete_key(id) @encrypter.delete_key(id) end |
#暗号化(値、オプション = {{}) = BSON::Binary
「インデックス」、「範囲」、または「string」アルゴリズムを使用した明示的な暗号化の結果は、挿入またはクエリを行うためにサーバーによって処理される必要があります。このようなペイロードで挿入またはクエリを実行するには、:auto_encryption_optionsで構成されたMongo::クライアントを使用します。:bypass_query_analysisオプションはtrueでも構いませんが、:bypass_auto_encryptionオプションはfalseである必要があります。
「substring」クエリタイプは不安定であり、後方互換性のない重大な変更が行われる可能性があります。
:key_id オプションと :key_alt_name オプションは相互に排他的です。 明示的な暗号化を実行するには 1 つのみが必要です。
指定された暗号化キーとアルゴリズムを使って値を暗号化します。
146 147 148 |
# ファイル 'lib/mongo/client_encryption.rb' 行 146 デフォルト 暗号化(価値, = {}) @encrypter.暗号化(価値, ) end |
#暗号化_式(式、オプション={{})= BSON::Binary
:key_id オプションと :key_alt_name オプションは相互に排他的です。 明示的な暗号化を実行するには 1 つのみが必要です。
範囲インデックスをクエリするには、 マッチ式 または 集計式 を暗号化します。
queryType が "範囲" で、アルゴリズムが "範囲" の場合にのみサポートされます。@note: 範囲アルゴリズムは実験的なもののみです。一般的な使用を意図したものではありません。重大な変更が発生する可能性があります。
@ param [ ハッシュ ] オプション
186 187 188 |
# ファイル 'lib/mongo/client_encryption.rb' 行 186 デフォルト encryption_式(式, = {}) @encrypter.encryption_式(式, ) end |
#get_key(id) ⇒ BSON::Document | nil
指定された ID を持つ単一のキーを検索します。
227 228 229 |
# ファイル 'lib/mongo/client_encryption.rb' 行 227 デフォルト get_key(id) @encrypter.get_key(id) end |
#get_key_by_alt_name(key_alt_name) ⇒ BSON::Document | nil
指定された key_alt_name を持つキーヴォールト コレクション内のキーを返します。
237 238 239 |
# ファイル 'lib/mongo/client_encryption.rb' 行 237 デフォルト get_key_by_alt_name(key_alt_name) @encrypter.get_key_by_alt_name(key_alt_name) end |
#get_keys = Collection::Viewとも呼ばれます:
キーヴォールト コレクション内のすべてのキーを返します。
244 245 246 |
# ファイル 'lib/mongo/client_encryption.rb' 行 244 デフォルト get_keys @encrypter.get_keys end |
#remove_key_alt_name(id, key_alt_name) ⇒ BSON::Document | nil
指定された ID を持つキーヴォールトコレクション内のキーから key_alt_name を削除します。
256 257 258 |
# ファイル 'lib/mongo/client_encryption.rb' 行 256 デフォルト delete_key_alt_name(id, key_alt_name) @encrypter.delete_key_alt_name(id, key_alt_name) end |
# brewp_many_data_key (フィルター、opts = {}) = Crypt::RewriteManyDataKeyResult
複数のデータキーを復号化し、新しいマスター_キーで、または新しいマスター_キーでそれらを(再)暗号化します。新しいマスター_キーが指定されていない場合は、現在のマスター_キーで(再)暗号化します。
271 272 273 |
# ファイル 'lib/mongo/client_encryption.rb' 行 271 デフォルト rewrap_many_data_key(フィルター, ops = {}) @encrypter.rewrap_many_data_key(フィルター, ops) end |