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. Debe evitar usarla siempre que sea posible, ya que podría eliminarse o modificarse en el futuro.
Una clase que implementa métodos de E/S entre el controlador y el servidor MongoDB o mongocryptd.
Colapso delresumen constante
- TIEMPO DE ESPERA DEL SOCKET =
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
Colapso del resumen del método de instancia
-
#add_key_alt_name(id, key_alt_name, timeout_ms: nulo) ⇒ Objeto
privada
Agrega un key_alt_name a la matriz key_alt_names del documento clave en la colección de bóveda de claves con la identificación dada.
-
#collection_info(nombre_base_datos, filtro, tiempo_de_espera_ms: nulo) ⇒ Hash
privada
Obtenga información de una colección que coincida con el filtro proporcionado.
-
#delete_key(id, timeout_ms: nulo) ⇒ Objeto
privada
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
privada
Obtenga información sobre la clave de cifrado KMS remota y envíela al objeto KmsContext.
-
#find_keys(filtro, tiempo de espera_ms: nulo) ⇒ Array<BSON::Document>
privada
Consulta de claves en la colección de almacén de claves utilizando el filtro proporcionado.
-
#get_key(id, timeout_ms: nulo) ⇒ Objeto
privada
Encuentra un solo documento clave con la identificación dada.
-
#obtener_clave_por_nombre_alt(nombre_alt_clave, tiempo_de_espera_ms: nulo) ⇒ Objeto
privada
Devuelve un documento clave en la colección de almacén de claves con el key_alt_name indicado.
-
#get_keys(tiempo de espera_ms: nulo) ⇒ Objeto
privada
Encuentra todos los documentos en la colección de bóveda de claves.
-
#inicializar(cliente: nulo, cliente_mongocryptd: nulo, espacio_de_nombres_de_bóveda_de_claves:, cliente_de_bóveda_de_claves:, cliente_de_metadatos:, opciones_de_mongocryptd: {}) ⇒ EncryptionIO
constructor
privada
Crea un nuevo objeto EncryptionIO con información sobre cómo conectarse al almacén de claves.
-
#insert_data_key(documento, timeout_ms: nil) ⇒ Mongo::operación::Insert::Result
privada
Insertar un documento en la colección de bóveda de claves.
-
#mark_command(cmd, timeout_ms: nil) ⇒ Hash
privada
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: nulo) ⇒ Objeto
privada
Elimina un key_alt_name de la matriz key_alt_names del documento clave en la colección de bóveda de claves con la identificación dada.
-
#update_data_keys(updates, timeout_ms: nil) ⇒ BulkWrite::Result
privada
Aplicar las solicitudes dadas a la colección de almacén de claves mediante escritura masiva.
Detalles del constructor
#inicializar(cliente: nulo, cliente_mongocryptd: nulo, espacio_de_nombres_de_bóveda_de_claves:, cliente_de_bóveda_de_claves:, cliente_de_metadatos:, opciones_de_mongocryptd: {}) ⇒ 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.
Para el cifrado automático, se requieren todos los argumentos. Para el 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 nulas y estén en el formato correcto.
Crea un nuevo objeto EncryptionIO con información sobre cómo conectarse al almacén de claves.
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:, cliente de bóveda de claves:, metadata_client:, opciones de mongocryptd: {} ) validate_key_vault_client!(cliente de bóveda de claves) validate_key_vault_namespace!(key_vault_namespace) @cliente = Cliente @mongocryptd_client = mongocryptd_client @nombre_de_base_de_datos_de_key_vault, @nombre_de_colección_de_key_vault = key_vault_namespace.división('.') @key_vault_client = cliente de bóveda de claves @metadata_client = @opciones = end |
Detalles del método de instancia
#add_key_alt_name(id, key_alt_name, timeout_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.
Agrega un key_alt_name a la matriz key_alt_names del documento clave en la colección de bóveda de claves con la identificación dada.
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) colección de bóveda de claves.find_one_and_update( { _id: ID. }, { '$addToSet' => { keyAltNames: key_alt_name } }, tiempo de espera_ms: tiempo de espera_ms ) end |
#collection_info(nombre_base_datos, filtro, tiempo_de_espera_ms: nulo) ⇒ 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.
Obtener información de 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 información de la colección(nombre_base_datos, filtro, tiempo de espera_ms: nulo) a no ser que @metadata_client propagar ArgumentError, 'collection_info requiere que metadata_client se haya pasado al constructor, pero no fue así' end @metadata_client .uso(nombre_base_datos) .database .listas_colecciones(filtrar: filtro, deserializar_como_bson: true, tiempo de espera_ms: tiempo de espera_ms) .primera end |
#delete_key(id, timeout_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.
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 tecla_de_eliminar(ID., tiempo de espera_ms: nulo) colección de bóveda de claves.delete_one(_id: ID., tiempo de espera_ms: tiempo de espera_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_socket_ssl(kms_context.punto final, ) hacer |ssl_socket| Se acabó el tiempo.tiempo de espera(tiempo de espera_ms || TIEMPO DE ESPERA DEL SOCKET, Error::Error de tiempo de espera del socket, 'Seagotó el tiempo de operación de escritura del socket' ) hacer ssl_socket.escritura del sistema(kms_context.) end bytes_necesarios = kms_context.bytes_necesarios mientras bytes_necesarios > 0 hacer bytes = Se acabó el tiempo.tiempo de espera(tiempo de espera_ms || TIEMPO DE ESPERA DEL SOCKET, Error::Error de tiempo de espera del socket, 'Seagotó el tiempo de operación de lectura del socket' ) hacer ssl_socket.lectura del sistema(bytes_necesarios) end kms_context.alimentación(bytes) bytes_necesarios = kms_context.bytes_necesarios end end end |
#find_keys(filtro, tiempo de espera_ms: nulo) ⇒ 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.
Consulta de claves en la colección de almacén de claves utilizando el filtro proporcionado
81 82 83 |
# Archivo 'lib/mongo/crypt/encryption_io.rb', línea 81 def buscar_claves(filtro, tiempo de espera_ms: nulo) colección de bóveda de claves.buscar(filtro, tiempo de espera_ms: tiempo de espera_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) colección de bóveda de claves.buscar(_id: ID., tiempo de espera_ms: tiempo de espera_ms).primera end |
#obtener_clave_por_nombre_alt(nombre_alt_clave, 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.
Devuelve un documento clave en la colección de almacén de claves con el key_alt_name indicado.
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) colección de bóveda de claves.buscar(keyAltNames: key_alt_name, tiempo de espera_ms: tiempo de espera_ms).primera 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óveda de claves.
211 212 213 |
# Archivo 'lib/mongo/crypt/encryption_io.rb', línea 211 def get_keys(tiempo de espera_ms: nulo) colección de bóveda de claves.buscar(nulo, tiempo de espera_ms: tiempo de espera_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) colección de bóveda de claves.insert_one(Documento, tiempo de espera_ms: tiempo de espera_ms) end |
#mark_command(cmd, tiempo de espera_ms: nulo) ⇒ 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 comando_marcar(cmd, tiempo de espera_ms: nulo) a no ser que @mongocryptd_client propagar ArgumentError, 'mark_command requiere que mongocryptd_client se haya pasado al constructor, pero no fue así' end # Asegúrese de que la respuesta de mongocryptd esté deserializada con { mode: :bson } # para evitar perder información de tipo en los comandos = { opciones_de_ejecución: { deserializar_como_bson: true }, tiempo de espera_ms: tiempo de espera_ms } begin respuesta = @mongocryptd_client.database.Comando(cmd, ) rescate Error::No hay servidor disponible => e propagar e Si @opciones[:mongocryptd_bypass_spawn] spawn_mongocryptd respuesta = @mongocryptd_client.database.Comando(cmd, ) end return respuesta.primera end |
#remove_key_alt_name(id, key_alt_name, timeout_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.
Elimina un key_alt_name de la matriz key_alt_names del documento clave en la colección de bóveda de claves con la identificación dada.
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) colección de bóveda de claves.find_one_and_update( { _id: ID. }, [ { '$set' => { keyAltNames: { ' $cond ' => [ { '$eq' => [ ' $keyAltNames ', [ key_alt_name ] ] }, '$$REMOVE', { ' $filtro ' => { aporte: ' $keyAltNames ', cond: { '$ne' => [ ' $$esto ', key_alt_name ] } } } ] } } } ], tiempo de espera_ms: tiempo de espera_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) colección de bóveda de claves.escritura masiva(updates, tiempo de espera_ms: tiempo de espera_ms) end |