Class: Mongo::ClientEncryption
- Hereda:
-
Objeto
- Objeto
- Mongo::ClientEncryption
- Definido en:
- lib/mongo/client_encryption.rb
Overview
ClientEncryption encapsula operaciones explícitas en una Colección de Bóvedas de Llaves que no pueden realizarse directamente en un MongoClient. Proporciona una API para encriptar y desencriptar valores explícitamente y para crear claves de datos.
Resumen del método de instancia colapsar
-
#add_key_alt_name(id, key_alt_name) ⇒ BSON::Document | nil
Agrega un key_alt_name para la clave en la Colección de Bóvedas de Llaves con el ID proporcionado.
-
#crear_clave_datos(kms_provider, options = {}) ⇒ BSON::Binary
Genera una clave de datos utilizada para cifrado/descifrado y almacena esa clave en la colección KMS.
-
#create_encrypted_collection(base de datos, coll_name, coll_opts, kms_provider, master_key) ⇒ arreglo<operación::Result, Hash>
Crea una colección con campos cifrados.
-
#decrypt(value) ⇒ Object
Descifra un valor que ya ha sido cifrado.
-
#delete_key(id) ⇒ Operation::Result
Remueve la clave con la ID indicada de la Colección de Bóvedas de Llaves.
-
#encriptar(valor, opciones = {}) ⇒ BSON::Binary
Encripta un valor usando la clave y algoritmo de cifrado especificados.
-
#encrypt_expresión(expresión, options = {}) ⇒ BSON::Binary
Encripta una expresión de coincidencia o una expresión de agregación para consultar un índice de rango.
-
#get_key(id) ⇒ BSON::Document | nil
Encuentra una sola clave con el ID proporcionado.
-
#get_key_by_alt_name(key_alt_name) ⇒ BSON::Document | nil
Devuelve una clave en la Colección de Bóvedas de Llaves con el key_alt_name (nombre alternativo de clave) proporcionado.
-
#get_keys ⇒ Collection::View (también: #keys)
Devuelve todas las Colección de Bóvedas de Llaves.
-
#initialize(key_vault_client, options = {}) ⇒ ClientEncryption
constructor
Crea un nuevo objeto ClientEncryption con las opciones proporcionadas.
-
#remove_key_alt_name(id, key_alt_name) ⇒ BSON::Document | nil
Remueve un key_alt_name de una clave en la Colección de Bóvedas de Llaves con el ID especificado.
-
#rewrap_many_data_key(filtro, opts = {}) ⇒ Crypt::RewrapManyDataKeyResult
Descifra varias claves de datos y las (re)encripta con una nueva master_key, o con su master_key actual si no se proporciona una nueva.
Detalles del Constructor
#initialize(key_vault_client, options = {}) ⇒ ClientEncryption
Crea un nuevo objeto ClientEncryption con las opciones proporcionadas.
52 53 54 55 56 57 58 59 60 61 |
# Archivo 'lib/mongo/client_encryption.rb', línea 52 def inicializar(key_vault_client, = {}) @encryptador = Cripta::EncriptadorExplicito.Nuevo( key_vault_client, [:key_vault_namespace], Cripta::KMS::credenciales.Nuevo([:kms_providers]), Cripta::KMS::validación.([kms_tls_options]), [:timeout_ms], [:key_expiration_ms] ) end |
Detalles del método de instancia
#add_key_alt_name(id, key_alt_name) ⇒ BSON::Document | nil
Agrega un key_alt_name para la clave en la Colección de Bóvedas de Llaves con el ID proporcionado.
207 208 209 |
# Archivo 'lib/mongo/client_encryption.rb', línea 207 def add_key_alt_name(ID, key_alt_name) @encryptador.add_key_alt_name(ID, key_alt_name) end |
#create_data_key(kms_provider, opciones = {}) ⇒ BSON::Binary
Genera una clave de datos utilizada para el cifrado/descifrado y almacena esa clave en la colección KMS. La clave generada está cifrado con la clave maestra KMS.
89 90 91 92 93 94 95 |
# Archivo 'lib/mongo/client_encryption.rb', línea 89 def create_data_key(kms_provider, = {}) Documento clave = Cripta::KMS::MasterKeyDocument.Nuevo(kms_provider, ) clave_nombres_alternativos = [nombres alternativos] material de clave = [Elemento clave] @encryptador.create_and_insert_data_key(Documento clave, clave_nombres_alternativos, material de clave) end |
#create_encrypted_collection(base de datos, coll_name, coll_opts, kms_provider, master_key) ⇒ arreglo<operación::Result, Hash>
Este método no actualiza el :encrypted_fields_map en las :auto_encryption_options del cliente. Por lo tanto, para usar la colección creada por este método con cifrado automático, el usuario debe crear un nuevo cliente después de llamar a esta función con los :encrypted_fields devueltos.
Crea una colección con campos cifrados.
Si :encryption_fields contiene un keyId con un valor nulo, se generará automáticamente una clave de datos y se asignará al valor de keyId.
294 295 296 297 298 299 300 301 302 303 304 305 |
# Archivo 'lib/mongo/client_encryption.rb', línea 294 def create_encrypted_collection(database, coll_name, coll_opts, kms_provider, master_key) propagar ArgumentError, 'coll_opts debe contener :encrypted_fields' a menos que coll_opts[:encrypted_fields] encrypted_fields = create_data_keys(coll_opts[:encrypted_fields], kms_provider, master_key) begin new_coll_opts = coll_opts.dup.fusionar(campos_encriptados: encrypted_fields) [ database[coll_name].Cree(new_coll_opts), encrypted_fields ] rescate mongo::Error => e propagar Error::CryptError, "Error al crear la colección con campos cifrados \ #{campos_cifrados}: #{e.class}: #{e.}" end end |
#descifrar(valor) ⇒ Objeto
Descifra un valor que ya ha sido cifrado.
196 197 198 |
# Archivo 'lib/mongo/client_encryption.rb', línea 196 def descifrar(Valor) @encryptador.descifrar(Valor) end |
#delete_key(id) ⇒ Operación::Result
Remueve la clave con la ID indicada de la Colección de Bóvedas de Llaves.
217 218 219 |
# Archivo 'lib/mongo/client_encryption.rb', línea 217 def delete_key(ID) @encryptador.delete_key(ID) end |
#encrypt(valor, opciones = {}) ⇒ BSON::Binary
El resultado del cifrado explícito con los algoritmos «Indexed», «Range» o «String» debe ser procesado por el servidor para insertar o consultar datos. Para insertar o consultar con este tipo de datos, utilice un Mongo::Client configurado con la opción :auto_encryption_options. La opción :bypass_query_analysis puede ser verdadera; la opción :bypass_auto_encryption debe ser falsa.
El tipo de consulta "subcadena" es inestable y está sujeto a cambios incompatibles con versiones anteriores.
Las opciones :key_id y :key_alt_name son mutuamente excluyentes. Solo se requiere uno para realizar el cifrado explícito.
Encripta un valor usando la clave y algoritmo de cifrado especificados.
146 147 148 |
# Archivo 'lib/mongo/client_encryption.rb', línea 146 def cifrado(Valor, = {}) @encryptador.cifrado(Valor, ) end |
#encrypt_expression(expresión, opciones = {}) ⇒ BSON::Binary
Las opciones :key_id y :key_alt_name son mutuamente excluyentes. Solo se requiere uno para realizar el cifrado explícito.
Encripta una expresión de coincidencia o una expresión de agregación para consultar un índice de rango.
Solo se admite cuando queryType es "range" y el algoritmo es "Range". @note: El algoritmo de Rango es solo experimental. No está destinado al uso público. Está sujeto a cambios disruptivos.
@param [ Hash ] opciones
186 187 188 |
# Archivo 'lib/mongo/client_encryption.rb', línea 186 def encrypt_expression(expresión, = {}) @encryptador.encrypt_expression(expresión, ) end |
#get_key(id) ⇒ BSON::Document | nil
Encuentra una sola clave con el ID proporcionado.
227 228 229 |
# Archivo 'lib/mongo/client_encryption.rb', línea 227 def obtener_clave(ID) @encryptador.obtener_clave(ID) end |
#get_key_by_alt_name(key_alt_name) ⇒ BSON::Document | nil
Devuelve una clave en la Colección de Bóvedas de Llaves con el key_alt_name (nombre alternativo de clave) proporcionado.
237 238 239 |
# Archivo 'lib/mongo/client_encryption.rb', línea 237 def get_key_by_alt_name(key_alt_name) @encryptador.get_key_by_alt_name(key_alt_name) end |
#get_keys ⇒ colección::View También conocido como: keys
Devuelve todas las Colección de Bóvedas de Llaves.
244 245 246 |
# Archivo 'lib/mongo/client_encryption.rb', línea 244 def get_keys @encryptador.get_keys end |
#remove_key_alt_name(id, key_alt_name) ⇒ BSON::Document | nil
Remueve un key_alt_name de una clave en la Colección de Bóvedas de Llaves con el ID especificado.
256 257 258 |
# Archivo 'lib/mongo/client_encryption.rb', línea 256 def eliminar_nombre_alternativo_de_clave(ID, key_alt_name) @encryptador.eliminar_nombre_alternativo_de_clave(ID, key_alt_name) end |
#rewrap_many_data_key(filtro, opts = {}) ⇒ Crypt::RewrapManyDataKeyResult
Descifra varias claves de datos y las (re)encripta con una nueva master_key, o con su master_key actual si no se proporciona una nueva.
271 272 273 |
# Archivo 'lib/mongo/client_encryption.rb', línea 271 def rewrap_many_data_key(filtro, opciones = {}) @encryptador.rewrap_many_data_key(filtro, opciones) end |