Elección de un tipo de baliza - AWS SDK de cifrado de bases de datos

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.

Elección de un tipo de baliza

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.

Con el cifrado que permite realizar búsquedas, puede buscar registros cifrados asignando con una baliza los valores de texto no cifrado de un campo cifrado. El tipo de baliza que configure determina el tipo de consultas que puede realizar.

Recomendamos encarecidamente identificar y planificar los tipos de consultas que debe realizar antes de configurar las balizas. Después de configurar las balizas, debe configurar un índice secundario para cada baliza antes de poder buscar en los campos cifrados. Para obtener más información, consulte Configurar índices secundarios con balizas.

Las balizas crean un mapa entre el valor de texto no cifrado escrito en un campo y el valor cifrado que está realmente almacenado en la base de datos. 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)

Solo puede realizar las consultas anteriores si compara las partes firmadas de las balizas compuestas, con la excepción del CONTAINS operador, que puede utilizar con las balizas compuestas para identificar el valor total de un campo cifrado o firmado que contenga la baliza ensamblada. Al comparar partes firmadas, si lo desea, puede incluir el prefijo de una parte cifrada, pero no puede incluir el valor cifrado de un campo. Para obtener más información sobre los tipos de consultas que pueden realizar las balizas estándar y compuestas, consulte Consulta de balizas.

Tenga en cuenta las siguientes soluciones de cifrado con capacidad de búsqueda al revisar los patrones de acceso a la base de datos. Los siguientes ejemplos definen qué baliza se debe configurar para satisfacer los diferentes requisitos de cifrado y consulta.

Balizas estándar

Las balizas estándar solo pueden realizar búsquedas de igualdad. Puede utilizar balizas estándar para llevar a cabo las siguientes consultas.

Consulte un único campo cifrado

Si desea identificar los registros que contienen un valor específico para un campo cifrado, cree un indicador estándar.

Para el siguiente ejemplo, considere una base de datos denominada UnitInspection que rastrea los datos de inspección de una planta de producción. Cada registro de la base de datos contiene campos denominados work_id, inspection_date, inspector_id_last4 y unit. El ID completo del inspector es un número comprendido entre 0 y 99 999 999. Sin embargo, para garantizar que el conjunto de datos se distribuya de manera uniforme, inspector_id_last4 solo almacena los últimos cuatro dígitos del ID del inspector. Cada campo de la base de datos se identifica mediante la clave principal work_id. Los campos inspector_id_last4 y unit están marcados ENCRYPT_AND_SIGN en las acciones criptográficas.

A continuación, se muestra un ejemplo de una entrada de texto no cifrado en la UnitInspection base de datos.

{ "work_id": "1c7fcff3-6e74-41a8-b7f7-925dc039830b", "inspection_date": 2023-06-07, "inspector_id_last4": 8744, "unit": 229304973450 }
Consulte un único campo cifrado de un registro

Si es necesario cifrar el campo inspector_id_last4, pero aun así necesita consultarlo para obtener coincidencias exactas, cree una baliza estándar a partir del campo inspector_id_last4. A continuación, utilice la baliza estándar para crear un índice secundario. Puede utilizar este índice secundario para realizar consultas en el inspector_id_last4 campo cifrado.

Para obtener ayuda para configurar balizas estándar, consulte Configuración de balizas estándar.

Consulte un campo virtual

Un campo virtual es un campo conceptual creado a partir de uno o más campos de origen. Si desea realizar búsquedas de igualdad para un segmento específico de un campo cifrado o realizar búsquedas de igualdad en la concatenación de varios campos, cree una baliza estándar a partir de un campo virtual. Todos los campos virtuales deben incluir al menos un campo de origen cifrado.

Los siguientes ejemplos crean campos virtuales para la base de datos de Employees. A continuación, se muestra un ejemplo de un registro de texto no cifrado de la base de datos de Employees.

{ "EmployeeID": 101, "SSN": 000-00-0000, "LastName": "Jones", "FirstName": "Mary", "Address": { "Street": "123 Main", "City": "Anytown", "State": "OH", "ZIPCode": 12345 } }
Consulte un segmento de un campo cifrado

En este ejemplo, el campo SSN está cifrado.

Si desea consultar el campo SSN con los últimos cuatro dígitos de un número de seguro social, cree un campo virtual que identifique el segmento que desea consultar.

