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.
Colapso delresumen constante
- SOCKET_TIMEOUT =
Esta constante forma parte de una API privada. Debe evitar usarla siempre que sea posible, ya que podría eliminarse o modificarse en el futuro.
Tiempo de espera utilizado para la conexión, lectura y escritura del socket TLS. No hay un tiempo de espera específico en la especificación. Consulte SPEC-1394 para obtener informació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: nulo) ⇒ 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 la identificación dada de la colección de bóveda de claves.
-
#feed_kms(kms_context, tls_options, timeout_ms: nulo) ⇒ Objeto
privado
Obtenga información sobre la clave de cifrado KMS remota y envíela al objeto KmsContext.
-
#find_keys(filtro, timeout_ms: nil) ⇒ arreglo<BSON::Document>
privado
Consulta de claves en la colección de almacén de claves utilizando el filtro proporcionado.
-
#get_key(id, timeout_ms: nil) ⇒ objeto
privado
Encuentra un solo documento clave con la identificación dada.
-
#obtener_clave_por_nombre_alt(nombre_alt_clave, tiempo_de_espera_ms: nulo) ⇒ Objeto
privado
Devuelve un documento clave en la Colección de Bóvedas de Llaves con el nombre alternativo de clave dado.
-
#get_keys(tiempo de espera_ms: nulo) ⇒ Objeto
privado
Encuentra todos los documentos en la Colección de Bóvedas de Llaves.
-
#inicializar(cliente: nil, mongocryptd_cliente: nil, key_vault_namespace:, key_vault_client:, metadata_client:, 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 almacén de claves mediante escritura masiva.
Detalles del constructor
#initialize(client: nil, mongocryptd_client: nil, key_vault_namespace:, key_vault_client:, metadata_client:, mongocryptd_options: {}) ⇒ EncryptionIO
Este método forma parte de una API privada. Debe evitarlo 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.
57 58 59 60 61 62 63 64 65 66 67 68 69 70 |
# Archivo 'lib/mongo/crypt/encryption_io.rb', línea 57 def inicializar( cliente: nulo, mongocryptd_client: nulo, key_vault_namespace:, key_vault_client:, metadata_client:, opciones de mongocryptd: {} ) validate_key_vault_client!(key_vault_client) validate_key_vault_namespace!(key_vault_namespace) @cliente = Cliente @mongocryptd_client = mongocryptd_client @key_vault_db_name, @nombre_de_colección_de_key_vault = 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 forma parte de una API privada. Debe evitarlo 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.
185 186 187 188 189 190 191 |
# Archivo 'lib/mongo/crypt/encryption_io.rb', línea 185 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 forma parte de una API privada. Debe evitarlo 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
105 106 107 108 109 110 111 112 113 114 115 |
# Archivo 'lib/mongo/crypt/encryption_io.rb', línea 105 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(filtrar: filtro, deserializar_como_bson: true, tiempo_de_espera_ms: timeout_ms) .primero end |
#delete_key(id, timeout_ms: nil) ⇒ Objeto
Este método forma parte de una API privada. Debe evitarlo si es posible, ya que podría eliminarse o modificarse en el futuro.
Elimina el documento clave con la identificación dada de la colección de bóveda de claves.
195 196 197 |
# Archivo 'lib/mongo/crypt/encryption_io.rb', línea 195 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(contexto_kms, opciones_tls, tiempo_de_espera_ms: nulo) ⇒ Objeto
Este método forma parte de una API privada. Debe evitarlo si es posible, ya que podría eliminarse o modificarse en el futuro.
Obtenga información sobre la clave de cifrado KMS remota y envíela al objeto KmsContext
161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 |
# Archivo 'lib/mongo/crypt/encryption_io.rb', línea 161 def feed_kms(kms_context, , tiempo_de_espera_ms: nulo) con_ssl_socket(kms_context.endpoint, ) hacer |ssl_socket| Se acabó el tiempo.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 hacer bytes = Se acabó el tiempo.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 del 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 forma parte de una API privada. Debe evitarlo 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.
81 82 83 |
# Archivo 'lib/mongo/crypt/encryption_io.rb', línea 81 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 forma parte de una API privada. Debe evitarlo si es posible, ya que podría eliminarse o modificarse en el futuro.
Encuentra un solo documento clave con la identificación dada.
200 201 202 |
# Archivo 'lib/mongo/crypt/encryption_io.rb', línea 200 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 forma parte de una API privada. Debe evitarlo 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.
206 207 208 |
# Archivo 'lib/mongo/crypt/encryption_io.rb', línea 206 def obtener_clave_por_nombre_alt(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(tiempo de espera_ms: nulo) ⇒ Objeto
Este método forma parte de una API privada. Debe evitarlo 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.
211 212 213 |
# Archivo 'lib/mongo/crypt/encryption_io.rb', línea 211 def get_keys(tiempo_de_espera_ms: nulo) key_vault_collection.buscar(nulo, tiempo_de_espera_ms: timeout_ms) end |
#insert_data_key(documento, tiempo de espera_ms: nulo) ⇒ Mongo::Operación::Insertar::Resultado
Este método forma parte de una API privada. Debe evitarlo si es posible, ya que podría eliminarse o modificarse en el futuro.
Insertar un documento en la colección de almacén de claves
93 94 95 |
# Archivo 'lib/mongo/crypt/encryption_io.rb', línea 93 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 forma parte de una API privada. Debe evitarlo si es posible, ya que podría eliminarse o modificarse en el futuro.
Envíe el comando a mongocryptd para que se marque con marcas de intención de cifrar
125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 |
# Archivo 'lib/mongo/crypt/encryption_io.rb', línea 125 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::No hay servidor disponible => e propagar e si @options[:mongocryptd_bypass_spawn] spawn_mongocryptd respuesta = @mongocryptd_client.database.Comando(cmd, ) end return respuesta.primero end |
#remove_key_alt_name(id, key_alt_name, timeout_ms: nil) ⇒ Object
Este método forma parte de una API privada. Debe evitarlo 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.
217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 |
# Archivo 'lib/mongo/crypt/encryption_io.rb', línea 217 def eliminar_tecla_alt_nombre(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' => { aporte: ' $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 forma parte de una API privada. Debe evitarlo si es posible, ya que podría eliminarse o modificarse en el futuro.
Aplicar las solicitudes dadas a la colección de almacén de claves mediante escritura masiva.
247 248 249 |
# Archivo 'lib/mongo/crypt/encryption_io.rb', línea 247 def update_data_keys(updates, tiempo_de_espera_ms: nulo) key_vault_collection.bulk_write(updates, tiempo_de_espera_ms: timeout_ms) end |