Classe: Mongo::Crypt::EncryptionIO Privado
- Herda:
-
Objeto
- Objeto
- Mongo::Crypt::EncryptionIO
- Definido em:
- build/ruby-driver-v2.19/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) ➤ Object
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) ➤ Hash
privado
Obtenha informações de collection para uma collection que corresponda ao filtro fornecido.
-
#delete_key(ID) ➤ Objeto
privado
Remove o documento chave com o ID fornecido da collection do cofre de chaves.
-
#feed_kms(kms_context, tls_options) ➤ Objeto
privado
Obtenha informações sobre a chave de encriptação do KMS remoto e insira-as no objeto KmsContext.
-
#find_keys(filter) ➤ Array<BSON::Document>
privado
Faça query de chaves na coleção de cofre de chaves usando o filtro fornecido.
-
#get_key(ID) ➤ Objeto
privado
Encontra um único documento-chave com o ID fornecido.
-
#get_key_by_alt_name(key_alt_name) ➤ Objeto
privado
Retorna um documento de chave na coleção de cofre de chave com o key_alt_name fornecido.
-
#get_keys ➤ Objeto
privado
Encontra todos os documentos na key vault collection.
-
#initialize(client: nil, mongocryptd_client: nil, key_vault_namespace:, key_vault_client:, metadata_client:, mongocryptd_options: {}) ➤ EncryptionIO
construtor
privado
Cria um novo objeto EncryptionIO com informações sobre como se conectar ao cofre de chaves.
-
#insert_data_key(document) ➤ Mongo::Operation::Insert::Result
privado
Insira um documento na coleção do cofre de chaves.
-
#marque_command(cmd) ➤ 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) ➤ Object
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) ➤ BulkWrite::Result
privado
Aplique as solicitações fornecidas à coleção de cofre de chaves usando gravação em massa.
Detalhes do construtor
#initialize(client: nil, mongocryptd_client: nil, key_vault_namespace:, key_vault_client:, metadata_client:, 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.
57 58 59 60 61 62 63 64 65 66 67 68 69 70 |
# File 'build/ruby-driver-v2.19/lib/mongo/crypt/encryption_io.rb', linha 57 def inicializar( cliente: nada, mongocryptd_client: nada, key_vault_namespace:, key_vault_client:, metadata_client:, 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) ➤ 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.
Adiciona um key_alt_name à array key_alt_names do documento de chave na coleção de cofre de chave com o ID fornecido.
163 164 165 166 167 168 |
# File 'build/ruby-driver-v2.19/lib/mongo/crypt/encryption_io.rb', linha 163 def add_key_alt_name(id, key_alt_name) key_vault_collection.find_one_and_update( { _id: id }, { '$addToSet' => { keyAltNames: key_alt_name } }, ) end |
#collection_info(db_name, filter) ➤ 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
96 97 98 99 100 101 102 |
# File 'build/ruby-driver-v2.19/lib/mongo/crypt/encryption_io.rb', linha 96 def collection_info(db_name, filtro, filtro) 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).primeiro end |
#delete_key(ID) ➤ 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 o documento chave com o ID fornecido da collection do cofre de chaves.
172 173 174 |
# File 'build/ruby-driver-v2.19/lib/mongo/crypt/encryption_io.rb', linha 172 def delete_key(id) key_vault_collection.delete_one(_id: id) end |
#feed_kms(kms_context, tls_options) ➤ 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.
Obtenha informações sobre a chave de encriptação do KMS remoto e insira-as no objeto KmsContext
139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 |
# File 'build/ruby-driver-v2.19/lib/mongo/crypt/encryption_io.rb', linha 139 def feed_kms(kms_context, ) with_ssl_socket(kms_context.endpoint, ) fazer |ssl_socket| Tempo-limite.timeout(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 fazer bytes = Tempo-limite.timeout(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) ➤ 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
78 79 80 |
# File 'build/ruby-driver-v2.19/lib/mongo/crypt/encryption_io.rb', linha 78 def find_keys(filtro, filtro) key_vault_collection.find(filtro, filtro).to_a end |
#get_key(ID) ➤ 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.
177 178 179 |
# File 'build/ruby-driver-v2.19/lib/mongo/crypt/encryption_io.rb', linha 177 def get_key(id) key_vault_collection.find(_id: id).primeiro end |
#get_key_by_alt_name(key_alt_name) ➤ 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.
183 184 185 |
# File 'build/ruby-driver-v2.19/lib/mongo/crypt/encryption_io.rb', linha 183 def get_key_by_alt_name(key_alt_name) key_vault_collection.find(keyAltNames: key_alt_name).primeiro end |
#get_keys ➤ 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.
188 189 190 |
# File 'build/ruby-driver-v2.19/lib/mongo/crypt/encryption_io.rb', linha 188 def get_keys key_vault_collection.find end |
#insert_data_key(document) ➤ 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
87 88 89 |
# File 'build/ruby-driver-v2.19/lib/mongo/crypt/encryption_io.rb', linha 87 def insert_data_key(documento) key_vault_collection.insert_one(documento) end |
#marque_command(cmd) ➤ 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
109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 |
# File 'build/ruby-driver-v2.19/lib/mongo/crypt/encryption_io.rb', linha 109 def marque_command(cmd) 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 } } 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 Método Resposta.primeiro end |
#remove_key_alt_name(ID, key_alt_name) ➤ 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 um key_alt_name da array key_alt_names do documento de chave na coleção de cofre de chaves com o ID fornecido.
194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 |
# File 'build/ruby-driver-v2.19/lib/mongo/crypt/encryption_io.rb', linha 194 def remove_key_alt_name(id, key_alt_name) 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 ] } } } ] } } } ] ) end |
#update_data_keys(updates) ➤ 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.
223 224 225 |
# File 'build/ruby-driver-v2.19/lib/mongo/crypt/encryption_io.rb', linha 223 def update_data_keys(Atualizações) key_vault_collection.bulk_write(Atualizações) end |