Uso de balizas - AWS Cifrado de bases SDK

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Uso de balizas

Se cambió el nombre de nuestra biblioteca de cifrado del lado del cliente por el de SDK de cifrado de AWS bases de datos. En esta guía para desarrolladores, se sigue proporcionando información sobre el cliente de cifrado de DynamoDB.

Las balizas permiten buscar registros cifrados sin necesidad de descifrar toda la base de datos consultada. Las balizas están diseñadas para su implementación en bases de datos nuevas y despobladas. Cualquier baliza configurada en una base de datos existente solo mapeará los nuevos registros escritos en la base de datos. Las balizas se calculan a partir del valor de texto no cifrado de un campo. Una vez cifrado el campo, la baliza no tiene forma de mapear los datos existentes. Una vez que haya escrito nuevos registros con una baliza, no puede actualizar la configuración de la baliza. Sin embargo, puede agregar balizas nuevas para los campos nuevos que agrega a su registro.

Tras configurar las balizas, debe completar los siguientes pasos antes de empezar a rellenar la base de datos y a realizar consultas en las balizas.

  1. Cree un conjunto de claves jerárquico AWS KMS

    Para utilizar el cifrado con capacidad de búsqueda, debe utilizar el conjunto de claves de AWS KMS jerárquico para generar, cifrar y descifrar las claves de datos que se utilizan para proteger sus registros.

    Después de configurar sus balizas, reúna los requisitos previos del conjunto de claves jerárquico y cree su conjunto de claves jerárquico.

    Para obtener más información sobre por qué se requiere el conjunto de claves jerárquico, consulte Uso del conjunto de claves jerárquico para el cifrado con capacidad de búsqueda.

  2. Defina la versión de baliza

    Especifique una lista de todas las balizas estándar que haya configurado, una lista de todas las balizas compuestas que haya configurado, una lista de las partes cifradas, una lista de las partes firmadas y una versión de la baliza. keyStore keySource Debe especificar la versión 1 de la baliza. Para obtener orientación sobre cómo definir su keySource, consulte Definir la fuente de claves de baliza.

    El siguiente ejemplo de Java define la versión de baliza para una base de datos de un solo inquilino. Para obtener ayuda para definir la versión de baliza para una base de datos de multitenencia, consulte Cifrado con capacidad de búsqueda para bases de datos de multitenencia.

    Java
    List<BeaconVersion> beaconVersions = new ArrayList<>(); beaconVersions.add( BeaconVersion.builder() .standardBeacons(standardBeaconList) .compoundBeacons(compoundBeaconList) .encryptedParts(encryptedPartsList) .signedParts(signedPartsList) .version(1) // MUST be 1 .keyStore(keyStore) .keySource(BeaconKeySource.builder() .single(SingleKeyStore.builder() .keyId(branchKeyId) .cacheTTL(6000) .build()) .build()) .build() );
    C# / .NET
    var beaconVersions = new List<BeaconVersion> { new BeaconVersion { StandardBeacons = standardBeaconList, CompoundBeacons = compoundBeaconList, EncryptedParts = encryptedPartsList, SignedParts = signedPartsList, Version = 1, // MUST be 1 KeyStore = branchKeyStoreName, KeySource = new BeaconKeySource { Single = new SingleKeyStore { KeyId = branch-key-id, CacheTTL = 6000 } } } };
  3. Configure los índices secundarios

    Después de configurar las balizas, debe configurar un índice secundario que refleje cada baliza antes de poder buscar en los campos cifrados. Para obtener más información, consulte Configurar índices secundarios con balizas.

  4. Defina sus acciones criptográficas

    Todos los campos utilizados para construir una baliza estándar deben estar marcados ENCRYPT_AND_SIGN. Todos los demás campos utilizados para construir balizas deben estar marcados con o. SIGN_ONLY SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT

  5. Configure un cliente SDK AWS de cifrado de bases de datos

    Para configurar un cliente SDK AWS de cifrado de bases de datos que proteja los elementos de la tabla de DynamoDB, consulte la biblioteca de cifrado del lado del cliente de Java para DynamoDB.

Balizas de consulta

El tipo de baliza que configure determinará el tipo de consultas que podrá realizar. Las balizas estándar utilizan expresiones de filtro para realizar búsquedas de igualdad. Las balizas compuestas combinan cadenas literales de texto no cifrado y balizas estándar para realizar consultas complejas. Al consultar datos cifrados, se busca por el nombre de la baliza.

No se pueden comparar los valores de dos balizas estándar, aunque contengan el mismo texto no cifrado subyacente. Las dos balizas estándar generarán dos etiquetas HMAC diferentes para los mismos valores de texto no cifrado. Como resultado, las balizas estándar no pueden realizar las siguientes consultas.

  • beacon1 = beacon2

  • beacon1 IN (beacon2)

  • value IN (beacon1, beacon2, ...)

  • CONTAINS(beacon1, beacon2)

Las balizas compuestas pueden realizar las siguientes consultas.

  • BEGINS_WITH(a), dónde a refleja el valor total del campo por el que comienza la baliza compuesta ensamblada. No puede utilizar el BEGINS_WITH operador para identificar un valor que comience con una subcadena determinada. Sin embargo, puede usarBEGINS_WITH(S_), donde S_ refleja el prefijo de una parte por la que comienza la baliza compuesta ensamblada.

  • CONTAINS(a), donde a refleja el valor total de un campo que contiene la baliza compuesta ensamblada. No puede usar el CONTAINS operador para identificar un registro que contenga una subcadena concreta o un valor dentro de un conjunto.

    Por ejemplo, no puede realizar una consulta CONTAINS(path, "a" en la que a se refleje el valor de un conjunto.

  • Puede comparar partes firmadas de balizas compuestas. Al comparar partes firmadas, si lo desea, puede agregar el prefijo de una parte cifrada a una o más partes firmadas, pero no puede incluir el valor de un campo cifrado en ninguna consulta.

    Por ejemplo, puede comparar las partes firmadas y realizar consultas en signedField1 = signedField2 o value IN (signedField1, signedField2, ...).

    También puede comparar las partes firmadas y el prefijo de una parte cifrada consultando signedField1.A_ = signedField2.B_.

  • field BETWEEN a AND b, donde a y b son partes firmadas. Si lo desea, puede añadir el prefijo de una parte cifrada a una o más partes firmadas, pero no puede incluir el valor de un campo cifrado en ninguna consulta.

Debe incluir el prefijo de cada parte que incluya en una consulta en una baliza compuesta. Por ejemplo, si ha creado una baliza compuesta, compoundBeacon, a partir de dos campos, encryptedField y signedField, debe incluir los prefijos configurados para esas dos partes cuando consulte la baliza.

compoundBeacon = E_encryptedFieldValue.S_signedFieldValue