Classe: Mongo::Crypt::EncryptionIO Privado
- Herda:
-
Objeto
- Objeto
- Mongo::Crypt::EncryptionIO
- Definido em:
- lib/mongo/crypt/encryption_io.rb
Visão geral
Esta classe faz parte de uma API privada. Evite usar essa classe, se possível, pois ela pode ser removida ou alterada no futuro.
Uma classe que implementa métodos de E/S entre o driver e o servidor MongoDB ou mongocryptd.
Colapsode resumo constante
- SOCKET_TIMEOUT =
Essa constante faz parte de uma API privada. Você deve evitar usar essa constante, se possível, pois ela pode ser removida ou alterada no futuro.
Tempo limite usado para conexão, leitura e gravação do soquete TLS. Não há um tempo limite específico escrito nas especificações. Consulte Especificação1394 para uma discussão e atualizações sobre qual deve ser esse tempo limite.
10
Recolhimento do Resumo do método de instância
-
#add_key_alt_name(ID, key_alt_name, timeout_ms: nil) ➤ Objeto
privado
Adiciona um key_alt_name à array key_alt_names do documento de chave na coleção de cofre de chave com o ID fornecido.
-
#collection_info(db_name, filter, timeout_ms: nil) ➤ Hash
privado
Obtenha informações de collection para uma collection que corresponda ao filtro fornecido.
-
#delete_key(ID, timeout_ms: nil) ➤ Object
privado
Remove o documento chave com o ID fornecido da collection do cofre de chaves.
-
#feed_kms(kms_context, tls_options, timeout_ms: nil) ➤ Object
privado
Obtenha informações sobre a chave de encriptação do KMS remoto e insira-as no objeto KmsContext.
-
#find_keys(filter, timeout_ms: nil) ➤ Array<BSON::Document>
privado
Faça query de chaves na coleção de cofre de chaves usando o filtro fornecido.
-
#get_key(ID, timeout_ms: nil) ➤ Objeto
privado
Encontra um único documento-chave com o ID fornecido.
-
#get_key_by_alt_name(key_alt_name, timeout_ms: nil) ➤ Objeto
privado
Retorna um documento de chave na coleção de cofre de chave com o key_alt_name fornecido.
-
#get_keys(timeout_ms: nil) ➤ Objeto
privado
Encontra todos os documentos na key vault collection.
-
#initialize(key_vault_namespace:, key_vault_client:, metadata_client:, cliente: nil, mongocryptd_client: nil, mongocryptd_options: {}) ➤ EncryptionIO
construtor
privado
Cria um novo objeto EncryptionIO com informações sobre como se conectar ao cofre de chaves.
-
#insert_data_key(documento, timeout_ms: nil) ➤ Mongo::Operation::Insert::Result
privado
Insira um documento na coleção do cofre de chaves.
-
#marque_command(cmd, timeout_ms: nil) ➤ Hash
privado
Envie o comando para mongocryptd para ser marcado com marcações de intenção de criptografia.
-
#remove_key_alt_name(ID, key_alt_name, timeout_ms: nil) ➤ Objeto
privado
Remove um key_alt_name da array key_alt_names do documento de chave na coleção de cofre de chaves com o ID fornecido.
-
#update_data_keys(updates, timeout_ms: nil) ⇒ BulkWrite::Result
privado
Aplique as solicitações fornecidas à coleção de cofre de chaves usando gravação em massa.
Detalhes do construtor
#initialize(key_vault_namespace:, key_vault_client:, metadata_client:, cliente: nil, mongocryptd_client: nil, mongocryptd_options: {}) ➤ EncryptionIO
Este método faz parte de uma API privada. Evite usar esse método, se possível, pois ele pode ser removido ou alterado no futuro.
Ao ser usado para criptografia automática, todos os argumentos são necessários. Ao ser usado para criptografia explícita, somente os argumentos key_vault_namespace e key_vault_client são necessários.
Esta classe espera que as opções key_vault_client e key_vault_namespace não sejam nulas e estejam no formato correto.
Cria um novo objeto EncryptionIO com informações sobre como se conectar ao cofre de chaves.
54 55 56 57 58 59 60 61 62 63 64 65 66 |
# Arquivo 'lib/mongo/crypt/encryption_io.rb', linha 54 def inicializar( key_vault_namespace:, key_vault_client:, metadata_client:, cliente: nada, mongocryptd_client: nada, mongocryptd_options: {} ) validate_key_vault_client!(key_vault_client) validate_key_vault_namespace!(key_vault_namespace) @cliente = Cliente @mongocryptd_client = mongocryptd_client @key_vault_db_name, @key_vault_collection_name = key_vault_namespace.dividir('.') @key_vault_client = key_vault_client @metadata_client = @opções = end |
Detalhes do método de instância
#add_key_alt_name(ID, key_alt_name, timeout_ms: nil) ➤ Objeto
Este método faz parte de uma API privada. Evite usar esse método, se possível, pois ele pode ser removido ou alterado no futuro.
Adiciona um key_alt_name à array key_alt_names do documento de chave na coleção de cofre de chave com o ID fornecido.
181 182 183 184 185 186 187 |
# Arquivo 'lib/mongo/crypt/encryption_io.rb', linha 181 def add_key_alt_name(id, key_alt_name, timeout_ms: nada) 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) ➤ Hash
Este método faz parte de uma API privada. Evite usar esse método, se possível, pois ele pode ser removido ou alterado no futuro.
Obtenha informações da collection para uma collection que corresponda ao filtro fornecido
101 102 103 104 105 106 107 108 109 110 111 112 |
# Arquivo 'lib/mongo/crypt/encryption_io.rb', linha 101 def collection_info(db_name, filtro, filtro, timeout_ms: nada) a menos que @metadata_client aumentar ArgumentError, 'collection_info exige que metadata_client tenha sido passado para o construtor, mas não foi' end @metadata_client .Usar(db_name) .database .list_collections(filtro: filtro, filtro, deserialize_as_bson: true, timeout_ms: timeout_ms) .primeiro end |
#delete_key(ID, timeout_ms: nil) ➤ Object
Este método faz parte de uma API privada. Evite usar esse método, se possível, pois ele pode ser removido ou alterado no futuro.
Remove o documento chave com o ID fornecido da collection do cofre de chaves.
191 192 193 |
# Arquivo 'lib/mongo/crypt/encryption_io.rb', linha 191 def delete_key(id, timeout_ms: nada) key_vault_collection.delete_one(_id: id, timeout_ms: timeout_ms) end |
#feed_kms(kms_context, tls_options, timeout_ms: nil) ➤ Object
Este método faz parte de uma API privada. Evite usar esse método, se possível, pois ele pode ser removido ou alterado no futuro.
Obtenha informações sobre a chave de encriptação do KMS remoto e insira-as no objeto KmsContext
159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 |
# Arquivo 'lib/mongo/crypt/encryption_io.rb', linha 159 def feed_kms(kms_context, , timeout_ms: nada) with_ssl_socket(kms_context.endpoint, ) fazer |ssl_socket| Tempo-limite.timeout(timeout_ms || SOCKET_TIMEOUT, Erro::SocketTimeoutError, ' Aoperação de gravação do soquete atingiu o tempo limite') fazer ssl_socket.escrita do sistema(kms_context.) end bytes_needed = kms_context.bytes_needed enquanto bytes_needed > 0 bytes = Tempo-limite.timeout(timeout_ms || SOCKET_TIMEOUT, Erro::SocketTimeoutError, ' Aoperação de leitura do soquete atingiu o tempo limite') fazer ssl_socket.sysread(bytes_needed) end kms_context.feed(bytes) bytes_needed = kms_context.bytes_needed end end end |
#find_keys(filter, timeout_ms: nil) ➤ Array<BSON::Document>
Este método faz parte de uma API privada. Evite usar esse método, se possível, pois ele pode ser removido ou alterado no futuro.
Faça query de chaves na coleção de cofre de chaves usando o filtro fornecido
77 78 79 |
# Arquivo 'lib/mongo/crypt/encryption_io.rb', linha 77 def find_keys(filtro, filtro, timeout_ms: nada) key_vault_collection.find(filtro, filtro, timeout_ms: timeout_ms).to_a end |
#get_key(ID, timeout_ms: nil) ➤ Objeto
Este método faz parte de uma API privada. Evite usar esse método, se possível, pois ele pode ser removido ou alterado no futuro.
Encontra um único documento-chave com o ID fornecido.
196 197 198 |
# Arquivo 'lib/mongo/crypt/encryption_io.rb', linha 196 def get_key(id, timeout_ms: nada) key_vault_collection.find(_id: id, timeout_ms: timeout_ms).primeiro end |
#get_key_by_alt_name(key_alt_name, timeout_ms: nil) ➤ Objeto
Este método faz parte de uma API privada. Evite usar esse método, se possível, pois ele pode ser removido ou alterado no futuro.
Retorna um documento de chave na coleção de cofre de chave com o key_alt_name fornecido.
202 203 204 |
# Arquivo 'lib/mongo/crypt/encryption_io.rb', linha 202 def get_key_by_alt_name(key_alt_name, timeout_ms: nada) key_vault_collection.find(keyAltNames: key_alt_name, timeout_ms: timeout_ms).primeiro end |
#get_keys(timeout_ms: nil) ➤ Objeto
Este método faz parte de uma API privada. Evite usar esse método, se possível, pois ele pode ser removido ou alterado no futuro.
Encontra todos os documentos na key vault collection.
207 208 209 |
# Arquivo 'lib/mongo/crypt/encryption_io.rb', linha 207 def get_keys(timeout_ms: nada) key_vault_collection.find(nada, timeout_ms: timeout_ms) end |
#insert_data_key(documento, timeout_ms: nil) ➤ Mongo::Operation::Insert::Result
Este método faz parte de uma API privada. Evite usar esse método, se possível, pois ele pode ser removido ou alterado no futuro.
Inserir um documento na key vault collection
89 90 91 |
# Arquivo 'lib/mongo/crypt/encryption_io.rb', linha 89 def insert_data_key(documento, timeout_ms: nada) key_vault_collection.insert_one(documento, timeout_ms: timeout_ms) end |
#marque_command(cmd, timeout_ms: nil) ➤ Hash
Este método faz parte de uma API privada. Evite usar esse método, se possível, pois ele pode ser removido ou alterado no futuro.
Envie o comando para mongocryptd para ser marcado com marcações de intenção de criptografia
122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 |
# Arquivo 'lib/mongo/crypt/encryption_io.rb', linha 122 def marque_command(cmd, timeout_ms: nada) a menos que @mongocryptd_client aumentar ArgumentError, 'marque_command exige que mongocryptd_client tenha sido passado para o construtor, mas não foi' end # Certifique-se de que a resposta do mongocryptd seja desserializada com { mode: :bson } # para evitar a perda de informações de tipo em comandos = { execution_options: { deserialize_as_bson: true }, timeout_ms: timeout_ms } começar Resposta = @mongocryptd_client.database.comando(cmd, ) salvar Erro::NoServerAvailable => e aumentar e se @opções[:mongocryptd_bypass_spawn] spawn_mongocryptd Resposta = @mongocryptd_client.database.comando(cmd, ) end Resposta.primeiro end |
#remove_key_alt_name(ID, key_alt_name, timeout_ms: nil) ➤ Objeto
Este método faz parte de uma API privada. Evite usar esse método, se possível, pois ele pode ser removido ou alterado no futuro.
Remove um key_alt_name da array key_alt_names do documento de chave na coleção de cofre de chaves com o ID fornecido.
213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 |
# Arquivo 'lib/mongo/crypt/encryption_io.rb', linha 213 def remove_key_alt_name(id, key_alt_name, timeout_ms: nada) key_vault_collection.find_one_and_update( { _id: id }, [ { '$set' => { keyAltNames: { '$cond' => [ { '$eq' => [ '$keyAltNames', [ key_alt_name ] ] }, '$$REMOVE', { '$filter' => { entrada: '$keyAltNames', cond: { '$ne' => [ '$$This', key_alt_name ] } } } ] } } } ], timeout_ms: timeout_ms ) end |
#update_data_keys(updates, timeout_ms: nil) ⇒ BulkWrite::Result
Este método faz parte de uma API privada. Evite usar esse método, se possível, pois ele pode ser removido ou alterado no futuro.
Aplique as solicitações fornecidas à coleção de cofre de chaves usando gravação em massa.
243 244 245 |
# Arquivo 'lib/mongo/crypt/encryption_io.rb', linha 243 def update_data_keys(Atualizações, timeout_ms: nada) key_vault_collection.bulk_write(Atualizações, timeout_ms: timeout_ms) end |