Un Last4SSN campo virtual, creado a partir de Suffix(4), le permite realizar consultasLast4SSN=0000. Utilice este campo virtual para construir una baliza estándar. A continuación, utilice la baliza estándar para crear un índice secundario. Puede utilizar este índice secundario para realizar consultas en el campo virtual. Esta consulta devuelve todos los registros con un valor SSN que termina en los últimos cuatro dígitos que especificó.

Consulte la concatenación de varios campos
nota

El siguiente ejemplo muestra los tipos de transformaciones y consultas que se pueden realizar con un campo virtual. En la aplicación, es posible que los campos de ejemplo utilizados en este ejemplo no cumplan con las recomendaciones de unicidad de distribución y correlación para las balizas.

Si desea realizar búsquedas de igualdad en una concatenación de los campos FirstName y LastName, puede crear un campo NameTag virtual, construido a partir de la primera letra del campo FirstName, seguida del campo LastName, todo en minúsculas. Utilice este campo virtual para construir una baliza estándar. A continuación, utilice la baliza estándar para crear un índice secundario. Puede utilizar este índice secundario para realizar consultas NameTag=mjones en el campo virtual.

Al menos uno de los campos de origen debe estar cifrado. Bien sea FirstName o LastName puede estar cifrado, o ambos pueden estar cifrados. Todos los campos fuente de texto sin formato deben marcarse como acciones criptográficas SIGN_ONLY o figurar SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT en ellas.

Para obtener ayuda para configurar los campos virtuales y las balizas que los utilizan, consulte Creación de un campo virtual.

Balizas compuestas

Las balizas compuestas crean un índice a partir de cadenas literales de texto no cifrado y balizas estándar para realizar operaciones complejas de bases de datos. Puede utilizar balizas compuestas para realizar las siguientes consultas.

Consulte una combinación de campos cifrados en un único índice

Si necesita consultar una combinación de campos cifrados en un único índice, cree una baliza compuesta que combine las balizas estándar individuales creadas para cada campo cifrado para formar un índice único.

Tras configurar la baliza compuesta, puede crear un índice secundario que especifique la baliza compuesta como clave de partición para realizar consultas de coincidencia exacta o con una clave de clasificación para realizar consultas más complejas. Los índices secundarios que especifican la baliza compuesta como clave de clasificación pueden realizar consultas de coincidencia exacta y consultas complejas más personalizadas.

Para los siguientes ejemplos, considere una base de datos denominada UnitInspection que rastrea los datos de inspección de una instalación de producción. Cada registro de la base de datos contiene campos denominados work_id, inspection_date, inspector_id_last4 y unit. El ID completo del inspector es un número comprendido entre 0 y 99 999 999. Sin embargo, para garantizar que el conjunto de datos se distribuya de manera uniforme, inspector_id_last4 solo almacena los últimos cuatro dígitos del ID del inspector. Cada campo de la base de datos se identifica mediante la clave principal work_id. Los campos inspector_id_last4 y unit están marcados ENCRYPT_AND_SIGN en las acciones criptográficas.

A continuación, se muestra un ejemplo de una entrada de texto no cifrado en la base de datos UnitInspection.

{ "work_id": "1c7fcff3-6e74-41a8-b7f7-925dc039830b", "inspection_date": 2023-06-07, "inspector_id_last4": 8744, "unit": 229304973450 }
Realice búsquedas de igualdad en una combinación de campos cifrados

Si desea consultar en la UnitInspection base de datos las coincidencias exactas en inspector_id_last4.unit, cree primero balizas estándar distintas para los campos inspector_id_last4 y unit. A continuación, cree una baliza compuesta a partir de las dos balizas estándar.

Después de configurar la baliza compuesta, cree un índice secundario que especifique la baliza compuesta como clave de partición. Utilice este índice secundario para buscar coincidencias exactas en inspector_id_last4.unit. Por ejemplo, puede consultar esta baliza para encontrar una lista de las inspecciones que un inspector realizó en una unidad determinada.

Realice consultas complejas en una combinación de campos cifrados

Si desea consultar la UnitInspection base de datos en inspector_id_last4 y inspector_id_last4.unit, primero, cree balizas estándar distintas para los campos inspector_id_last4 y unit. A continuación, cree una baliza compuesta a partir de las dos balizas estándar.

