Sélectionner vos préférences de cookies

Nous utilisons des cookies essentiels et des outils similaires qui sont nécessaires au fonctionnement de notre site et à la fourniture de nos services. Nous utilisons des cookies de performance pour collecter des statistiques anonymes afin de comprendre comment les clients utilisent notre site et d’apporter des améliorations. Les cookies essentiels ne peuvent pas être désactivés, mais vous pouvez cliquer sur « Personnaliser » ou « Refuser » pour refuser les cookies de performance.

Si vous êtes d’accord, AWS et les tiers approuvés utiliseront également des cookies pour fournir des fonctionnalités utiles au site, mémoriser vos préférences et afficher du contenu pertinent, y compris des publicités pertinentes. Pour accepter ou refuser tous les cookies non essentiels, cliquez sur « Accepter » ou « Refuser ». Pour effectuer des choix plus détaillés, cliquez sur « Personnaliser ».

Configurer une table DynamoDB existante pour utiliser AWS le SDK de chiffrement de base de données pour DynamoDB - AWS SDK de chiffrement de base de données

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.

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.

Configurer une table DynamoDB existante pour utiliser AWS le SDK de chiffrement de base de données pour DynamoDB

Notre bibliothèque de chiffrement côté client a été renommée SDK de chiffrement de AWS base de données. Ce guide du développeur fournit toujours des informations sur le client de chiffrement DynamoDB.

Avec la version 3. x de la bibliothèque de chiffrement côté client Java pour DynamoDB, vous pouvez configurer vos tables Amazon DynamoDB existantes pour le chiffrement côté client. Cette rubrique fournit des conseils sur les trois étapes à suivre pour ajouter la version 3. x vers une table DynamoDB existante et renseignée.

Prérequis

Version 3. x de la bibliothèque de chiffrement côté client Java pour DynamoDB nécessite le client DynamoDB amélioré fourni dans. AWS SDK for Java 2.x Si vous utilisez toujours Dynamo DBMapper, vous devez effectuer la migration AWS SDK for Java 2.x vers le client DynamoDB amélioré.

Suivez les instructions de migration de la version 1.x vers la version 2.x du. AWS SDK for Java

Suivez ensuite les instructions pour commencer à utiliser l'API client améliorée DynamoDB.

Avant de configurer votre table pour utiliser la bibliothèque de chiffrement côté client Java pour DynamoDB, vous devez générer une TableSchema classe de données annotée et créer un client amélioré.

Étape 1 : Préparez-vous à lire et à écrire des éléments chiffrés

Procédez comme suit pour préparer votre client du SDK AWS Database Encryption à lire et à écrire des éléments chiffrés. Après avoir déployé les modifications suivantes, votre client continuera à lire et à écrire des éléments en texte brut. Il ne chiffrera ni ne signera aucun nouvel élément inscrit dans la table, mais il sera en mesure de déchiffrer les éléments chiffrés dès leur apparition. Ces modifications préparent le client à commencer à chiffrer de nouveaux éléments. Les modifications suivantes doivent être déployées sur chaque lecteur avant de passer à l'étape suivante.

1. Définissez vos actions attributaires

Mettez à jour votre classe de données annotée pour inclure des actions d'attribut qui définissent les valeurs d'attribut qui seront chiffrées et signées, celles qui seront uniquement signées et celles qui seront ignorées.

Consultez le SimpleClassfichier .java dans le référentiel aws-database-encryption-sdk -dynamodb GitHub pour plus d'informations sur les annotations du client DynamoDB Enhanced.

Par défaut, les attributs de clé primaire sont signés mais pas chiffrés (SIGN_ONLY) et tous les autres attributs sont chiffrés et signés (ENCRYPT_AND_SIGN). Pour spécifier des exceptions, utilisez les annotations de chiffrement définies dans la bibliothèque de chiffrement côté client Java pour DynamoDB. Par exemple, si vous souhaitez qu'un attribut particulier soit un signe, utilisez uniquement l'@DynamoDbEncryptionSignOnlyannotation. Si vous souhaitez qu'un attribut particulier soit signé et inclus dans le contexte de chiffrement, utilisez l'@DynamoDbEncryptionSignAndIncludeInEncryptionContextannotation. Si vous souhaitez qu'un attribut particulier ne soit ni signé ni chiffré (DO_NOTHING), utilisez l'@DynamoDbEncryptionDoNothingannotation.

