

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 de la bibliothèque de chiffrement côté client Rust pour DynamoDB
<a name="ddb-rust-using"></a>

Cette rubrique décrit certaines des fonctions et classes d'assistance de la version 1. *x* de la bibliothèque de chiffrement côté client Rust pour DynamoDB. 

Pour plus de détails sur la programmation avec la bibliothèque de chiffrement côté client Rust pour DynamoDB, consultez les [exemples Rust](https://github.com/aws/aws-database-encryption-sdk-dynamodb/blob/main/releases/rust/db_esdk/examples/) dans le référentiel -dynamodb sur. aws-database-encryption-sdk GitHub

**Topics**
+ [Chiffreurs d'éléments](#ddb-rust-item-encryptors)
+ [Actions d'attribut](#ddb-rust-attribute-actions)
+ [Configuration du chiffrement](#ddb-rust-config-encrypt)
+ [Mettre à jour des éléments](#ddb-rust-update-items)

## Chiffreurs d'éléments
<a name="ddb-rust-item-encryptors"></a>

À la base, le SDK de chiffrement AWS de base de données pour DynamoDB est un outil de chiffrement d'éléments. Vous pouvez utiliser la version 1. *x* de la bibliothèque de chiffrement côté client Rust pour DynamoDB pour chiffrer, signer, vérifier et déchiffrer les éléments de votre table DynamoDB de la manière suivante.

**Le SDK de chiffrement de AWS base de données de bas niveau pour l'API DynamoDB**  
Vous pouvez utiliser votre [configuration de chiffrement de table](#ddb-rust-config-encrypt) pour créer un client DynamoDB qui chiffre et signe automatiquement les éléments côté client avec vos requêtes DynamoDB. `PutItem`  
[Vous devez utiliser le SDK de chiffrement de AWS base de données de bas niveau pour l'API DynamoDB afin d'utiliser le chiffrement consultable.](searchable-encryption.md)  
Pour un exemple illustrant comment utiliser le SDK de chiffrement de AWS base de données de bas niveau pour l'API DynamoDB, consultez [basic\$1get\$1put\$1example.rs](https://github.com/aws/aws-database-encryption-sdk-dynamodb/blob/main/releases/rust/db_esdk/examples/basic_get_put_example.rs) dans le référentiel -dynamodb sur. aws-database-encryption-sdk GitHub

**Le niveau inférieur `DynamoDbItemEncryptor`**  
Le niveau inférieur chiffre, signe ou déchiffre et vérifie `DynamoDbItemEncryptor` directement les éléments de votre table sans appeler DynamoDB. Il n'émet pas de DynamoDB ni de `PutItem` requêtes`GetItem`. Par exemple, vous pouvez utiliser le niveau inférieur `DynamoDbItemEncryptor` pour déchiffrer et vérifier directement un élément DynamoDB que vous avez déjà récupéré.  
Le niveau inférieur `DynamoDbItemEncryptor` ne prend pas en charge le chiffrement [consultable](searchable-encryption.md).  
Pour un exemple illustrant comment utiliser le niveau inférieur`DynamoDbItemEncryptor`, consultez [item\$1encrypt\$1decrypt.rs](https://github.com/aws/aws-database-encryption-sdk-dynamodb/blob/main/releases/rust/db_esdk/examples/itemencryptor/item_encrypt_decrypt.rs) dans le référentiel -dynamodb sur. aws-database-encryption-sdk GitHub

## Actions relatives aux attributs dans le SDK de chiffrement AWS de base de données pour DynamoDB
<a name="ddb-rust-attribute-actions"></a>

Les [actions d'](concepts.md#crypt-actions)attribut déterminent quelles valeurs d'attribut sont cryptées et signées, lesquelles sont uniquement signées, lesquelles sont signées et incluses dans le contexte de chiffrement, et lesquelles sont ignorées.

Pour spécifier des actions d'attribut avec le client Rust, définissez manuellement les actions d'attribut à l'aide d'un modèle d'objet. Spécifiez vos actions d'attribut en créant un `HashMap` objet dans lequel les paires nom-valeur représentent les noms d'attributs et les actions spécifiées.

Spécifiez `ENCRYPT_AND_SIGN` le chiffrement et la signature d'un attribut. Spécifiez `SIGN_ONLY` pour signer un attribut, mais pas pour le chiffrer. Spécifiez `SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT` de signer un attribut et de l'inclure dans le contexte de chiffrement. Vous ne pouvez pas chiffrer un attribut sans le signer également. Spécifiez `DO_NOTHING` si un attribut doit être ignoré.

Les attributs de partition et de tri doivent être l'un `SIGN_ONLY` ou l'autre`SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT`. Si vous définissez des attributs comme`SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT`, les attributs de partition et de tri doivent également l'être`SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT`.

**Note**  
Après avoir défini vos actions d'attribut, vous devez définir quels attributs sont exclus des signatures. Pour faciliter l'ajout de nouveaux attributs non signés à l'avenir, nous vous recommandons de choisir un préfixe distinct (tel que `:` « ») pour identifier vos attributs non signés. Incluez ce préfixe dans le nom d'attribut pour tous les attributs marqués lorsque vous `DO_NOTHING` définissez votre schéma DynamoDB et vos actions d'attribut.

Le modèle d'objet suivant montre comment spécifier`ENCRYPT_AND_SIGN`, `SIGN_ONLY``SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT`, et `DO_NOTHING` attribuer des actions avec le client Rust. Cet exemple utilise le préfixe « `:` » pour identifier les `DO_NOTHING` attributs.

```
let attribute_actions_on_encrypt = HashMap::from([
    ("partition_key".to_string(), CryptoAction::SignOnly),
    ("sort_key".to_string(), CryptoAction::SignOnly),
    ("attribute1".to_string(), CryptoAction::EncryptAndSign),
    ("attribute2".to_string(), CryptoAction::SignOnly),
    (":attribute3".to_string(), CryptoAction::DoNothing),
]);
```

## Configuration du chiffrement dans le SDK de chiffrement AWS de base de données pour DynamoDB
<a name="ddb-rust-config-encrypt"></a>

Lorsque vous utilisez le SDK AWS Database Encryption, vous devez définir explicitement une configuration de chiffrement pour votre table DynamoDB. Les valeurs requises dans votre configuration de chiffrement varient selon que vous avez défini vos actions attributaires manuellement ou à l'aide d'une classe de données annotée.

L'extrait suivant définit une configuration de chiffrement de table DynamoDB à l'aide du SDK de chiffrement de AWS base de données de bas niveau pour l'API DynamoDB et des attributs non signés autorisés définis par un préfixe distinct.

```
let table_config = DynamoDbTableEncryptionConfig::builder()
    .logical_table_name(ddb_table_name)
    .partition_key_name("partition_key")
    .sort_key_name("sort_key")
    .attribute_actions_on_encrypt(attribute_actions_on_encrypt)
    .keyring(kms_keyring)
    .allowed_unsigned_attribute_prefix(UNSIGNED_ATTR_PREFIX)
    // Specifying an algorithm suite is optional
    .algorithm_suite_id(
        DbeAlgorithmSuiteId::AlgAes256GcmHkdfSha512CommitKeyEcdsaP384SymsigHmacSha384,
    )
    .build()?;

let table_configs = DynamoDbTablesEncryptionConfig::builder()
    .table_encryption_configs(HashMap::from([(ddb_table_name.to_string(), table_config)]))
    .build()?;
```

**Nom de table logique**  
Nom de table logique pour votre table DynamoDB.  
Le nom de table logique est lié de manière cryptographique à toutes les données stockées dans la table afin de simplifier les opérations de restauration DynamoDB. 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 toujours spécifier le même nom de table logique. Pour que le déchiffrement réussisse, le nom de la table logique doit correspondre au nom spécifié lors du chiffrement. Si le nom de votre table DynamoDB change après la [restauration de votre table DynamoDB à partir d'une sauvegarde, le nom logique de la table garantit que l'opération de déchiffrement](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Restore.Tutorial.html) reconnaît toujours la table.

**Attributs non signés autorisés**  
Les attributs marqués `DO_NOTHING` dans vos actions d'attributs.  
Les attributs non signés autorisés indiquent au client quels attributs sont exclus des signatures. Le client suppose que tous les autres attributs sont inclus dans la signature. Ensuite, lors du déchiffrement d'un enregistrement, le client détermine les attributs qu'il doit vérifier et ceux à ignorer parmi les attributs non signés autorisés que vous avez spécifiés. Vous ne pouvez pas supprimer un attribut de vos attributs non signés autorisés.  
Vous pouvez définir explicitement les attributs non signés autorisés en créant un tableau répertoriant tous vos `DO_NOTHING` attributs. Vous pouvez également spécifier un préfixe distinct lorsque vous nommez vos `DO_NOTHING` attributs et utiliser le préfixe pour indiquer au client quels attributs ne sont pas signés. Nous vous recommandons vivement de spécifier un préfixe distinct, car cela simplifie le processus d'ajout d'un nouvel `DO_NOTHING` attribut à l'avenir. Pour de plus amples informations, veuillez consulter [Mettre à jour votre modèle de données](ddb-update-data-model.md).  
Si vous ne spécifiez pas de préfixe pour tous les `DO_NOTHING` attributs, vous pouvez configurer un `allowedUnsignedAttributes` tableau répertoriant explicitement tous les attributs que le client doit s'attendre à voir non signés lorsqu'il les rencontre lors du déchiffrement. Vous ne devez définir explicitement vos attributs non signés autorisés que si cela est absolument nécessaire.

**Configuration de la recherche (facultatif)**  
`SearchConfig`Définit la [version de la balise](using-beacons.md#beacon-version).  
Le `SearchConfig` doit être spécifié pour utiliser un [chiffrement consultable](searchable-encryption.md) ou des [balises signées](configure.md#signed-beacons).

**Suite d'algorithmes (facultatif)**  
`algorithmSuiteId`Définit la suite d'algorithmes utilisée par le SDK AWS de chiffrement de base de données.  
À moins que vous ne spécifiiez explicitement une suite d'algorithmes alternative, le SDK AWS de chiffrement de base de données utilise la [suite d'algorithmes par défaut](supported-algorithms.md#recommended-algorithms). [La suite d'algorithmes par défaut utilise l'algorithme AES-GCM avec dérivation de clés, [signatures numériques et engagement](concepts.md#digital-sigs) de clés.](concepts.md#key-commitment) Bien que la suite d'algorithmes par défaut soit susceptible de convenir à la plupart des applications, vous pouvez choisir une autre suite d'algorithmes. Par exemple, certains modèles de confiance seraient satisfaits par une suite d'algorithmes sans signature numérique. Pour plus d'informations sur les suites d'algorithmes prises en charge par le SDK AWS de chiffrement de base de données, consultez[Suites d'algorithmes prises en charge dans le SDK AWS de chiffrement de base de données](supported-algorithms.md).  
Pour sélectionner la [suite d'algorithmes AES-GCM sans signature numérique ECDSA](supported-algorithms.md#other-algorithms), incluez l'extrait suivant dans votre configuration de chiffrement de table.  

```
.algorithm_suite_id(
    DbeAlgorithmSuiteId::AlgAes256GcmHkdfSha512CommitKeyEcdsaP384SymsigHmacSha384,
)
```

## Mise à jour d'éléments avec le SDK AWS de chiffrement de base de données
<a name="ddb-rust-update-items"></a>

Le SDK AWS de chiffrement de base de données ne prend pas en charge [ddb : UpdateItem](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_UpdateItem.html) pour les éléments qui incluent des attributs chiffrés ou signés. Pour mettre à jour un attribut chiffré ou signé, vous devez utiliser [ddb : PutItem](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_PutItem.html). Lorsque vous spécifiez la même clé primaire qu'un élément existant dans votre `PutItem` demande, le nouvel élément remplace complètement l'élément existant.