クラス: Mongo::Crypt::EncryptionIO Private
- 継承:
-
オブジェクト
- オブジェクト
- Mongo::Crypt::EncryptionIO
- 定義:
- lib/mongo/crypt/encryption_io.rb
Overview
このクラスは、プライベート API の一部です。 このクラスは将来削除または変更される可能性があるため、可能な限り使用しないでください。
ドライバーと MongoDB サーバーまたは mongocryptd との間で I/O メソッドを実装するクラス。
定数の概要の削減
- SOCKET_TIME =OUT
この定数は、プライベート API の一部です。 この定数は将来削除または変更される可能性があるため、可能な限り使用しないでください。
TLS ソケット接続、読み取り、書込みに使用されるタイムアウト。 仕様には、具体的なタイムアウトは記載されていません。 このタイムアウトの値に関するディスカッションとアップデートについては、 Spec- 1394を参照してください。
10
インスタンス メソッドの概要を折りたたむ
-
#add_key_alt_name (ID, key_alt_name, timeout_ms: nil) = オブジェクト
private
指定された ID を持つキーヴォールトコレクション内のキードキュメントの key_alt_names 配列に key_alt_name を追加します。
-
# collection_info (db_name, filter, timeout_ms: nil) = ハッシュ
private
指定されたフィルターに一致するコレクションのコレクション情報を取得します。
-
# delete_key(ID、 timeout_ms: nil) = オブジェクト
private
指定された ID を持つキー ドキュメントをキーヴォールト コレクションから削除します。
-
#フィード_コマンド( kms_context, tls_options, timeout_ms: nil) = オブジェクト
private
リモート KMS 暗号化のキーに関する情報を取得し、それを KmsContext オブジェクトに提供します。
-
# find_keys(フィルター、timeout_ms: nil)==Array ====================================================================================<BSON::Document>
private
指定されたフィルターを使用して、キーヴォールト コレクション内のキーをクエリします。
-
# get_key (ID、 timeout_ms: nil) = オブジェクト
private
指定された ID を持つ単一のキー ドキュメントを検索します。
-
#get_key_by_alt_name(key_alt_name、timeout_ms: nil)= オブジェクト
private
指定された key_alt_name を持つキーヴォールトコレクション内のキー ドキュメントを返します。
-
get_keys(timeout_ms: nil)= オブジェクト
private
キーヴォールト コレクション内のすべてのドキュメントを検索します。
-
#初期化(クライアント: nil、mongocryptd_client: nil、key_vault_namespace:、key_vault_client:、metadata_client:、mongocryptd_options: {}) = 暗号化 IO
コンストラクター
private
キーヴォールトへの接続方法に関する情報を含む新しい EncryptionIO オブジェクトを作成します。
-
# insert_data_key(ドキュメント、timeout_ms: nil)= Mongo::Operation::Insert::Result
private
ドキュメントをキーヴォールト コレクションに挿入します。
-
# target_command (cmd、timeout_ms: nil) = ハッシュ
private
コマンドを mongocryptd に送信し、Intent-to-encrypt マークでマークします。
-
# delete_key_alt_name(ID、key_alt_name、timeout_ms: nil)= オブジェクト
private
指定された ID を持つキーヴォールトコレクション内のキードキュメントの key_alt_names 配列から key_alt_name を削除します。
-
#update_data_keys(updates, timeout_ms: nil) ⇒ BulkWrite::Result
private
一括書き込みを使用して、指定されたリクエストをキーヴォールト コレクションに適用します。
コンストラクターの詳細
#初期化(クライアント: nil、mongocryptd_client: nil、key_vault_namespace:、key_vault_client:、metadata_client:、mongocryptd_options: {}) =暗号化IO
このメソッドは、プライベート API の一部です。 このメソッドは将来削除または変更される可能性があるため、可能な限り使用しないでください。
自動暗号化に使用する場合、すべての引数が必要です。 明示的な暗号化に使用する場合、key_vault_namespace と key_vault_client 引数のみが必要です。
このクラスでは、key_vault_client と key_vault_namespace オプションが nil ではなく、正しい形式であることが想定されています。
キーヴォールトへの接続方法に関する情報を含む新しい EncryptionIO オブジェクトを作成します。
57 58 59 60 61 62 63 64 65 66 67 68 69 70 |
# ファイル 'lib/mongo/crypt/encryption_io.rb' の場合、57 行 デフォルト 初期化( クライアント: nil, mongocryptd_client: nil, key_vault_namespace:, key_vault_client:, metadata_client:, mongocryptd_options: {} ) validate_key_vault_client!(key_vault_client) validate_key_vault_namespace!(key_vault_namespace) @client = クライアント @mongocryptd_client = mongocryptd_client @key_vault_db_name, @key_vault_collection_name = key_vault_namespace.分裂('.') @key_vault_client = key_vault_client @metadata_client = @options = end |
インスタンス メソッドの詳細
#add_key_alt_name (ID, key_alt_name, timeout_ms: nil) = オブジェクト
このメソッドは、プライベート API の一部です。 このメソッドは将来削除または変更される可能性があるため、可能な限り使用しないでください。
指定された ID を持つキーヴォールトコレクション内のキードキュメントの key_alt_names 配列に key_alt_name を追加します。
185 186 187 188 189 190 191 |
# ファイル 'lib/mongo/crypt/encryption_io.rb' の場合、185 行 デフォルト add_key_alt_name(id, key_alt_name, timeout_ms: nil) key_vault_collection.find_one_and_update( { _id: id }, { '$addToSet' => { keyAltNames: key_alt_name } }, timeout_ms: timeout_ms ) end |
# collection_info (db_name, filter, timeout_ms: nil) = ハッシュ
このメソッドは、プライベート API の一部です。 このメソッドは将来削除または変更される可能性があるため、可能な限り使用しないでください。
指定されたフィルターに一致するコレクションのコレクション情報を取得する
105 106 107 108 109 110 111 112 113 114 115 |
# ファイル 'lib/mongo/crypt/encryption_io.rb' の場合、105 行 デフォルト collection_info(db_name, フィルター, timeout_ms: nil) ただし、 @metadata_client 発生 ArgumentError, ' collection_info では metadata_client がコンストラクターに渡されている必要がありますが、 end @metadata_client .使用(db_name) .database .list_collections(フィルター: フィルター, deserialize_as_bson: true, timeout_ms: timeout_ms) .最初に end |
# delete_key(ID、 timeout_ms: nil) = オブジェクト
このメソッドは、プライベート API の一部です。 このメソッドは将来削除または変更される可能性があるため、可能な限り使用しないでください。
指定された ID を持つキー ドキュメントをキーヴォールト コレクションから削除します。
195 196 197 |
# ファイル 'lib/mongo/crypt/encryption_io.rb' の場合、195 行 デフォルト delete_key(id, timeout_ms: nil) key_vault_collection.delete_one(_id: id, timeout_ms: timeout_ms) end |
#フィード_コマンド( kms_context, tls_options, timeout_ms: nil) = オブジェクト
このメソッドは、プライベート API の一部です。 このメソッドは将来削除または変更される可能性があるため、可能な限り使用しないでください。
リモート KMS 暗号化のキーに関する情報を取得し、それを KmsContext オブジェクトに提供します
161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 |
# ファイル 'lib/mongo/crypt/encryption_io.rb' の場合、161 行 デフォルト feature_ kms(kms_context, , timeout_ms: nil) with_ssl_socket(kms_context.エンドポイント, ) 行う |ssl_socket| タイムアウト.タイムアウト(timeout_ms || SOCKET_TIMEOUT, エラー::SocketTimeoutError, 'ソケット書込み (write) 操作がタイムアウトしました' ) 行う ssl_socket.syswrite(kms_context.) end bytes_needed = kms_context.bytes_needed 一方 bytes_needed > 0 行う バイト = タイムアウト.タイムアウト(timeout_ms || SOCKET_TIMEOUT, エラー::SocketTimeoutError, 'ソケット読み取り操作がタイムアウトしました' ) 行う ssl_socket.sysread(bytes_needed) end kms_context.フィード(バイト) bytes_needed = kms_context.bytes_needed end end end |
# find_keys(フィルター、timeout_ms: nil)==Array ====================================================================================<BSON::Document>
このメソッドは、プライベート API の一部です。 このメソッドは将来削除または変更される可能性があるため、可能な限り使用しないでください。
提供されたフィルターを使用して、キーヴォールトコレクション内のキーをクエリする
81 82 83 |
# ファイル 'lib/mongo/crypt/encryption_io.rb' の場合、81 行 デフォルト find_keys(フィルター, timeout_ms: nil) key_vault_collection.find(フィルター, timeout_ms: timeout_ms).to_a end |
# get_key (ID、 timeout_ms: nil) = オブジェクト
このメソッドは、プライベート API の一部です。 このメソッドは将来削除または変更される可能性があるため、可能な限り使用しないでください。
指定された ID を持つ単一のキー ドキュメントを検索します。
200 201 202 |
# ファイル 'lib/mongo/crypt/encryption_io.rb' の場合、200 行 デフォルト get_key(id, timeout_ms: nil) key_vault_collection.find(_id: id, timeout_ms: timeout_ms).最初に end |
#get_key_by_alt_name(key_alt_name、timeout_ms: nil)= オブジェクト
このメソッドは、プライベート API の一部です。 このメソッドは将来削除または変更される可能性があるため、可能な限り使用しないでください。
指定された key_alt_name を持つキーヴォールトコレクション内のキー ドキュメントを返します。
206 207 208 |
# ファイル 'lib/mongo/crypt/encryption_io.rb' の場合、206 行 デフォルト get_key_by_alt_name(key_alt_name, timeout_ms: nil) key_vault_collection.find(keyAltNames: key_alt_name, timeout_ms: timeout_ms).最初に end |
get_keys(timeout_ms: nil)= オブジェクト
このメソッドは、プライベート API の一部です。 このメソッドは将来削除または変更される可能性があるため、可能な限り使用しないでください。
キーヴォールト コレクション内のすべてのドキュメントを検索します。
211 212 213 |
# ファイル 'lib/mongo/crypt/encryption_io.rb' の場合、211 行 デフォルト get_keys(timeout_ms: nil) key_vault_collection.find(nil, timeout_ms: timeout_ms) end |
# insert_data_key(ドキュメント、timeout_ms: nil)= Mongo::Operation::Insert::Result
このメソッドは、プライベート API の一部です。 このメソッドは将来削除または変更される可能性があるため、可能な限り使用しないでください。
キーヴォールト コレクションへのドキュメントの挿入
93 94 95 |
# ファイル 'lib/mongo/crypt/encryption_io.rb' の場合、93 行 デフォルト insert_data_key(ドキュメント, timeout_ms: nil) key_vault_collection.insert_one(ドキュメント, timeout_ms: timeout_ms) end |
# target_command (cmd、timeout_ms: nil) = ハッシュ
このメソッドは、プライベート API の一部です。 このメソッドは将来削除または変更される可能性があるため、可能な限り使用しないでください。
mongocryptd に コマンドを送信し、Intent-to-encrypt マークでマークします
125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 |
# ファイル 'lib/mongo/crypt/encryption_io.rb' の場合、125 行 デフォルト map_command(cmd, timeout_ms: nil) ただし、 @mongocryptd_client 発生 ArgumentError, map_commandでは mongocryptd_client がコンストラクターに渡されている必要がありますが、その必要はありませんでした。 end # mongocryptd からの応答が { Mode: :bson } で逆直列化されていることを確認する コマンド内のタイプ情報が喪失しないようにするための # = { execution_options: { deserialize_as_bson: true }, timeout_ms: timeout_ms } begin 応答 = @mongocryptd_client.database.コマンド(cmd, ) ヘルプ エラー::NoServerAavailable => e 発生 e 場合 @options[:mongocryptd_bypass_spwn] spawn_mongocryptd 応答 = @mongocryptd_client.database.コマンド(cmd, ) end return 応答.最初に end |
# delete_key_alt_name(ID、key_alt_name、timeout_ms: nil)= オブジェクト
このメソッドは、プライベート API の一部です。 このメソッドは将来削除または変更される可能性があるため、可能な限り使用しないでください。
指定された ID を持つキーヴォールトコレクション内のキードキュメントの key_alt_names 配列から key_alt_name を削除します。
217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 |
# ファイル 'lib/mongo/crypt/encryption_io.rb' の場合、217 行 デフォルト delete_key_alt_name(id, key_alt_name, timeout_ms: nil) key_vault_collection.find_one_and_update( { _id: id }, [ { '$set' => { keyAltNames: { ' $cond ' => [ { '$eq' => [ ' $keyAltNames ', [ key_alt_name ] ] }, '$$REMOVE', { ' $filter ' => { input: ' $keyAltNames ', 条件: { '$ne' => [ 「 $$This 」, key_alt_name ] } } } ] } } } ], timeout_ms: timeout_ms ) end |
#update_data_keys(updates, timeout_ms: nil) ⇒ BulkWrite::Result
このメソッドは、プライベート API の一部です。 このメソッドは将来削除または変更される可能性があるため、可能な限り使用しないでください。
一括書き込みを使用して、指定されたリクエストをキーヴォールト コレクションに適用します。
247 248 249 |
# ファイル 'lib/mongo/crypt/encryption_io.rb' の場合、247 行 デフォルト update_data_keys(updates, timeout_ms: nil) key_vault_collection.bulk_write(updates, timeout_ms: timeout_ms) end |