Clase: Mongo::Crypt::EncryptionIO Privado
- Hereda:
-
Objeto
- Objeto
- Mongo::Crypt::EncryptionIO
- Definido en:
- lib/mongo/crypt/encryption_io.rb
Overview
Esta clase forma parte de una API privada. Evita usar esta clase si es posible, ya que puede ser eliminada o modificada en el futuro.
Una clase que implementa métodos de E/S entre el controlador y el servidor MongoDB o mongocryptd.
Resumen de constantes colapsar
- SOCKET_TIMEOUT =
Esta constante es parte de una API privada. Deberías evitar usar esta constante si es posible, ya que podría ser retirada o cambiada en el futuro.
Tiempo de espera utilizado para la conexión del socket TLS, lectura y escritura. No hay un tiempo de espera específico escrito en la especificación. Consulta SPEC-1394 para obtener una discusión y actualizaciones sobre cuál debería ser este tiempo de espera.
10
Resumen del método de instancia colapsar
-
#add_key_alt_name(id, key_alt_name, timeout_ms: nil) ⇒ objeto
privado
Agrega un key_alt_name al arreglo key_alt_names del documento clave en la Colección de Bóvedas de Llaves con el id proporcionado.
-
#collection_info(db_name, filter, timeout_ms: nil)⇒ Hash
privado
Obtener información de la colección para una colección que coincida con el filtro proporcionado.
-
#delete_key(id, timeout_ms: nil) ⇒ Objeto
privado
Elimina el documento clave con el ID dado de la Colección de Bóvedas de Llaves.
-
#feed_kms(kms_context, tls_options, timeout_ms: nil) ⇒ Object
privado
Obtenga información acerca de la llave de cifrado KMS remota y aliméntela al objeto KmsContext.
-
#find_keys(filtro, timeout_ms: nil) ⇒ arreglo<BSON::Document>
privado
Query for keys in the key vault collection using the provided filtro.
-
#get_key(id, timeout_ms: nil) ⇒ objeto
privado
Encuentra un único documento clave con el id proporcionado.
-
#get_key_by_alt_name(key_alt_name, timeout_ms: nil) ⇒ Objeto
privado
Devuelve un documento clave en la Colección de Bóvedas de Llaves con el nombre alternativo de clave dado.
-
#get_keys(timeout_ms: nil) ⇒ objeto
privado
Encuentra todos los documentos en la Colección de Bóvedas de Llaves.
-
#initialize(key_vault_namespace:, key_vault_client:, metadata_client:, client: nil, mongocryptd_client: nil, mongocryptd_options: {}) ⇒ EncryptionIO
constructor
privado
Crea un nuevo objeto EncryptionIO con información sobre cómo conectarse al key vault.
-
#insert_data_key(documento, timeout_ms: nil) ⇒ Mongo::operación::Insert::Result
privado
Inserte un documento en la Colección de Bóvedas de Llaves.
-
#mark_command(cmd, timeout_ms: nil) ⇒ Hash
privado
Envía el comando a mongocryptd para que se marque con marcas de intención de cifrar.
-
#remove_key_alt_name(id, key_alt_name, timeout_ms: nil) ⇒ Object
privado
Remueve un key_alt_name del arreglo key_alt_names del documento clave en la Colección de Bóvedas de Llaves con el ID dado.
-
#update_data_keys(updates, timeout_ms: nil) ⇒ BulkWrite::Result
privado
Aplicar las solicitudes dadas a la Colección de Bóvedas de Llaves utilizando escritura masiva.
Detalles del Constructor
#initialize(key_vault_namespace:, key_vault_client:, metadata_client:, client: nil, mongocryptd_client: nil, mongocryptd_options: {}) ⇒ EncryptionIO
Este método es parte de una API privada. Se debe evitar el uso de este método si es posible, ya que podría eliminarse o modificarse en el futuro.
Cuando se utiliza para el cifrado automático, se requieren todos los argumentos. Cuando se utiliza para cifrado explícito, solo se requieren los argumentos key_vault_namespace y key_vault_client.
Esta clase espera que las opciones key_vault_client y key_vault_namespace no sean nil y estén en el formato correcto.
Crea un nuevo objeto EncryptionIO con información sobre cómo conectarse al key vault.
54 55 56 57 58 59 60 61 62 63 64 65 66 |
# Archivo 'lib/mongo/crypt/encryption_io.rb', línea 54 def inicializar( key_vault_namespace:, key_vault_client:, metadata_client:, cliente: nulo, mongocryptd_client: nulo, mongocryptd_options: {} ) validate_key_vault_client!(key_vault_client) validate_key_vault_namespace!(key_vault_namespace) @client = Cliente @mongocryptd_client = mongocryptd_client @key_vault_db_name, @key_vault_collection_name = key_vault_namespace.división('.') @key_vault_client = key_vault_client @metadata_client = @options = end |
Detalles del método de instancia
#add_key_alt_name(id, key_alt_name, timeout_ms: nil) ⇒ Objeto
Este método es parte de una API privada. Se debe evitar el uso de este método si es posible, ya que podría eliminarse o modificarse en el futuro.
Agrega un key_alt_name al arreglo key_alt_names del documento clave en la Colección de Bóvedas de Llaves con el id proporcionado.
181 182 183 184 185 186 187 |
# Archivo 'lib/mongo/crypt/encryption_io.rb', línea 181 def add_key_alt_name(ID, key_alt_name, tiempo_de_espera_ms: nulo) key_vault_collection.find_one_and_update( { _id: ID }, { '$addToSet' => { keyAltNames: key_alt_name } }, tiempo_de_espera_ms: timeout_ms ) end |
#collection_info(db_name, filtro, timeout_ms: nil) ⇒ Hash
Este método es parte de una API privada. Se debe evitar el uso de este método si es posible, ya que podría eliminarse o modificarse en el futuro.
Obtén información de la colección para una colección que coincida con el filtro proporcionado
101 102 103 104 105 106 107 108 109 110 111 112 |
# Archivo 'lib/mongo/crypt/encryption_io.rb', línea 101 def collection_info(db_name, filtro, tiempo_de_espera_ms: nulo) a menos que @metadata_client propagar ArgumentError, 'collection_info requiere que metadata_client se haya pasado al constructor, pero no se hizo' end @metadata_client .Usar(db_name) .database .list_collections(filtro: filtro, deserializar_como_bson: true, tiempo_de_espera_ms: timeout_ms) .primero end |
#delete_key(id, timeout_ms: nil) ⇒ Objeto
Este método es parte de una API privada. Se debe evitar el uso de este método si es posible, ya que podría eliminarse o modificarse en el futuro.
Elimina el documento clave con el ID dado de la Colección de Bóvedas de Llaves.
191 192 193 |
# Archivo 'lib/mongo/crypt/encryption_io.rb', línea 191 def delete_key(ID, tiempo_de_espera_ms: nulo) key_vault_collection.delete_one(_id: ID, tiempo_de_espera_ms: timeout_ms) end |
#feed_kms(kms_context, tls_options, timeout_ms: nil) ⇒ Objeto
Este método es parte de una API privada. Se debe evitar el uso de este método si es posible, ya que podría eliminarse o modificarse en el futuro.
Obtenga información sobre la llave de cifrado remota de KMS y cárguela en el objeto KmsContext
159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 |
# Archivo 'lib/mongo/crypt/encryption_io.rb', línea 159 def alimentación_kms(kms_context, , tiempo_de_espera_ms: nulo) con_ssl_socket(kms_context.endpoint, ) hacer |ssl_socket| Tiempo de espera.tiempo de espera(timeout_ms || SOCKET_TIMEOUT, Error::SocketTimeoutError, 'Tiempo de espera agotado para la operación de escritura en el Socket') hacer ssl_socket.syswrite(kms_context.) end bytes_needed = kms_context.bytes_needed mientras bytes_needed > 0 bytes = Tiempo de espera.tiempo de espera(timeout_ms || SOCKET_TIMEOUT, Error::SocketTimeoutError, 'Tiempo de espera agotado para la operación de lectura de socket') hacer ssl_socket.lectura de sistema(bytes_needed) end kms_context.alimentación(bytes) bytes_needed = kms_context.bytes_needed end end end |
#find_keys(filtro, timeout_ms: nil) ⇒ Array<BSON::Document>
Este método es parte de una API privada. Se debe evitar el uso de este método si es posible, ya que podría eliminarse o modificarse en el futuro.
query for keys in the Colección de Bóvedas de Llaves using the filtro proporcionado.
77 78 79 |
# Archivo 'lib/mongo/crypt/encryption_io.rb', línea 77 def encontrar_claves(filtro, tiempo_de_espera_ms: nulo) key_vault_collection.buscar(filtro, tiempo_de_espera_ms: timeout_ms).to_a end |
#get_key(id, timeout_ms: nil) ⇒ objeto
Este método es parte de una API privada. Se debe evitar el uso de este método si es posible, ya que podría eliminarse o modificarse en el futuro.
Encuentra un único documento clave con el id proporcionado.
196 197 198 |
# Archivo 'lib/mongo/crypt/encryption_io.rb', línea 196 def obtener_clave(ID, tiempo_de_espera_ms: nulo) key_vault_collection.buscar(_id: ID, tiempo_de_espera_ms: timeout_ms).primero end |
#get_key_by_alt_name(key_alt_name, timeout_ms: nil) ⇒ Objeto
Este método es parte de una API privada. Se debe evitar el uso de este método si es posible, ya que podría eliminarse o modificarse en el futuro.
Devuelve un documento clave en la Colección de Bóvedas de Llaves con el nombre alternativo de clave dado.
202 203 204 |
# Archivo 'lib/mongo/crypt/encryption_io.rb', línea 202 def get_key_by_alt_name(key_alt_name, tiempo_de_espera_ms: nulo) key_vault_collection.buscar(keyAltNames: key_alt_name, tiempo_de_espera_ms: timeout_ms).primero end |
#get_keys(timeout_ms: nil) ⇒ Objeto
Este método es parte de una API privada. Se debe evitar el uso de este método si es posible, ya que podría eliminarse o modificarse en el futuro.
Encuentra todos los documentos en la Colección de Bóvedas de Llaves.
207 208 209 |
# Archivo 'lib/mongo/crypt/encryption_io.rb', línea 207 def get_keys(tiempo_de_espera_ms: nulo) key_vault_collection.buscar(nulo, tiempo_de_espera_ms: timeout_ms) end |
#insertar_dato_clave(documento, timeout_ms: nil) ⇒ Mongo::Operación::Insertar::Resultado
Este método es parte de una API privada. Se debe evitar el uso de este método si es posible, ya que podría eliminarse o modificarse en el futuro.
Insertar un documento en la Colección de Bóvedas de Llaves
89 90 91 |
# Archivo 'lib/mongo/crypt/encryption_io.rb', línea 89 def insert_data_key(Documento, tiempo_de_espera_ms: nulo) key_vault_collection.insert_one(Documento, tiempo_de_espera_ms: timeout_ms) end |
#mark_command(cmd, timeout_ms: nil) ⇒ Hash
Este método es parte de una API privada. Se debe evitar el uso de este método si es posible, ya que podría eliminarse o modificarse en el futuro.
Envía el comando a mongocryptd para que se marque con las marcas de intención de cifrado
122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 |
# Archivo 'lib/mongo/crypt/encryption_io.rb', línea 122 def marcar_comando(cmd, tiempo_de_espera_ms: nulo) a menos que @mongocryptd_client propagar ArgumentError, 'mark_command requiere que mongocryptd_client haya sido pasado al constructor, pero no lo fue' end # Asegúrese de que la respuesta de mongocryptd se deserialice con { mode: :bson } # para evitar perder información de tipo en los comandos = { execution_options: { deserializar_como_bson: true }, tiempo_de_espera_ms: timeout_ms } begin Respuesta = @mongocryptd_client.database.Comando(cmd, ) rescate Error::NoServerAvailable => e propagar e si @options[:mongocryptd_bypass_spawn] spawn_mongocryptd Respuesta = @mongocryptd_client.database.Comando(cmd, ) end Respuesta.primero end |
#remove_key_alt_name(id, key_alt_name, timeout_ms: nil) ⇒ Object
Este método es parte de una API privada. Se debe evitar el uso de este método si es posible, ya que podría eliminarse o modificarse en el futuro.
Remueve un key_alt_name del arreglo key_alt_names del documento clave en la Colección de Bóvedas de Llaves con el ID dado.
213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 |
# Archivo 'lib/mongo/crypt/encryption_io.rb', línea 213 def eliminar_nombre_alternativo_de_clave(ID, key_alt_name, tiempo_de_espera_ms: nulo) key_vault_collection.find_one_and_update( { _id: ID }, [ { '$set' => { keyAltNames: { '$cond' => [ { '$eq' => [ '$keyAltNames', [ key_alt_name ] ] }, '$$REMOVE', { '$filter' => { entrada: '$keyAltNames', cond: { '$ne' => [ '$$esto', key_alt_name ] } } } ] } } } ], tiempo_de_espera_ms: timeout_ms ) end |
#update_data_keys(updates, timeout_ms: nil) ⇒ BulkWrite::Result
Este método es parte de una API privada. Se debe evitar el uso de este método si es posible, ya que podría eliminarse o modificarse en el futuro.
Aplicar las solicitudes dadas a la Colección de Bóvedas de Llaves utilizando escritura masiva.
243 244 245 |
# Archivo 'lib/mongo/crypt/encryption_io.rb', línea 243 def update_data_keys(updates, tiempo_de_espera_ms: nulo) key_vault_collection.bulk_write(updates, tiempo_de_espera_ms: timeout_ms) end |