Uso del cliente de cifrado de DynamoDB para Python - 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 del cliente de cifrado de DynamoDB para Python

nota

El nombre de nuestra biblioteca de cifrado del lado del cliente pasó a llamarse Database Encryption. AWS SDK En el siguiente tema, se presenta información sobre las versiones 1.x—2.x del cliente de cifrado de DynamoDB para Java y versiones 1.x—3.x del cliente de cifrado de DynamoDB para Python. Para obtener más información, consulte Cifrado AWS de bases de datos SDK para compatibilidad con las versiones de DynamoDB.

En este tema, se explican algunas de las características del cliente de cifrado de DynamoDB para Python que podrían no encontrarse en otras implementaciones de lenguaje de programación. Estas características se han diseñado para facilitar el uso del cliente de cifrado de DynamoDB de la forma más segura. A menos que tenga un caso de uso inusual, le recomendamos que las utilice.

Para obtener más información sobre la programación con el cliente de cifrado de DynamoDB, consulte los ejemplos de Python de esta guía, los ejemplos del repositorio GitHub y aws-dynamodb-encryption-python la documentación de Python del cliente de cifrado de DynamoDB.

Clases auxiliares de cliente

El cliente de cifrado de DynamoDB para Python incluye varias clases auxiliares de cliente, que interactúan con las clases de Boto 3 para DynamoDB. Estas clases auxiliares se han diseñado para facilitar agregar cifrado y firma a su aplicación de DynamoDB existente y evitar los problemas más habituales del siguiente modo:

  • Evite cifrar la clave principal del elemento, ya sea añadiendo una acción de anulación de la clave principal del objeto o lanzando una excepción si el AttributeActionsobjeto indica explícitamente al cliente que cifre la clave principal. AttributeActions Si la acción predeterminada en su objeto AttributeActions es DO_NOTHING, las clases auxiliares de cliente utilizan dicha acción para la clave principal. De lo contrario, utilizan SIGN_ONLY.

  • Cree un TableInfo objeto y complete el contexto de cifrado de DynamoDB en función de una llamada a DynamoDB. Esto ayuda a garantizar que el contexto de cifrado de DynamoDB sea exacto y el cliente pueda identificar la clave principal.

  • Admite métodos, tales como put_item y get_item, que cifran y descifran de modo transparente los elementos de tabla al escribir o leer desde una tabla de DynamoDB. Solo el método update_item no se admite.

Puede utilizar las clases auxiliares de cliente en lugar de interactuar directamente con el encriptador de elementos de nivel inferior. Utilice estas clases a menos que tenga que establecer opciones avanzadas en el encriptador de elementos.

Las clases auxiliares de cliente incluyen:

Para usar las clases auxiliares del cliente, la persona que llama debe tener permiso para llamar a la operación de DynamoDB en la tabla de destino DescribeTable.

TableInfo clase

La TableInfoclase es una clase auxiliar que representa una tabla de DynamoDB, completa con campos para su clave principal e índices secundarios. Le ayuda a obtener información precisa y en tiempo real sobre la tabla.

Si utiliza una clase auxiliar de cliente, crea y utiliza un objeto TableInfo automáticamente. De lo contrario, puede crear una explícitamente. Para ver un ejemplo, consulte Utilice el encriptador de elementos.

Cuando se llama al refresh_indexed_attributes método en un TableInfo objeto, se rellenan los valores de las propiedades del objeto mediante una llamada a la operación DynamoDB DescribeTable. Consultar la tabla ofrece mucha más confianza que codificar de forma rígida los nombres de índice. La clase TableInfo incluye además una encryption_context_values propiedad que proporciona los valores requeridos para el contexto de cifrado de DynamoDB.

Para usar el refresh_indexed_attributes método, la persona que llama debe tener permiso para llamar a la operación de DescribeTableDynamoDB en la tabla de destino.

Acciones de atributo en Python

Las acciones de atributo indican al encriptador de elementos qué acciones hay que realizar en cada atributo del elemento. Para especificar acciones de atributo en Python, cree un objeto AttributeActions con una acción predeterminada y cualquier excepción para atributos particulares. Los valores válidos se definen en el tipo enumerado CryptoAction.

importante

Después de utilizar las acciones de atributo para cifrar los elementos de la tabla, agregar o quitar atributos del modelo de datos puede provocar un error de validación de firma que le impide descifrar los datos. Para ver una explicación detallada, consulte Cambiar el modelo de datos.

DO_NOTHING = 0 SIGN_ONLY = 1 ENCRYPT_AND_SIGN = 2

Por ejemplo, este objeto AttributeActions establece ENCRYPT_AND_SIGN como predeterminado para todos los atributos y especifica excepciones para los atributos ISBN y PublicationYear.

actions = AttributeActions( default_action=CryptoAction.ENCRYPT_AND_SIGN, attribute_actions={ 'ISBN': CryptoAction.DO_NOTHING, 'PublicationYear': CryptoAction.SIGN_ONLY } )

Si utiliza una clase auxiliar de cliente, no tiene que especificar una acción de atributo para los atributos de clave principal. Las clases auxiliares de cliente impiden que cifre su clave principal.

Si no utiliza una clase auxiliar de cliente y la acción predeterminada es ENCRYPT_AND_SIGN, debe especificar una acción para la clave principal. La acción recomendada para las claves principales es SIGN_ONLY. Para hacerlo más fácil, utilice el set_index_keys método, que utiliza SIGN _ ONLY para las claves principales, o DO_NOTHING, si es la acción predeterminada.

aviso

No cifre los atributos de clave principal. Deben permanecer en texto no cifrado para que DynamoDB pueda encontrar el elemento sin realizar un examen completo de la tabla.

actions = AttributeActions( default_action=CryptoAction.ENCRYPT_AND_SIGN, ) actions.set_index_keys(*table_info.protected_index_keys())