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 campoinspector_id_last4
. A continuación, utilice la baliza estándar para crear un índice secundario. Puede utilizar este índice secundario para realizar consultas en elinspector_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 deSuffix(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 valorSSN
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
yLastName
, puede crear un campoNameTag
virtual, construido a partir de la primera letra del campoFirstName
, seguida del campoLastName
, 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 consultasNameTag=mjones
en el campo virtual.Al menos uno de los campos de origen debe estar cifrado. Bien sea
FirstName
oLastName
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 eninspector_id_last4.unit
, cree primero balizas estándar distintas para los camposinspector_id_last4
yunit
. 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 eninspector_id_last4
yinspector_id_last4.unit
, primero, cree balizas estándar distintas para los camposinspector_id_last4
yunit
. 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 eninspector_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 campoinspector_id_last4
. El campoinspector_id_last4
está marcadoENCRYPT_AND_SIGN
en las acciones criptográficas. Todas las partes cifradas requieren su propia baliza estándar. El campoinspection_date
está marcadoSIGN_ONLY
y no requiere una baliza estándar. A continuación, cree una baliza compuesta desde el campoinspection_date
y la balizainspector_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 ámbitoinspection_date
limitado porinspector_id_last4
oinspector_id_last4.unit
, primero, cree balizas estándar distintas para los camposinspector_id_last4
yunit
. A continuación, cree una baliza compuesta a partir del campoinspection_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.