Utilisation du client de chiffrement DynamoDB pour Python - AWS Chiffrement des bases SDK

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 référentiel et aws-dynamodb-encryption-python la documentation GitHub Python du client de chiffrement DynamoDB.

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 objet AttributeActions est DO_NOTHING, les classes d'annotations clientes utilisent cette action pour la clé primaire. Sinon, elles utilisent SIGN_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éthode update_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 :

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 TableInfoclasse est une classe auxiliaire qui représente une table DynamoDB, avec des champs pour sa clé primaire et ses index secondaires. Elle vous permet d'obtenir des informations précises et en temps réel sur la table.

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())