Note

Si vous spécifiez des SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT attributs, les attributs de partition et de tri doivent également l'êtreSIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT. Pour un exemple illustrant les annotations utilisées pour définirSIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT, consultez le SimpleClassfichier 4.java.

Pour des exemples d'annotations, voirUtiliser une classe de données annotée.

2. Définissez les attributs qui seront exclus des signatures

L'exemple suivant suppose que tous les DO_NOTHING attributs partagent le préfixe distinct : « » et utilise le préfixe pour définir les attributs non signés autorisés. Le client supposera que tout nom d'attribut avec le préfixe : « » est exclu des signatures. Pour de plus amples informations, veuillez consulter Allowed unsigned attributes.

final String unsignedAttrPrefix = ":";
3. Créez un porte-clés

L'exemple suivant crée un AWS KMS trousseau de clés. Le AWS KMS trousseau de clés utilise le chiffrement symétrique ou le RSA asymétrique AWS KMS keys pour générer, chiffrer et déchiffrer les clés de données.

Cet exemple permet CreateMrkMultiKeyring de créer un AWS KMS trousseau de clés avec une clé KMS de chiffrement symétrique. Le CreateAwsKmsMrkMultiKeyring procédé garantit que le trousseau de clés gère correctement les clés à région unique et à régions multiples.

final MaterialProviders matProv = MaterialProviders.builder() .MaterialProvidersConfig(MaterialProvidersConfig.builder().build()) .build(); final CreateAwsKmsMrkMultiKeyringInput keyringInput = CreateAwsKmsMrkMultiKeyringInput.builder() .generator(kmsKeyId) .build(); final IKeyring kmsKeyring = matProv.CreateAwsKmsMrkMultiKeyring(keyringInput);
4. Définition de la configuration du chiffrement des tables DynamoDB

L'exemple suivant définit une tableConfigs carte qui représente la configuration de chiffrement pour cette table DynamoDB.

Cet exemple indique le nom de la table DynamoDB comme nom de table logique. Nous vous recommandons vivement de spécifier le nom de votre table DynamoDB comme nom de table logique lorsque vous définissez votre configuration de chiffrement pour la première fois. Pour de plus amples informations, veuillez consulter Configuration du chiffrement dans le SDK de chiffrement AWS de base de données pour DynamoDB.

Vous devez le spécifier FORCE_WRITE_PLAINTEXT_ALLOW_READ_PLAINTEXT comme remplacement en texte brut. Cette politique continue de lire et d'écrire des éléments en texte brut, de lire des éléments chiffrés et de préparer le client à écrire des éléments chiffrés.

final Map<String, DynamoDbTableEncryptionConfig> tableConfigs = new HashMap<>(); final DynamoDbTableEncryptionConfig config = DynamoDbTableEncryptionConfig.builder() .logicalTableName(ddbTableName) .partitionKeyName("partition_key") .sortKeyName("sort_key") .schemaOnEncrypt(tableSchema) .keyring(kmsKeyring) .allowedUnsignedAttributePrefix(unsignedAttrPrefix) .plaintextOverride(PlaintextOverride.FORCE_WRITE_PLAINTEXT_ALLOW_READ_PLAINTEXT) .build(); tableConfigs.put(ddbTableName, config);
5. Créer le DynamoDbEncryptionInterceptor

L'exemple suivant crée le DynamoDbEncryptionInterceptor à l'aide tableConfigs de l'étape 3.

DynamoDbEncryptionInterceptor interceptor = DynamoDbEncryptionInterceptor.builder() .config(DynamoDbTablesEncryptionConfig.builder() .tableEncryptionConfigs(tableConfigs) .build()) .build();

Étape 2 : Écrire des éléments chiffrés et signés