Después de configurar la baliza compuesta, cree un índice secundario que especifique la baliza compuesta como clave de clasificación. Utilice este índice secundario para consultar en la UnitInspection base de datos las entradas que comiencen por un inspector determinado o consulte la base de datos para obtener una lista de todas las unidades dentro de un rango de ID de unidades específico que fueron inspeccionadas por un inspector determinado. También puede realizar búsquedas de coincidencias exactas en inspector_id_last4.unit.

Para obtener ayuda para configurar balizas compuestas, consulte Configuración de balizas compuestas.

Consulte una combinación de campos cifrados y de texto no cifrado en un único índice

Si necesita consultar una combinación de campos cifrados y de texto no cifrado en un solo índice, cree un indicador compuesto que combine balizas estándar individuales y campos de texto no cifrado para formar un índice único. Los campos de texto sin formato utilizados para construir la baliza compuesta deben estar marcados SIGN_ONLY o figurar SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT en sus acciones criptográficas.

Después de configurar la baliza compuesta, puede crear un índice secundario que especifique la baliza compuesta como clave de partición para realizar consultas de coincidencia exacta o con una clave de clasificación para realizar consultas más complejas. Los índices secundarios que especifican la baliza compuesta como clave de clasificación pueden realizar consultas de coincidencia exacta y consultas complejas más personalizadas.

Para los siguientes ejemplos, considere una base de datos denominada UnitInspection que rastrea los datos de inspección de una instalación de producción. Cada registro de la base de datos contiene campos denominados work_id, inspection_date, inspector_id_last4 y unit. El ID completo del inspector es un número comprendido entre 0 y 99 999 999. Sin embargo, para garantizar que el conjunto de datos se distribuya de manera uniforme, inspector_id_last4 solo almacena los últimos cuatro dígitos del ID del inspector. Cada campo de la base de datos se identifica mediante la clave principal work_id. Los campos inspector_id_last4 y unit están marcados ENCRYPT_AND_SIGN en las acciones criptográficas.

A continuación, se muestra un ejemplo de una entrada de texto no cifrado en la base de datos UnitInspection.

{ "work_id": "1c7fcff3-6e74-41a8-b7f7-925dc039830b", "inspection_date": 2023-06-07, "inspector_id_last4": 8744, "unit": 229304973450 }
Realice búsquedas de igualdad en una combinación de campos

Si desea consultar en la base de datos de UnitInspection las inspecciones realizadas por un inspector específico en una fecha específica, cree primero una baliza estándar para el campo inspector_id_last4. El campo inspector_id_last4 está marcado ENCRYPT_AND_SIGN en las acciones criptográficas. Todas las partes cifradas requieren su propia baliza estándar. El campo inspection_date está marcado SIGN_ONLY y no requiere una baliza estándar. A continuación, cree una baliza compuesta desde el campoinspection_date y la baliza inspector_id_last4 estándar.

Después de configurar la baliza compuesta, cree un índice secundario que especifique la baliza compuesta como clave de partición. Utilice este índice secundario para consultar en las bases de datos los registros que coincidan exactamente con un inspector y una fecha de inspección determinados. Por ejemplo, puede consultar la base de datos para obtener una lista de todas las inspecciones que el inspector cuya ID termina en 8744 realizó en una fecha específica.

Realice consultas complejas en una combinación de campos

Si desea consultar en la base de datos las inspecciones realizadas dentro de un intervalo de inspection_date, o consultar en la base de datos las inspecciones realizadas en un determinado ámbito inspection_date limitado por inspector_id_last4 o inspector_id_last4.unit, primero, cree balizas estándar distintas para los campos inspector_id_last4 y unit. A continuación, cree una baliza compuesta a partir del campo inspection_date de texto no cifrado y de las dos balizas estándar.

Después de configurar la baliza compuesta, cree un índice secundario que especifique la baliza compuesta como clave de clasificación. Utilice este índice secundario para realizar consultas sobre las inspecciones realizadas en fechas específicas por un inspector específico. Por ejemplo, puede consultar la base de datos para obtener una lista de todas las unidades inspeccionadas en la misma fecha. O bien, puede consultar la base de datos para obtener una lista de todas las inspecciones realizadas en una unidad específica en un intervalo determinado de fechas de inspección.

Para obtener ayuda para configurar balizas compuestas, consulte Configuración de balizas compuestas.