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 chiffrement de base de données pour DynamoDB SDK
Avec la version 3. x du. NETbibliothèque de chiffrement côté client 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.
Étape 1 : Préparez-vous à lire et à écrire des éléments chiffrés
Procédez comme suit pour préparer votre SDK client 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 pourra 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
-
Créez un modèle d'objet pour définir les valeurs d'attribut qui seront cryptées et signées, celles qui seront uniquement signées et celles qui seront ignorées.
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
).Spécifiez
ENCRYPT_AND_SIGN
le chiffrement et la signature d'un attribut. SpécifiezSIGN_ONLY
pour signer un attribut, mais pas pour le chiffrer. SpécifiezSIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT
à signer et à attribuer et à inclure dans le contexte de chiffrement. Vous ne pouvez pas chiffrer un attribut sans le signer également. SpécifiezDO_NOTHING
pour ignorer un attribut. Pour de plus amples informations, veuillez consulter Actions d'attribut dans le chiffrement de AWS base de données SDK pour DynamoDB.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
.var attributeActionsOnEncrypt = new Dictionary<string, CryptoAction> { ["partition_key"] = CryptoAction.SIGN_ONLY, // The partition attribute must be SIGN_ONLY ["sort_key"] = CryptoAction.SIGN_ONLY, // The sort attribute must be SIGN_ONLY ["attribute1"] = CryptoAction.ENCRYPT_AND_SIGN, ["attribute2"] = CryptoAction.SIGN_ONLY, [":attribute3"] = CryptoAction.DO_NOTHING };
- 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.const String unsignAttrPrefix = ":";
- 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 un chiffrement symétrique ou asymétrique RSA 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é de chiffrement KMS symétrique. LaCreateAwsKmsMrkMultiKeyring
méthode garantit que le trousseau de clés gère correctement les clés à région unique et à régions multiples.var matProv = new MaterialProviders(new MaterialProvidersConfig()); var keyringInput = new CreateAwsKmsMrkMultiKeyringInput { Generator = kmsKeyId }; var 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.
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.Pour plus d'informations sur les valeurs incluses dans la configuration du chiffrement des tables, consultezConfiguration du chiffrement dans le chiffrement de AWS base de données SDK pour DynamoDB.
Dictionary<String, DynamoDbTableEncryptionConfig> tableConfigs = new Dictionary<String, DynamoDbTableEncryptionConfig>(); DynamoDbTableEncryptionConfig config = new DynamoDbTableEncryptionConfig { LogicalTableName = ddbTableName, PartitionKeyName = "partition_key", SortKeyName = "sort_key", AttributeActionsOnEncrypt = attributeActionsOnEncrypt, Keyring = kmsKeyring, AllowedUnsignedAttributePrefix = unsignAttrPrefix, PlaintextOverride = FORCE_WRITE_PLAINTEXT_ALLOW_READ_PLAINTEXT }; tableConfigs.Add(ddbTableName, config);
- 5. Création d'un nouveau client AWS SDK DynamoDB
-
L'exemple suivant crée un nouveau client AWS SDK DynamoDB à partir de
TableEncryptionConfigs
l'étape 4.var ddb = new Client.DynamoDbClient( new DynamoDbTablesEncryptionConfig { TableEncryptionConfigs = tableConfigs });
Étape 2 : Écrire des éléments chiffrés et signés
Mettez à jour la politique de texte brut dans votre configuration de chiffrement de table 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 chiffrement de AWS base de données SDK 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 un nouveau client AWS SDK DynamoDB à l'aide de la version mise à jour. TableEncryptionConfigs
Dictionary<String, DynamoDbTableEncryptionConfig> tableConfigs = new Dictionary<String, DynamoDbTableEncryptionConfig>(); DynamoDbTableEncryptionConfig config = new DynamoDbTableEncryptionConfig { LogicalTableName = ddbTableName, PartitionKeyName = "partition_key", SortKeyName = "sort_key", AttributeActionsOnEncrypt = attributeActionsOnEncrypt, Keyring = kmsKeyring, AllowedUnsignedAttributePrefix = unsignAttrPrefix, PlaintextOverride = FORBID_WRITE_PLAINTEXT_ALLOW_READ_PLAINTEXT }; tableConfigs.Add(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 configuration de chiffrement de table 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 un nouveau client AWS SDK DynamoDB à l'aide de la version mise à jour. TableEncryptionConfigs
Dictionary<String, DynamoDbTableEncryptionConfig> tableConfigs = new Dictionary<String, DynamoDbTableEncryptionConfig>(); DynamoDbTableEncryptionConfig config = new DynamoDbTableEncryptionConfig { LogicalTableName = ddbTableName, PartitionKeyName = "partition_key", SortKeyName = "sort_key", AttributeActionsOnEncrypt = attributeActionsOnEncrypt, Keyring = kmsKeyring, AllowedUnsignedAttributePrefix = unsignAttrPrefix, // Optional: you can also remove the plaintext policy from your configuration PlaintextOverride = FORBID_WRITE_PLAINTEXT_FORBID_READ_PLAINTEXT }; tableConfigs.Add(ddbTableName, config);