Mettez à jour la politique de texte brut dans votre DynamoDbEncryptionInterceptor configuration pour permettre au client d'écrire des éléments chiffrés et signés. Après avoir déployé la modification suivante, le client chiffre et signe les nouveaux éléments en fonction des actions d'attribut que vous avez configurées à l'étape 1. Le client pourra lire les éléments en texte brut et les éléments chiffrés et signés.

Avant de passer à l'étape 3, vous devez chiffrer et signer tous les éléments en texte brut existants dans votre tableau. Il n'existe pas de métrique ou de requête unique que vous puissiez exécuter pour chiffrer rapidement vos éléments en texte brut existants. Utilisez le processus le mieux adapté à votre système. Par exemple, vous pouvez utiliser un processus asynchrone qui analyse lentement la table et réécrit les éléments à l'aide des actions attributaires et de la configuration de chiffrement que vous avez définies. Pour identifier les éléments en texte brut de votre tableau, nous vous recommandons de rechercher tous les éléments qui ne contiennent pas les aws_dbe_foot attributs aws_dbe_head et que le SDK de chiffrement de AWS base de données ajoute aux éléments lorsqu'ils sont chiffrés et signés.

L'exemple suivant met à jour la configuration de chiffrement des tables depuis l'étape 1. Vous devez mettre à jour le remplacement en texte brut avec. FORBID_WRITE_PLAINTEXT_ALLOW_READ_PLAINTEXT Cette politique continue de lire les éléments en texte brut, mais également de lire et d'écrire des éléments chiffrés. Créez-en un nouveau DynamoDbEncryptionInterceptor à l'aide de la mise à jourtableConfigs.

final Map<String, DynamoDbTableEncryptionConfig> tableConfigs = new HashMap<>(); final DynamoDbTableEncryptionConfig config = DynamoDbTableEncryptionConfig.builder() .logicalTableName(ddbTableName) .partitionKeyName("partition_key") .sortKeyName("sort_key") .schemaOnEncrypt(tableSchema) .keyring(kmsKeyring) .allowedUnsignedAttributePrefix(unsignedAttrPrefix) .plaintextOverride(PlaintextOverride.FORBID_WRITE_PLAINTEXT_ALLOW_READ_PLAINTEXT) .build(); tableConfigs.put(ddbTableName, config);

Étape 3 : lire uniquement les éléments chiffrés et signés

Une fois que vous avez chiffré et signé tous vos éléments, mettez à jour la dérogation en texte brut dans votre DynamoDbEncryptionInterceptor configuration pour autoriser uniquement le client à lire et écrire des éléments chiffrés et signés. Après avoir déployé la modification suivante, le client chiffre et signe les nouveaux éléments en fonction des actions d'attribut que vous avez configurées à l'étape 1. Le client ne pourra lire que les éléments chiffrés et signés.

L'exemple suivant met à jour la configuration de chiffrement des tables depuis l'étape 2. Vous pouvez soit mettre à jour la règle de remplacement en texte brut, FORBID_WRITE_PLAINTEXT_FORBID_READ_PLAINTEXT soit la supprimer de votre configuration. Le client lit et écrit uniquement les éléments chiffrés et signés par défaut. Créez-en un nouveau DynamoDbEncryptionInterceptor à l'aide de la mise à jourtableConfigs.

final Map<String, DynamoDbTableEncryptionConfig> tableConfigs = new HashMap<>(); final DynamoDbTableEncryptionConfig config = DynamoDbTableEncryptionConfig.builder() .logicalTableName(ddbTableName) .partitionKeyName("partition_key") .sortKeyName("sort_key") .schemaOnEncrypt(tableSchema) .keyring(kmsKeyring) .allowedUnsignedAttributePrefix(unsignedAttrPrefix) // Optional: you can also remove the plaintext policy from your configuration .plaintextOverride(PlaintextOverride.FORBID_WRITE_PLAINTEXT_FORBID_READ_PLAINTEXT) .build(); tableConfigs.put(ddbTableName, config);

Rubrique suivante :

Migrer vers la version 3.x

Rubrique précédente :

Exemples Java
ConfidentialitéConditions d'utilisation du sitePréférences de cookies
© 2025, Amazon Web Services, Inc. ou ses affiliés. Tous droits réservés.