クラス: 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
キーヴォールト コレクション内のすべてのドキュメントを検索します。
-
#初期化(key_vault_namespace:, key_vault_client:, metadata_client:, クライアント: nil, mongocryptd_client: nil, 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
一括書き込みを使用して、指定されたリクエストをキーヴォールト コレクションに適用します。
コンストラクターの詳細
#初期化(key_vault_namespace:, key_vault_client:, metadata_client:, クライアント: nil, mongocryptd_client: nil, mongocryptd_options: {}) ⇒ 暗号化IO
このメソッドは、プライベート API の一部です。 このメソッドは将来削除または変更される可能性があるため、可能な限り使用しないでください。
自動暗号化に使用する場合、すべての引数が必要です。 明示的な暗号化に使用する場合、key_vault_namespace と key_vault_client 引数のみが必要です。
このクラスでは、key_vault_client と key_vault_namespace オプションが nil ではなく、正しい形式であることが想定されています。
キーヴォールトへの接続方法に関する情報を含む新しい EncryptionIO オブジェクトを作成します。
54 55 56 57 58 59 60 61 62 63 64 65 66 |
# ファイル 'lib/mongo/crypt/encryption_io.rb' の場合、54 行 デフォルト 初期化( key_vault_namespace:, key_vault_client:, metadata_client:, クライアント: nil, mongocryptd_client: nil, 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 を追加します。
181 182 183 184 185 186 187 |
# ファイル 'lib/mongo/crypt/encryption_io.rb' の場合、181 行 デフォルト 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 の一部です。 このメソッドは将来削除または変更される可能性があるため、可能な限り使用しないでください。
指定されたフィルターに一致するコレクションのコレクション情報を取得する
101 102 103 104 105 106 107 108 109 110 111 112 |
# ファイル 'lib/mongo/crypt/encryption_io.rb' の場合、101 行 デフォルト 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 を持つキー ドキュメントをキーヴォールト コレクションから削除します。
191 192 193 |
# ファイル 'lib/mongo/crypt/encryption_io.rb' の場合、191 行 デフォルト 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 オブジェクトに提供します
159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 |
# ファイル 'lib/mongo/crypt/encryption_io.rb' の場合、159 行 デフォルト 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 の一部です。 このメソッドは将来削除または変更される可能性があるため、可能な限り使用しないでください。
提供されたフィルターを使用して、キーヴォールトコレクション内のキーをクエリする
77 78 79 |
# ファイル 'lib/mongo/crypt/encryption_io.rb' の場合、77 行 デフォルト find_keys(フィルター, timeout_ms: nil) key_vault_collection.find(フィルター, timeout_ms: timeout_ms).to_a end |
# get_key (ID、 timeout_ms: nil) = オブジェクト
このメソッドは、プライベート API の一部です。 このメソッドは将来削除または変更される可能性があるため、可能な限り使用しないでください。
指定された ID を持つ単一のキー ドキュメントを検索します。
196 197 198 |
# ファイル 'lib/mongo/crypt/encryption_io.rb' の場合、196 行 デフォルト 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 を持つキーヴォールトコレクション内のキー ドキュメントを返します。
202 203 204 |
# ファイル 'lib/mongo/crypt/encryption_io.rb' の場合、202 行 デフォルト 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 の一部です。 このメソッドは将来削除または変更される可能性があるため、可能な限り使用しないでください。
キーヴォールト コレクション内のすべてのドキュメントを検索します。
207 208 209 |
# ファイル 'lib/mongo/crypt/encryption_io.rb' の場合、207 行 デフォルト 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 の一部です。 このメソッドは将来削除または変更される可能性があるため、可能な限り使用しないでください。
キーヴォールト コレクションへのドキュメントの挿入
89 90 91 |
# ファイル 'lib/mongo/crypt/encryption_io.rb' の場合、89 行 デフォルト 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 マークでマークします
122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 |
# ファイル 'lib/mongo/crypt/encryption_io.rb' の場合、122 行 デフォルト 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 応答.最初に end |
# delete_key_alt_name(ID、key_alt_name、timeout_ms: nil)= オブジェクト
このメソッドは、プライベート API の一部です。 このメソッドは将来削除または変更される可能性があるため、可能な限り使用しないでください。
指定された ID を持つキーヴォールトコレクション内のキードキュメントの key_alt_names 配列から key_alt_name を削除します。
213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 |
# ファイル 'lib/mongo/crypt/encryption_io.rb' の場合、213 行 デフォルト 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 の一部です。 このメソッドは将来削除または変更される可能性があるため、可能な限り使用しないでください。
一括書き込みを使用して、指定されたリクエストをキーヴォールト コレクションに適用します。
243 244 245 |
# ファイル 'lib/mongo/crypt/encryption_io.rb' の場合、243 行 デフォルト update_data_keys(updates, timeout_ms: nil) key_vault_collection.bulk_write(updates, timeout_ms: timeout_ms) end |