Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
Utilisation du client de chiffrement DynamoDB pour Python
Note
Notre bibliothèque de chiffrement côté client a été renommée AWS Database Encryption. SDK La rubrique suivante fournit des informations sur les versions 1. x —2. x du client de chiffrement DynamoDB pour Java et versions 1. x —3. x du client de chiffrement DynamoDB pour Python. Pour plus d'informations, consultez la section Chiffrement AWS de base de données SDK pour la prise en charge des versions DynamoDB.
Cette rubrique décrit certaines fonctionnalités du client de chiffrement DynamoDB pour Python qui ne sont peut-être pas disponibles dans d'autres implémentations de langage de programmation. Ces fonctionnalités sont conçues pour faciliter l'utilisation du client de chiffrement DynamoDB de la manière la plus sécurisée. À moins que vous n'ayez un scénario inhabituel, nous vous recommandons de les utiliser.
Pour plus de détails sur la programmation avec le client de chiffrement DynamoDB, consultez les exemples Python de ce guide, les exemples du
Classes d'annotations clientes
Le client de chiffrement DynamoDB pour Python inclut plusieurs classes d'assistance client qui reflètent les classes Boto 3 pour DynamoDB. Ces classes d'assistance sont conçues pour faciliter l'ajout de chiffrement et de signature à votre application DynamoDB existante et pour éviter les problèmes les plus courants, comme suit :
-
Empêchez-vous de chiffrer la clé primaire de votre élément, soit en ajoutant une action de remplacement pour la clé primaire à l'AttributeActionsobjet, soit en lançant une exception si votre
AttributeActions
objet demande explicitement au client de chiffrer la clé primaire. Si l'action par défaut de votre objetAttributeActions
estDO_NOTHING
, les classes d'annotations clientes utilisent cette action pour la clé primaire. Sinon, elles utilisentSIGN_ONLY
. -
Créez un TableInfo objet et renseignez le contexte de chiffrement DynamoDB en fonction d'un appel à DynamoDB. Cela permet de garantir que votre contexte de chiffrement DynamoDB est précis et que le client peut identifier la clé primaire.
-
Support des méthodes, telles que
put_item
etget_item
, qui chiffrent et déchiffrent de manière transparente les éléments de votre table lorsque vous écrivez ou lisez dans une table DynamoDB. Seule la méthodeupdate_item
n'est pas prise en charge.
Vous pouvez utiliser les classes d'annotations clientes au lieu d'interagir directement avec le chiffreur d'élément de bas niveau. Utilisez ces classes à moins que vous n'ayez besoin de définir des options avancées dans le chiffreur d'élément.
Les classes d'annotations clientes incluent les éléments suivants :
-
EncryptedTable
pour les applications qui utilisent la ressource Table dans DynamoDB pour traiter une table à la fois. -
EncryptedResource
pour les applications qui utilisent la classe Service Resource dans DynamoDB pour le traitement par lots. -
EncryptedClient
pour les applications qui utilisent le client de niveau inférieur dans DynamoDB .
Pour utiliser les classes d'assistance client, l'appelant doit être autorisé à appeler l'opération DynamoDB sur la table cible DescribeTable.
TableInfo classe
La TableInfo
Si vous utilisez une classe d'annotations clientes, elle crée et utilise un objet TableInfo
pour vous. Sinon, vous pouvez en créer un explicitement. Pour obtenir un exemple, consultez Utilisation du chiffreur d'élément.
Lorsque vous appelez la refresh_indexed_attributes
méthode sur un TableInfo
objet, elle renseigne les valeurs des propriétés de l'objet en appelant l'opération DynamoDB DescribeTable. L'interrogation de la table est beaucoup plus fiable que le codage en dur des noms d'index. La TableInfo
classe inclut également une encryption_context_values
propriété qui fournit les valeurs requises pour le contexte de chiffrement DynamoDB.
Pour utiliser la refresh_indexed_attributes
méthode, l'appelant doit être autorisé à appeler l'opération DescribeTableDynamoDB sur la table cible.
Actions d'attribut en Python
Les actions d'attribut informent le chiffreur d'élément des actions à exécuter sur chaque attribut de l'élément. Pour spécifier les actions d'attribut en Python, créez un objet AttributeActions
avec une action par défaut et les exceptions éventuelles pour des attributs particuliers. Les valeurs valides sont définies dans le type énuméré CryptoAction
.
Important
Après avoir utilisé vos actions d’attribut pour chiffrer vos éléments de table, l’ajouter ou la suppression d’attributs de votre modèle de données peut provoquer une erreur de validation de signature qui vous empêche de déchiffrer vos données. Pour obtenir une explication détaillée, consultez Modification de votre modèle de données.
DO_NOTHING = 0 SIGN_ONLY = 1 ENCRYPT_AND_SIGN = 2
Par exemple, l'objet AttributeActions
établit ENCRYPT_AND_SIGN
comme valeur par défaut pour tous les attributs, et spécifie les exceptions pour les attributs ISBN
et PublicationYear
.
actions = AttributeActions( default_action=CryptoAction.ENCRYPT_AND_SIGN, attribute_actions={ 'ISBN': CryptoAction.DO_NOTHING, 'PublicationYear': CryptoAction.SIGN_ONLY } )
Si vous utilisez une classe d'annotations clientes, vous n'avez pas besoin de spécifier une action d'attribut pour les attributs de clé primaire. Les classes d'annotations clients vous empêchent de chiffrer votre clé primaire.
Si vous n'utilisez pas une classe d'annotations clientes et que l'action par défaut est ENCRYPT_AND_SIGN
, vous devez spécifier une action pour la clé primaire. L'action recommandée pour les clés primaires est SIGN_ONLY
. Pour vous faciliter la tâche, utilisez la set_index_keys
méthode qui utilise SIGN _ ONLY pour les clés primaires, ou DO_NOTHING, lorsque c'est l'action par défaut.
Avertissement
Ne chiffrez pas les attributs de la clé primaire. Ils doivent rester en texte brut pour que DynamoDB puisse trouver l'élément sans exécuter une analyse complète du tableau.
actions = AttributeActions( default_action=CryptoAction.ENCRYPT_AND_SIGN, ) actions.set_index_keys(*table_info.protected_index_keys())