

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.

# Chiffrement de DynamoDB au repos
<a name="EncryptionAtRest"></a>

Toutes les données utilisateur stockées dans Amazon DynamoDB sont entièrement chiffrées au repos. Le chiffrement au repos de DynamoDB offre une sécurité renforcée en chiffrant toutes vos données au repos à l’aide de clés de chiffrement stockées dans [AWS Key Management Service (AWS KMS)](https://aws.amazon.com/kms/). Cette fonctionnalité réduit la lourdeur opérationnelle et la complexité induites par la protection des données sensibles. Le chiffrement au repos vous permet de créer des applications sensibles en matière de sécurité qui sont conformes aux exigences réglementaires et de chiffrement strictes.

Le chiffrement au repos de DynamoDB offre une couche supplémentaire de protection des données en les sécurisant toujours dans une table chiffrée incluant une clé primaire, des index secondaires locaux et globaux, des flux, des tables globales, des sauvegardes et des clusters DynamoDB Accelerator (DAX) chaque fois que les données sont stockées sur un support durable. Les politiques organisationnelles et les réglementations sectorielles ou gouvernementales, ainsi que les exigences de conformité, exigent souvent l’utilisation du chiffrement au repos pour augmenter la sécurité des données de vos applications. Pour plus d’informations sur le chiffrement des applications de base de données, consultez [AWS Database Encryption SDK](https://docs.aws.amazon.com/database-encryption-sdk/latest/devguide/what-is-database-encryption-sdk.html).

Encryption at rest s'intègre AWS KMS à la gestion des clés de chiffrement utilisées pour chiffrer vos tables. Pour plus d’informations sur les types de clés et leurs états, consultez [Concepts AWS Key Management Service](https://docs.aws.amazon.com/kms/latest/developerguide/key-state.html#key-state-cmk-type) dans le *Guide du développeur AWS Key Management Service *.

Lorsque vous créez une nouvelle table, vous pouvez choisir l'un des AWS KMS key types suivants pour chiffrer votre table. Vous pouvez passer d’un type de clé à l’autre à tout moment.
+ **Clé détenue par AWS —** Type de cryptage par défaut. La clé est détenue par DynamoDB (sans frais supplémentaires).
+ **Clé gérée par AWS —** La clé est enregistrée dans votre compte et est gérée par AWS KMS (des AWS KMS frais s'appliquent).
+ **Clé gérée par le client –** La clé et stockée dans votre compte. Elle est créée, détenue et gérée par vous. Vous avez le contrôle total de la clé KMS (AWS KMS des frais s'appliquent).

Pour plus d'informations sur les types de clés, voir [Clés et AWS clés clients](/kms/latest/developerguide/concepts.html#key-mgmt).

**Note**  
Lors de la création d’un cluster DAX avec le chiffrement au repos activé, une clé Clé gérée par AWS est utilisée pour chiffrer les données au repos dans le cluster.
Si votre table a une clé de tri, certaines clés de tri qui marquent les limites de plage sont stockées en texte brut dans les métadonnées de la table.

Lorsque vous accédez à une table chiffrée, DynamoDB déchiffre les données de la table de manière transparente. Vous n’avez pas besoin de changer de code ou d’application pour utiliser ou gérer des tables chiffrées. DynamoDB continue d’offrir la même latence inférieure à 10 millisecondes à laquelle vous êtes habitué, et toutes les interrogations de DynamoDB fonctionnent sans heurt sur vos données chiffrées.

Vous pouvez spécifier une clé de chiffrement lorsque vous créez une nouvelle table ou que vous changez les clés de chiffrement sur une table existante à l'aide de l' AWS Command Line Interface API AWS Management Console, (AWS CLI) ou Amazon DynamoDB. Pour savoir comment procéder, consultez [Gestion des tables chiffrées dans DynamoDB](encryption.tutorial.md).

Le chiffrement au repos à l'aide du Clé détenue par AWS est proposé sans frais supplémentaires. Cependant, AWS KMS des frais s'appliquent pour une clé gérée par le client Clé gérée par AWS et pour une telle clé. Pour plus d’informations sur la tarification, consultez [Tarification d’AWS KMS](https://aws.amazon.com/kms/pricing).

Le chiffrement DynamoDB au repos est disponible dans AWS toutes les régions, y compris les régions de AWS Chine (Pékin) et de AWS Chine (Ningxia) et AWS GovCloud les régions (États-Unis). Pour plus d’informations, consultez [Fonctionnement du chiffrement DynamoDB au repos](encryption.howitworks.md) et [Notes d’utilisation du chiffrement de DynamoDB au repos](encryption.usagenotes.md).

# Fonctionnement du chiffrement DynamoDB au repos
<a name="encryption.howitworks"></a>

Le chiffrement Amazon DynamoDB au repos chiffre vos données à l’aide du chiffrement Advanced Encryption Standard 256 bits (AES-256), ce qui contribue à sécuriser vos données contre tout accès non autorisé au stockage sous-jacent.

Encryption at rest s'intègre à AWS Key Management Service (AWS KMS) pour gérer les clés de chiffrement utilisées pour chiffrer vos tables.

**Note**  
En mai 2022, le calendrier de rotation AWS KMS a été modifié, Clés gérées par AWS passant de tous les trois ans (environ 1 095 jours) à chaque année (environ 365 jours).  
 Clés gérées par AWS Les nouvelles versions font l'objet d'une rotation automatique un an après leur création, et environ chaque année par la suite.  
 Clés gérées par AWS Les versions existantes font automatiquement l'objet d'une rotation un an après leur dernière rotation, puis chaque année.

## Clés détenues par AWS
<a name="ddb-owned"></a>

 Clés détenues par AWS ne sont pas enregistrés dans votre AWS compte. Elles font partie d'un ensemble de clés KMS qui AWS possède et gère pour une utilisation dans plusieurs AWS comptes. AWS services que vous pouvez Clés détenues par AWS utiliser pour protéger vos données. Clés détenues par AWS utilisés par DynamoDB font l'objet d'une rotation annuelle (environ 365 jours). 

Vous ne pouvez pas consulter, gérer Clés détenues par AWS, utiliser ou auditer leur utilisation. Toutefois, vous n’avez pas besoin de faire quelque travail que ce soit ou de modifier les programmes pour protéger les clés qui chiffrent vos données.

Aucuns frais mensuels ni frais d'utilisation ne vous sont facturés pour l'utilisation de Clés détenues par AWS, et ils ne sont pas pris en compte dans les AWS KMS quotas de votre compte.

## Clés gérées par AWS
<a name="managed-key-service-default-kms"></a>

Clés gérées par AWS sont des clés KMS de votre compte créées, gérées et utilisées en votre nom par un AWS service intégré à AWS KMS. Vous pouvez afficher les clés Clés gérées par AWS dans votre compte, afficher leurs politiques de clé et contrôler leur utilisation dans les journaux AWS CloudTrail . Toutefois, vous ne pouvez pas gérer ces clés KMS ou modifier leurs autorisations.

Encryption at rest s'intègre automatiquement AWS KMS à DynamoDB `aws/dynamodb` () qui est utilisé Clés gérées par AWS pour chiffrer vos tables pour gérer. S'il Clé gérée par AWS n'en existe pas lorsque vous créez votre table DynamoDB chiffrée AWS KMS , une nouvelle clé est automatiquement créée pour vous. Cette clé est utilisée avec les tables chiffrées créées dans le futur. AWS KMS combine du matériel et des logiciels sécurisés et hautement disponibles pour fournir un système de gestion des clés adapté au cloud.

Pour plus d'informations sur la gestion des autorisations du Clé gérée par AWS, voir [Autoriser l'utilisation du Clé gérée par AWS dans le](https://docs.aws.amazon.com/kms/latest/developerguide/services-dynamodb.html#dynamodb-authz) *Guide du AWS Key Management Service développeur*.

## Clés gérées par le client
<a name="managed-key-customer-managed"></a>

Les clés gérées par le client sont des clés KMS de votre AWS compte que vous créez, détenez et gérez. Vous disposez d’un contrôle total sur ces clés KMS, incluant l’établissement et la gestion de leurs politiques de clé, politiques IAM et octrois, leur activation et désactivation, la rotation de leur contenu de chiffrement, l’ajout d’étiquettes, la création d’alias qui y font référence, et la planification de leur suppression. Pour plus d’informations sur la gestion des autorisations d’une clé gérée par le client, consultez [Clés gérées par le client](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#customer-cmk).

Lorsque vous spécifiez une clé gérée par le client comme clé de chiffrement au niveau de la table, la table DynamoDB, les index secondaires locaux et globaux, ainsi que les flux sont chiffrés avec la même clé. Les sauvegardes à la demande sont chiffrées à l’aide de la clé de chiffrement au niveau de la table spécifiée au moment de leur création. La mise à jour de la clé de chiffrement au niveau de la table n’a pas pour effet de modifier la clé de chiffrement associée aux sauvegardes à la demande existantes.

La désactivation de la clé gérée par le client ou la planification de sa suppression empêchent tous les utilisateurs et le service DynamoDB de chiffrer ou déchiffrer des données, ainsi que d’effectuer des opérations de lecture et d’écriture sur la table. Pour vous permettre de continuer à accéder à votre table et vous éviter de perdre des données, DynamoDB doit avoir accès à votre clé de chiffrement.

Si vous désactivez votre clé gérée par le client ou planifiez sa suppression, l’état de votre table devient **Inaccessible**. Pour vous assurer de pouvoir continuer à utiliser la table, vous devez fournir à DynamoDB l’accès à la clé de chiffrement spécifiée dans un délai de sept jours. Dès que le service détecte que votre clé de chiffrement est inaccessible, DynamoDB vous envoie une notification par e-mail pour vous alerter.

**Note**  
Si votre clé gérée par le client reste inaccessible au service DynamoDB pendant plus de sept jours, la table est archivée et n’est plus accessible. DynamoDB crée une sauvegarde à la demande de votre table et vous êtes facturé pour cela. Vous pouvez utiliser cette sauvegarde à la demande pour restaurer vos données vers une nouvelle table. Pour lancer la restauration, la dernière clé gérée par le client sur la table doit être activée et DynamoDB doit y avoir accès.
Si la clé gérée par le client qui a été utilisée pour chiffrer un réplica de table globale est inaccessible, DynamoDB supprime ce réplica du groupe de réplication. Le réplica n’est pas supprimé et la réplication depuis et vers cette région s’arrête 20 heures après que l’inaccessibilité de la clé gérée par le client a été détectée.

Pour plus d’informations, consultez les sections [Activation des clés](/kms/latest/developerguide/enabling-keys.html) et [Suppression de clés](/kms/latest/developerguide/deleting-keys.html). 

## Remarques sur l'utilisation Clés gérées par AWS
<a name="managed-key-notes"></a>

Amazon DynamoDB ne peut pas lire les données de votre table s'il n'a pas accès à la clé KMS enregistrée dans votre compte. AWS KMS DynamoDB utilise un chiffrement d’enveloppe et une hiérarchie de clés pour chiffrer les données. Votre clé de AWS KMS chiffrement est utilisée pour chiffrer la clé racine de cette hiérarchie de clés. Pour plus d’informations, consultez [Chiffrement d’enveloppe](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#enveloping) dans le *Guide du développeur AWS Key Management Service *.

 DynamoDB n'appelle pas AWS KMS toutes les opérations DynamoDB. La clé est actualisée une fois toutes les 5 minutes pour chaque appelant ayant un trafic actif.

Assurez-vous d’avoir configuré le kit SDK pour réutiliser les connexions. Dans le cas contraire, DynamoDB devra rétablir de nouvelles entrées de AWS KMS cache pour chaque opération DynamoDB avec des latences. En outre, vous pourriez avoir à faire face à AWS KMS des CloudTrail coûts plus élevés. Par exemple, pour faire cela à l’aide du kit SDK Node.js, vous pouvez créer un agent HTTPS avec le paramètre `keepAlive` activé. Pour plus d’informations, consultez [Configuration de keepAlive dans Node.js](https://docs.aws.amazon.com/sdk-for-javascript/v2/developer-guide/node-reusing-connections.html) dans le *Guide du développeur AWS SDK pour JavaScript *.

# Notes d’utilisation du chiffrement de DynamoDB au repos
<a name="encryption.usagenotes"></a>

Lorsque vous utilisez un chiffrement au repos dans Amazon DynamoDB, tenez compte des considérations suivantes.

## Toutes les données des tables sont chiffrées
<a name="encryption.usagenotes.tabledata"></a>

Le chiffrement au repos côté serveur est activé sur toutes les données de tables DynamoDB et ne peut pas être désactivé. Vous ne pouvez pas chiffrer uniquement un sous-ensemble d’éléments dans une table.

La fonction de chiffrement au repos chiffre uniquement les données lorsque qu’elles sont statiques (au repos) sur un support de stockage permanent. Si la sécurité des données est un élément important pour les données en transit ou en cours d’utilisation, vous devrez peut-être prendre des mesures supplémentaires :
+ Données en transit : toutes vos données dans DynamoDB sont chiffrées en transit. Par défaut, les communications avec DynamoDB utilisent le protocole HTTPS qui protège le trafic réseau à l’aide du chiffrement Secure Sockets Layer (SSL)/Transport Layer Security (TLS).
+ Données en cours d’utilisation : protégez vos données avant de les envoyer à DynamoDB à l’aide d’un chiffrement côté client. Pour plus d’informations, consultez [Chiffrement côté client et côté serveur](https://docs.aws.amazon.com/dynamodb-encryption-client/latest/devguide/client-server-side.html) dans le *Guide du développeur de client de chiffrement Amazon DynamoDB*.

Vous pouvez utiliser des flux avec des tables chiffrées. Les flux de DynamoDB sont toujours chiffrés avec une clé de chiffrement au niveau de la table. Pour de plus amples informations, veuillez consulter [Modifier la récupération de données pour DynamoDB Streams](Streams.md).

Les sauvegardes de DynamoDB sont chiffrées, et le chiffrement est également activé dans les tables restaurées à partir de ces sauvegardes. Vous pouvez utiliser la clé Clé détenue par AWS Clé gérée par AWS, ou la clé gérée par le client pour chiffrer vos données de sauvegarde. Pour de plus amples informations, veuillez consulter [Sauvegarde et restauration pour DynamoDB](Backup-and-Restore.md).

Les index secondaires locaux et les index secondaires globaux sont chiffrés à l’aide de la même clé que la table de base.

## Types de chiffrement
<a name="encryption.usagenotes.encryptiontypes"></a>

**Note**  
Les clés gérées par le client ne sont pas prises en charge dans Global Table Version 2017. Si vous souhaitez utiliser une clé de ce type dans une table globale DynamoDB, vous devez mettre à niveau cette table vers Global Table Version 2019, puis l’activer.

Sur le AWS Management Console, le type de chiffrement correspond à l'utilisation `KMS` de la clé gérée par le client Clé gérée par AWS ou de la clé gérée par le client pour chiffrer vos données. Le type de chiffrement est `DEFAULT` lorsque vous utilisez la clé Clé détenue par AWS. Dans l'API Amazon DynamoDB, le type de chiffrement correspond à l'utilisation de la clé gérée par le `KMS` client ou de la clé gérée Clé gérée par AWS par le client. Si le type de chiffrement n’est pas spécifié, vos données sont chiffrées avec la clé Clé détenue par AWS. Vous pouvez basculer entre la clé Clé détenue par AWS Clé gérée par AWS, et la clé gérée par le client à tout moment. Vous pouvez utiliser la console, le AWS Command Line Interface (AWS CLI) ou l'API Amazon DynamoDB pour changer les clés de chiffrement.

Notez que les limites suivantes s’appliquent lors de l’utilisation des clés gérées par le client :
+ Vous ne pouvez pas utiliser une clé gérée par le client avec des clusters DynamoDB Accelerator (DAX). Pour de plus amples informations, veuillez consulter [Chiffrement au repos DAX](DAXEncryptionAtRest.md).
+ Vous pouvez utiliser une clé gérée par le client pour chiffrer les tables qui utilisent des transactions. Cependant, pour assurer la durabilité de la propagation des transactions, une copie de la demande de transaction est temporairement stockée par le service et chiffrée à l’aide d’une clé Clé détenue par AWS. Les données validées dans vos tables et index secondaires sont toujours chiffrées au repos à l’aide de votre clé gérée par le client.
+ Vous pouvez utiliser une clé gérée par le client pour chiffrer les tables qui utilisent Contributor Insights. Cependant, les données transmises à sont cryptées Amazon CloudWatch à l'aide d'un Clé détenue par AWS.
+ Lorsque vous passez à une nouvelle clé gérée par le client, veillez à conserver la clé d'origine activée jusqu'à ce que le processus soit terminé. AWS aura toujours besoin de la clé d'origine pour déchiffrer les données avant de les chiffrer avec la nouvelle clé. Le processus sera terminé lorsque le SSEDescription statut de la table sera ACTIVÉ et que KMSMaster KeyArn la nouvelle clé gérée par le client sera affichée. À ce stade, la clé d’origine peut être désactivée ou planifiée en vue de sa suppression.
+ Une fois la nouvelle clé gérée par le client affichée, la table et toutes les nouvelles sauvegardes à la demande sont chiffrées avec la nouvelle clé.
+ Toutes les sauvegardes à la demande existantes restent chiffrées avec la clé gérée par le client utilisée lors de la création de ces sauvegardes. Vous aurez besoin de la même clé pour restaurer ces sauvegardes. Vous pouvez identifier la clé pour la période au cours de laquelle chaque sauvegarde a été créée en utilisant l' DescribeBackup API pour afficher celles de cette sauvegarde SSEDescription.
+ Si vous désactivez votre clé gérée par le client ou planifiez sa suppression, toutes les données dans DynamoDB Streams restent sujettes à une durée de vie de 24 heures. Toutes les données d’activité non récupérées sont éligibles à la suppression lorsqu’elles ont plus de 24 heures.
+ Si vous désactivez votre clé gérée par le client ou planifiez sa suppression, les suppressions liées au Time-to-live (TTL) continuent pendant 30 minutes. Ces suppressions TTL continuent d'être émises vers DynamoDB Streams et sont soumises à l'intervalle standard. trimming/retention 

  Pour plus d’informations, consultez les sections [Activation des clés](/kms/latest/developerguide/enabling-keys.html) et [Suppression de clés](/kms/latest/developerguide/deleting-keys.html). 

## Utilisation des clés KMS et des clés de données
<a name="dynamodb-kms"></a>

La fonctionnalité de chiffrement DynamoDB au repos utilise AWS KMS key une et une hiérarchie de clés de données pour protéger les données de votre table. DynamoDB utilise la même hiérarchie de clés pour protéger les DynamoDB Streams, les tables globales et les sauvegardes lorsqu’ils sont écrits sur un support durable.

Nous vous recommandons de planifier votre stratégie de chiffrement avant d’implémenter votre table dans DynamoDB. Si vous stockez des données sensibles ou confidentielles dans DynamoDB, pensez à inclure le chiffrement côté client dans votre stratégie. Vous pourrez ainsi chiffrer les données au plus près de leur origine et garantir leur protection tout au long de leur cycle de vie. Pour en savoir plus, consultez la [documentation sur le client de chiffrement DynamoDB](https://docs.aws.amazon.com/dynamodb-encryption-client/latest/devguide/what-is-ddb-encrypt.html).

**AWS KMS key**  
Le chiffrement au repos protège vos tables DynamoDB sous une AWS KMS key. Par défaut, DynamoDB utilise une [Clé détenue par AWS](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#aws-owned-cmk), c’est-à-dire une clé de chiffrement à locataires multiples créée et gérée dans un compte de service DynamoDB. Toutefois, vous pouvez chiffrer vos tables DynamoDB sous une [clé gérée par le client](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#customer-cmk) pour DynamoDB (`aws/dynamodb`) dans votre Compte AWS. Vous pouvez sélectionner une autre clé KMS pour chaque table. La clé KMS que vous sélectionnez pour une table est également utilisée pour chiffrer ses index secondaires, flux et sauvegardes locaux et globaux.  
Vous sélectionnez la clé KMS pour une table lorsque vous créez ou mettez à jour la table. Vous pouvez modifier la clé KMS d'une table à tout moment, soit dans la console DynamoDB, soit en utilisant l'opération. [UpdateTable](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_UpdateTable.html) Le processus de commutation des clés est transparent et ne provoque pas d’interruption ou de dégradation du service.  
DynamoDB ne prend en charge que les [clés KMS symétriques](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#symmetric-cmks). Vous ne pouvez pas utiliser une [clé KMS asymétrique](https://docs.aws.amazon.com/kms/latest/developerguide/symmetric-asymmetric.html#asymmetric-cmks) pour chiffrer vos tables DynamoDB. 
Utilisez une clé gérée par le client pour obtenir les fonctions suivantes.  
+ Vous créez et gérez la clé KMS, y compris en définissant les [politiques de clé](https://docs.aws.amazon.com/kms/latest/developerguide/key-policies.html), [politiques IAM](https://docs.aws.amazon.com/kms/latest/developerguide/iam-policies.html) et [octrois](https://docs.aws.amazon.com/kms/latest/developerguide/grants.html) pour contrôler l’accès à la clé KMS. Vous pouvez [activer et désactiver](https://docs.aws.amazon.com/kms/latest/developerguide/enabling-keys.html) la clé KMS, activer et désactiver la [rotation automatique des clés](https://docs.aws.amazon.com/kms/latest/developerguide/rotate-keys.html) et [supprimer la clé KMS](https://docs.aws.amazon.com/kms/latest/developerguide/deleting-keys.html) lorsqu’elle n’est plus utilisée.
+ Vous pouvez utiliser une clé gérée par le client avec un [élément de clé importé](https://docs.aws.amazon.com/kms/latest/developerguide/importing-keys.html) ou dans un [magasin de clés personnalisé](https://docs.aws.amazon.com/kms/latest/developerguide/custom-key-store-overview.html) que vous possédez et gérez. 
+ [Vous pouvez vérifier le chiffrement et le déchiffrement de votre table DynamoDB en examinant les appels d'API DynamoDB dans les journaux. AWS KMSAWS CloudTrail](https://docs.aws.amazon.com/kms/latest/developerguide/services-dynamodb.html#dynamodb-cmk-trail)
Utilisez le Clé gérée par AWS si vous avez besoin de l'une des fonctionnalités suivantes :  
+ Vous pouvez [afficher la clé KMS](https://docs.aws.amazon.com/kms/latest/developerguide/viewing-keys.html) et sa [politique associée](https://docs.aws.amazon.com/kms/latest/developerguide/key-policy-viewing.html). (Vous ne pouvez pas modifier la politique de clé.)
+ [Vous pouvez vérifier le chiffrement et le déchiffrement de votre table DynamoDB en examinant les appels d'API DynamoDB dans les journaux. AWS KMSAWS CloudTrail](https://docs.aws.amazon.com/kms/latest/developerguide/services-dynamodb.html#dynamodb-cmk-trail)
Cependant, il Clé détenue par AWS est gratuit et son utilisation n'est pas prise en compte dans les [quotas de AWS KMS ressources ou de demandes](https://docs.aws.amazon.com/kms/latest/developerguide/limits.html). Le client gère les clés et Clés gérées par AWS [des frais sont facturés pour chaque appel d'](https://aws.amazon.com/kms/pricing/)API. AWS KMS Des quotas s'appliquent à ces clés KMS.

**Clés de table**  
DynamoDB utilise la clé KMS de la table pour [générer](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKey.html) et chiffrer une [clé de données](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#data-keys) unique pour la table, appelée *clé de table*. La clé de table est conservée pendant toute la durée de vie de la table chiffrée.   
La clé de table est utilisée en tant que clé de chiffrement de clé. DynamoDB utilise cette clé de table pour protéger les clés de chiffrement des données utilisées pour chiffrer les données de la table. DynamoDB génère une clé de chiffrement des données unique pour chaque structure sous-jacente dans une table, mais plusieurs éléments de table peuvent être protégés par la même clé de chiffrement des données.  

![\[Chiffrement d’une table DynamoDB avec chiffrement au repos\]](http://docs.aws.amazon.com/fr_fr/amazondynamodb/latest/developerguide/images/service-ddb-encrypt.png)

Lorsque vous accédez pour la première fois à une table chiffrée, DynamoDB envoie une demande d'utilisation de la clé KMS AWS KMS pour déchiffrer la clé de table. Ensuite, il utilise la clé de table en texte brut pour déchiffrer les clés de chiffrement de données et utilise les clés de chiffrement de données en texte brut pour déchiffrer les données de table.  
DynamoDB stocke et utilise la clé de table et les clés de chiffrement des données en dehors de. AWS KMS Il protège toutes les clés avec les clés de chiffrement [Advanced Encryption Standard](https://en.wikipedia.org/wiki/Advanced_Encryption_Standard) (AES) et 256 bits. Ensuite, il stocke les clés chiffrées avec les données chiffrées afin qu’elles soient disponibles pour déchiffrer les données de table à la demande.  
Si vous modifiez la clé KMS de votre table, DynamoDB génère une nouvelle clé de table. Il utilise ensuite la nouvelle clé de table pour chiffrer de nouveau les clés de chiffrement des données.

**Mise en cache des clés de table**  
Pour éviter d'appeler AWS KMS chaque opération DynamoDB, DynamoDB met en cache les clés de table en texte brut pour chaque appelant en mémoire. Si DynamoDB reçoit une demande pour la clé de table mise en cache après cinq minutes d'inactivité, il envoie une nouvelle demande AWS KMS pour déchiffrer la clé de table. Cet appel capturera toutes les modifications apportées aux politiques d'accès de la clé KMS dans AWS KMS ou Gestion des identités et des accès AWS (IAM) depuis la dernière demande de déchiffrement de la clé de table.

## Autoriser l’utilisation de votre clé KMS
<a name="dynamodb-kms-authz"></a>

Si vous utilisez une [clé gérée par le client](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#customer-cmk) ou la [Clé gérée par AWS](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#aws-managed-cmk) dans votre compte pour protéger votre table DynamoDB, les politiques associées à cette clé KMS doivent accorder à DynamoDB l’autorisation de l’utiliser en votre nom. Le contexte d'autorisation de DynamoDB inclut sa politique clé et octroie à cette dernière les autorisations nécessaires pour l'utiliser. Clé gérée par AWS 

Vous avez un contrôle total des politiques et des octrois sur une clé gérée par le client. La Clé gérée par AWS est dans votre compte, vous pouvez donc consulter ses politiques et octrois. Mais, comme il est géré par AWS, vous ne pouvez pas modifier les politiques.

DynamoDB n'a pas besoin d'autorisation supplémentaire pour utiliser la [Clé détenue par AWS](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#kms_keys)valeur par défaut afin de protéger les tables DynamoDB de votre. Compte AWS

**Topics**
+ [Politique clé pour un Clé gérée par AWS](#dynamodb-policies)
+ [Politique de clé pour une clé gérée par le client](#dynamodb-customer-cmk-policy)
+ [Utilisation d’octrois pour autoriser DynamoDB](#dynamodb-grants)

### Politique clé pour un Clé gérée par AWS
<a name="dynamodb-policies"></a>

Quand DynamoDB utilise la [Clé gérée par AWS](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#aws-managed-cmk) pour DynamoDB (`aws/dynamodb`) dans les opérations cryptographiques, il le fait au nom de l’utilisateur qui accède à la [ressource DynamoDB](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/access-control-overview.html). La politique clé sur le Clé gérée par AWS donne à tous les utilisateurs du compte l'autorisation d'utiliser le Clé gérée par AWS pour des opérations spécifiées. Toutefois, l’autorisation est accordée uniquement lorsque DynamoDB effectue cette demande pour le compte de l’utilisateur. La [ViaService condition](https://docs.aws.amazon.com/kms/latest/developerguide/policy-conditions.html#conditions-kms-via-service) contenue dans la politique des clés n'autorise aucun utilisateur à utiliser le, Clé gérée par AWS sauf si la demande provient du service DynamoDB.

Cette politique clé, comme les politiques de toutes Clés gérées par AWS, est établie par AWS. Vous ne pouvez pas la modifier, mais vous pouvez la visualiser à tout moment. Pour plus d’informations, consultez [Affichage d’une stratégie de clé](https://docs.aws.amazon.com//kms/latest/developerguide/key-policy-viewing.html).

Les instructions de politique de la politique de clé ont l’effet suivant :
+ Autorisez les utilisateurs du compte à utiliser le Clé gérée par AWS for DynamoDB dans les opérations cryptographiques lorsque la demande provient de DynamoDB en leur nom. La politique autorise également les utilisateurs à [créer des octrois](https://docs.aws.amazon.com/kms/latest/developerguide/services-dynamodb.html#dynamodb-grants) pour la clé KMS.
+ Autorise les identités IAM autorisées dans le compte à afficher les propriétés du Clé gérée par AWS pour DynamoDB et à [révoquer l’octroi](https://docs.aws.amazon.com/kms/latest/APIReference/API_RevokeGrant.html) qui permet à DynamoDB d’utiliser la clé KMS. DynamoDB utilise des [octrois](https://docs.aws.amazon.com/kms/latest/developerguide/services-dynamodb.html#dynamodb-grants) pour les opérations de maintenance en cours.
+ Permet à DynamoDB d'effectuer des opérations en lecture seule pour trouver le Clé gérée par AWS DynamoDB dans votre compte.

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Id" : "auto-dynamodb-1",
  "Statement" : [ {
    "Sid" : "Allow access through Amazon DynamoDB for all principals in the account that are authorized to use Amazon DynamoDB",
    "Effect" : "Allow",
    "Principal" : {
      "AWS" : "*"
    },
    "Action" : [ "kms:Encrypt", "kms:Decrypt", "kms:ReEncrypt*", "kms:GenerateDataKey*", "kms:CreateGrant", "kms:DescribeKey" ],
    "Resource" : "*",
    "Condition" : {
      "StringEquals" : {
        "kms:CallerAccount" : "111122223333",
        "kms:ViaService" : "dynamodb.us-west-2.amazonaws.com"
      }
    }
  }, {
    "Sid" : "Allow direct access to key metadata to the account",
    "Effect" : "Allow",
    "Principal" : {
      "AWS" : "arn:aws:iam::111122223333:root"
    },
    "Action" : [ "kms:Describe*", "kms:Get*", "kms:List*", "kms:RevokeGrant" ],
    "Resource" : "*"
  }, {
    "Sid" : "Allow DynamoDB Service with service principal name dynamodb.amazonaws.com to describe the key directly",
    "Effect" : "Allow",
    "Principal" : {
      "Service" : "dynamodb.amazonaws.com"
    },
    "Action" : [ "kms:Describe*", "kms:Get*", "kms:List*" ],
    "Resource" : "*"
  } ]
}
```

------

### Politique de clé pour une clé gérée par le client
<a name="dynamodb-customer-cmk-policy"></a>

Lorsque vous sélectionnez une [clé gérée par le client](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#customer-cmk) pour protéger une table DynamoDB, DynamoDB obtient l’autorisation d’utiliser la clé KMS pour le compte du principal qui effectue la sélection. Ce principal, un utilisateur ou un rôle, doit disposer des autorisations requises par DynamoDB sur la clé KMS. Vous pouvez fournir ces autorisations dans une [politique de clé](https://docs.aws.amazon.com/kms/latest/developerguide/key-policies.html), une [politique IAM](https://docs.aws.amazon.com/kms/latest/developerguide/iam-policies.html) ou un [octroi](https://docs.aws.amazon.com/kms/latest/developerguide/grants.html).

DynamoDB requiert au minimum les autorisations suivantes sur une clé gérée par le client :
+ [kms:Encrypt](https://docs.aws.amazon.com/kms/latest/APIReference/API_Encrypt.html)
+ [kms:Decrypt](https://docs.aws.amazon.com/kms/latest/APIReference/API_Decrypt.html)
+ [kms : ReEncrypt](https://docs.aws.amazon.com/kms/latest/APIReference/API_ReEncrypt.html) \$1 (pour kms: ReEncryptFrom et kms:ReEncryptTo)
+ kms : GenerateDataKey \$1 (pour [kms : GenerateDataKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKey.html) et [kms : GenerateDataKeyWithoutPlaintext](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKeyWithoutPlaintext.html))
+ [km : DescribeKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_DescribeKey.html)
+ [km : CreateGrant](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateGrant.html)

Par exemple, l’exemple de stratégie de clé suivant fournit uniquement les autorisations requises. La politique a les effets suivants :
+ Elle permet à DynamoDB d’utiliser la clé KMS dans les opérations cryptographiques et de créer des octrois, mais seulement lorsque ce service agit pour le compte des principals du compte qui ont l’autorisation d’utiliser DynamoDB. Si les principals spécifiés dans l’instruction de politique n’ont pas l’autorisation d’utiliser DynamoDB, l’appel échoue, même lorsqu’il provient du service DynamoDB. 
+ La clé de ViaService condition [kms :](https://docs.aws.amazon.com/kms/latest/developerguide/policy-conditions.html#conditions-kms-via-service) autorise les autorisations uniquement lorsque la demande provient de DynamoDB au nom des principaux acteurs répertoriés dans la déclaration de politique. Ces principals ne peuvent pas appeler ces opérations directement. Notez que la commande valeur `kms:ViaService`, `dynamodb.*.amazonaws.com`, possède un astérisque (\$1) dans la position Région. [DynamoDB doit être autorisé à être indépendant de tout élément Région AWS particulier afin de pouvoir effectuer des appels interrégionaux afin de prendre en charge les tables globales DynamoDB.](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/GlobalTables.html)
+ Elle accorde aux administrateurs de clés KMS (utilisateurs qui peuvent endosser le rôle `db-team`) un accès en lecture seule à la clé KMS et l’autorisation de révoquer les octrois, en particulier les [octrois requis par DynamoDB](#dynamodb-grants) pour protéger la table.

Avant d'utiliser un exemple de politique clé, remplacez les exemples de principes par des principes réels provenant de votre. Compte AWS

------
#### [ JSON ]

****  

```
{
  "Id": "key-policy-dynamodb",
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid" : "Allow access through Amazon DynamoDB for all principals in the account that are authorized to use Amazon DynamoDB",
      "Effect": "Allow",
      "Principal": {"AWS": "arn:aws:iam::111122223333:user/db-lead"},
      "Action": [
        "kms:Encrypt",
        "kms:Decrypt",
        "kms:ReEncrypt*",
        "kms:GenerateDataKey*",
        "kms:DescribeKey",
        "kms:CreateGrant"
      ],
      "Resource": "*",      
      "Condition": { 
         "StringLike": {
           "kms:ViaService" : "dynamodb.*.amazonaws.com"
         }
      }
    },
    {
      "Sid":  "Allow administrators to view the KMS key and revoke grants",
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::111122223333:role/db-team"
       },
      "Action": [
        "kms:Describe*",
        "kms:Get*",
        "kms:List*",
        "kms:RevokeGrant"
      ],
      "Resource": "*"
    }
  ]
}
```

------

### Utilisation d’octrois pour autoriser DynamoDB
<a name="dynamodb-grants"></a>

En plus des politiques de clé, DynamoDB utilise des octrois pour définir des autorisations sur une clé gérée par un client ou sur la Clé gérée par AWS pour DynamoDB (`aws/dynamodb`). Pour consulter les subventions associées à une clé KMS de votre compte, utilisez l'[ListGrants](https://docs.aws.amazon.com/kms/latest/APIReference/API_ListGrants.html)opération. DynamoDB n’a pas besoin d’octrois, ni d’autorisations supplémentaires, pour utiliser la [Clé détenue par AWS](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#aws-owned-cmk) et protéger votre table.

DynamoDB utilise les autorisations d’octroi lorsqu’il effectue des tâches de maintenance système en arrière-plan et de protection des données en continu. Il utilise également des octrois pour générer les [clés de table](https://docs.aws.amazon.com/kms/latest/developerguide/services-dynamodb.html#dynamodb-encrypt).

Chaque octroi est spécifique à une table. Si le compte inclut plusieurs tables chiffrées avec la même clé KMS, il existe un octroi de chaque type pour chaque table. L'autorisation est limitée par le contexte de [chiffrement DynamoDB](#dynamodb-encryption-context), qui inclut le nom de la table et l'ID, et elle inclut Compte AWS l'autorisation de [retirer la](https://docs.aws.amazon.com/kms/latest/APIReference/API_RetireGrant.html) subvention si elle n'est plus nécessaire. 

Pour créer les octrois, DynamoDB doit être autorisé à appeler `CreateGrant` au nom de l’utilisateur qui a créé la table chiffrée. En Clés gérées par AWS effet, DynamoDB `kms:CreateGrant` obtient l'autorisation de [la politique des clés](#dynamodb-policies), qui permet aux utilisateurs du compte d'[CreateGrant](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateGrant.html)appeler la clé KMS uniquement lorsque DynamoDB fait la demande au nom d'un utilisateur autorisé. 

La politique de clé peut également permettre au compte de [révoquer l’octroi](https://docs.aws.amazon.com/kms/latest/APIReference/API_RevokeGrant.html) sur la clé KMS. Toutefois, si vous révoquez l’octroi sur une table chiffrée active, DynamoDB n’est pas en mesure de protéger ni de maintenir la table.

## Client de chiffrement DynamoDB
<a name="dynamodb-encryption-context"></a>

Un [contexte de chiffrement](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#encrypt_context) est un ensemble de paires clé-valeur qui contiennent des données non secrètes arbitraires. Lorsque vous incluez un contexte de chiffrement dans une demande de chiffrement de données, lie AWS KMS cryptographiquement le contexte de chiffrement aux données chiffrées. Pour déchiffrer les données, vous devez transmettre le même contexte de chiffrement. 

DynamoDB utilise le même contexte de chiffrement dans AWS KMS toutes les opérations cryptographiques. Si vous utilisez une [clé gérée par le client](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#customer-cmk) ou une [Clé gérée par AWS](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#aws-managed-cmk) pour protéger votre table DynamoDB, vous pouvez utiliser le contexte de chiffrement pour identifier l’utilisation de la clé KMS dans les enregistrements d’audit et les journaux. Il apparaît également en texte clair dans les journaux, tels que [AWS CloudTrail](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-user-guide.html)[Amazon CloudWatch Logs](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/WhatIsCloudWatchLogs.html). 

Le contexte de chiffrement peut également être utilisé comme condition d’autorisation dans les politiques et les octrois. DynamoDB utilise le contexte de chiffrement pour limiter les autorisations qui autorisent l'accès à [la](#dynamodb-grants) clé gérée par le client Clé gérée par AWS ou à votre compte et à votre région.

Dans ses demandes adressées à AWS KMS, DynamoDB utilise un contexte de chiffrement avec deux paires clé-valeur.

```
"encryptionContextSubset": {
    "aws:dynamodb:tableName": "Books"
    "aws:dynamodb:subscriberId": "111122223333"
}
```
+ **Table** – La première paire clé-valeur identifie la table chiffrée par DynamoDB. La clé est `aws:dynamodb:tableName`. La valeur correspond au nom de la table.

  ```
  "aws:dynamodb:tableName": "<table-name>"
  ```

  Par exemple :

  ```
  "aws:dynamodb:tableName": "Books"
  ```
+ **Compte** – La deuxième paire clé-valeur identifie le Compte AWS. La clé est `aws:dynamodb:subscriberId`. La valeur correspond à l’ID de compte.

  ```
  "aws:dynamodb:subscriberId": "<account-id>"
  ```

  Par exemple :

  ```
  "aws:dynamodb:subscriberId": "111122223333"
  ```

## Surveillance de l'interaction DynamoDB avec AWS KMS
<a name="dynamodb-cmk-trail"></a>

Si vous utilisez une [clé gérée par le client ou une clé [Clé gérée par AWS](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#aws-managed-cmk)](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#customer-cmk)pour protéger vos tables DynamoDB, vous pouvez AWS CloudTrail utiliser les journaux pour suivre les demandes que DynamoDB envoie en votre nom. AWS KMS 

Les demandes `GenerateDataKey`, `Decrypt` et `CreateGrant` sont présentées dans cette section. En outre, DynamoDB utilise [DescribeKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_DescribeKey.html)une opération pour déterminer si la clé KMS que vous avez sélectionnée existe dans le compte et dans la région. Il utilise également une [RetireGrant](https://docs.aws.amazon.com/kms/latest/APIReference/API_RetireGrant.html)opération pour supprimer une autorisation lorsque vous supprimez une table. 

**GenerateDataKey**  
Lorsque vous activez le chiffrement au repos sur une table, DynamoDB crée une clé de table unique. Il envoie une *[GenerateDataKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKey.html)*demande AWS KMS qui spécifie la clé KMS de la table.   
L’événement qui enregistre l’opération `GenerateDataKey` est similaire à l’exemple d’événement suivant. L’utilisateur est le compte de service DynamoDB. Les paramètres incluent l’Amazon Resource Name (ARN) de la clé KMS, un spécificateur de clé qui nécessite une clé de 256 bits et le [contexte de chiffrement](#dynamodb-encryption-context) qui identifie la table et le Compte AWS.  

```
{
    "eventVersion": "1.05",
    "userIdentity": {
        "type": "AWSService", 
        "invokedBy": "dynamodb.amazonaws.com" 
    },
    "eventTime": "2018-02-14T00:15:17Z",
    "eventSource": "kms.amazonaws.com",
    "eventName": "GenerateDataKey",
    "awsRegion": "us-west-2",
    "sourceIPAddress": "dynamodb.amazonaws.com",
    "userAgent": "dynamodb.amazonaws.com",
    "requestParameters": {
        "encryptionContext": {
            "aws:dynamodb:tableName": "Services",
            "aws:dynamodb:subscriberId": "111122223333"
        }, 
        "keySpec": "AES_256", 
        "keyId": "1234abcd-12ab-34cd-56ef-1234567890ab"
    }, 
    "responseElements": null,
    "requestID": "229386c1-111c-11e8-9e21-c11ed5a52190",
    "eventID": "e3c436e9-ebca-494e-9457-8123a1f5e979",
    "readOnly": true,
    "resources": [
        {
            "ARN": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab",
            "accountId": "111122223333",
            "type": "AWS::KMS::Key" 
        } 
    ],
    "eventType": "AwsApiCall",
    "recipientAccountId": "111122223333",
    "sharedEventID": "bf915fa6-6ceb-4659-8912-e36b69846aad"
}
```

**Decrypt**  
Lorsque vous accédez à une table DynamoDB chiffrée, DynamoDB a besoin de déchiffrer la clé de table pour pouvoir déchiffrer les clés situées au-dessous dans la hiérarchie. Il déchiffre ensuite les données de la table. Pour déchiffrer la clé de table. DynamoDB envoie [une](https://docs.aws.amazon.com/kms/latest/APIReference/API_Decrypt.html) demande AWS KMS de déchiffrement qui indique la clé KMS de la table.  
L’événement qui enregistre l’opération `Decrypt` est similaire à l’exemple d’événement suivant. L'utilisateur principal est Compte AWS celui qui accède à la table. Les paramètres incluent la clé de table cryptée (sous forme de blob de texte chiffré) et le [contexte de chiffrement](#dynamodb-encryption-context) qui identifie la table et le. Compte AWS AWS KMS déduit l'ID de la clé KMS à partir du texte chiffré.   

```
{
    "eventVersion": "1.05",
    "userIdentity": {
        "type": "AssumedRole",
        "principalId": "AROAIGDTESTANDEXAMPLE:user01",
        "arn": "arn:aws:sts::111122223333:assumed-role/Admin/user01",
        "accountId": "111122223333",
        "accessKeyId": "AKIAIOSFODNN7EXAMPLE",
        "sessionContext": {
            "attributes": {
                "mfaAuthenticated": "false", 
                "creationDate": "2018-02-14T16:42:15Z"
            },
            "sessionIssuer": {
                "type": "Role",
                "principalId": "AROAIGDT3HGFQZX4RY6RU",
                "arn": "arn:aws:iam::111122223333:role/Admin",
                "accountId": "111122223333",
                "userName": "Admin" 
            }
        },
        "invokedBy": "dynamodb.amazonaws.com"
    },
    "eventTime": "2018-02-14T16:42:39Z",
    "eventSource": "kms.amazonaws.com",
    "eventName": "Decrypt",
    "awsRegion": "us-west-2",
    "sourceIPAddress": "dynamodb.amazonaws.com",
    "userAgent": "dynamodb.amazonaws.com",
    "requestParameters": 
    {
        "encryptionContext":
        {
            "aws:dynamodb:tableName": "Books",
            "aws:dynamodb:subscriberId": "111122223333" 
        }
    }, 
    "responseElements": null, 
    "requestID": "11cab293-11a6-11e8-8386-13160d3e5db5",
    "eventID": "b7d16574-e887-4b5b-a064-bf92f8ec9ad3", 
    "readOnly": true, 
    "resources": [ 
        {
            "ARN": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab",
            "accountId": "111122223333", 
            "type": "AWS::KMS::Key" 
        }
    ],
    "eventType": "AwsApiCall", 
    "recipientAccountId": "111122223333"
}
```

**CreateGrant**  
Lorsque vous utilisez une [clé gérée par le client](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#customer-cmk) ou une [Clé gérée par AWS](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#aws-managed-cmk) pour protéger votre table DynamoDB, DynamoDB utilise des [octrois](#dynamodb-grants) pour autoriser le service à assurer une protection continue des données, ainsi que des tâches de maintenance et de durabilité. Ces octrois ne sont pas requis sur les [Clé détenue par AWS](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#aws-owned-cmk).  
Les octrois que DynamoDB crée sont spécifiques à une table. Le principal de la [CreateGrant](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateGrant.html)demande est l'utilisateur qui a créé la table.   
L’événement qui enregistre l’opération `CreateGrant` est similaire à l’exemple d’événement suivant. Les paramètres incluent l’Amazon Resource Name (ARN) de la clé KMS de la table, le principal bénéficiaire et le principal de retrait (le service DynamoDB), ainsi que les opérations couvertes par l’octroi. Il inclut également une contrainte qui exige que toutes les opération de chiffrement utilisent le [contexte de chiffrement](#dynamodb-encryption-context) spécifié.  

```
{ 
    "eventVersion": "1.05", 
    "userIdentity": 
    { 
        "type": "AssumedRole", 
        "principalId": "AROAIGDTESTANDEXAMPLE:user01", 
        "arn": "arn:aws:sts::111122223333:assumed-role/Admin/user01", 
        "accountId": "111122223333", 
        "accessKeyId": "AKIAIOSFODNN7EXAMPLE", 
        "sessionContext": { 
            "attributes": { 
                "mfaAuthenticated": "false", 
                "creationDate": "2018-02-14T00:12:02Z" 
            }, 
            "sessionIssuer": { 
                "type": "Role", 
                "principalId": "AROAIGDTESTANDEXAMPLE", 
                "arn": "arn:aws:iam::111122223333:role/Admin", 
                "accountId": "111122223333", 
                "userName": "Admin" 
            }
        }, 
        "invokedBy": "dynamodb.amazonaws.com" 
    }, 
    "eventTime": "2018-02-14T00:15:15Z", 
    "eventSource": "kms.amazonaws.com", 
    "eventName": "CreateGrant", 
    "awsRegion": "us-west-2", 
    "sourceIPAddress": "dynamodb.amazonaws.com", 
    "userAgent": "dynamodb.amazonaws.com", 
    "requestParameters": { 
        "keyId": "1234abcd-12ab-34cd-56ef-1234567890ab", 
        "retiringPrincipal": "dynamodb.us-west-2.amazonaws.com", 
        "constraints": { 
            "encryptionContextSubset": {
                "aws:dynamodb:tableName": "Books",
                "aws:dynamodb:subscriberId": "111122223333" 
            } 
        }, 
        "granteePrincipal": "dynamodb.us-west-2.amazonaws.com", 
        "operations": [ 
            "DescribeKey", 
            "GenerateDataKey", 
            "Decrypt", 
            "Encrypt", 
            "ReEncryptFrom", 
            "ReEncryptTo", 
            "RetireGrant" 
        ] 
    }, 
    "responseElements": { 
        "grantId": "5c5cd4a3d68e65e77795f5ccc2516dff057308172b0cd107c85b5215c6e48bde" 
    }, 
    "requestID": "2192b82a-111c-11e8-a528-f398979205d8", 
    "eventID": "a03d65c3-9fee-4111-9816-8bf96b73df01", 
    "readOnly": false, 
    "resources": [ 
        { 
            "ARN": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab",
            "accountId": "111122223333", 
            "type": "AWS::KMS::Key" 
        } 
    ], 
    "eventType": "AwsApiCall",
    "recipientAccountId": "111122223333"
}
```

# Gestion des tables chiffrées dans DynamoDB
<a name="encryption.tutorial"></a>

Vous pouvez utiliser le AWS Management Console ou le AWS Command Line Interface (AWS CLI) pour spécifier la clé de chiffrement sur les nouvelles tables et mettre à jour les clés de chiffrement sur les tables existantes dans Amazon DynamoDB.

**Topics**
+ [Définition de la clé de chiffrement pour une nouvelle table](#encryption.tutorial-creating)
+ [Mise à jour d’une clé de chiffrement](#encryption.tutorial-update)

## Définition de la clé de chiffrement pour une nouvelle table
<a name="encryption.tutorial-creating"></a>

Suivez ces étapes pour spécifier la clé de chiffrement sur une nouvelle table à l’aide de la console Amazon DynamoDB ou de l’ AWS CLI.

### Création d’une table chiffrée (console)
<a name="encryption.tutorial-console"></a>

1. Connectez-vous à la console DynamoDB AWS Management Console et ouvrez-la à l'adresse. [https://console.aws.amazon.com/dynamodb/](https://console.aws.amazon.com/dynamodb/)

1.  Dans le volet de navigation sur le côté gauche de la console, choisissez **Tables**.

1. Choisissez **Créer une table**. Comme **Nom de la table**, entrez **Music**. Pour la clé principale, saisissez**Artist**, puis, pour la clé de tri, saisissez**SongTitle**, ces deux valeurs devant être sous forme de chaîne.

1. Dans **Settings** (Paramètres), assurez-vous que l’option **Customize settings** (Personnaliser les paramètres) est sélectionnée.
**Note**  
Si **l'option Utiliser les paramètres par défaut** est sélectionnée, les tables sont chiffrées Clé détenue par AWS au repos sans frais supplémentaires.

1. Sous **Chiffrement au repos**, choisissez un type de chiffrement - Clé détenue par AWS Clé gérée par AWS, ou une clé gérée par le client.
   +  **Détenu par Amazon DynamoDB.** AWS clé possédée, spécifiquement détenue et gérée par DynamoDB. Aucun frais supplémentaire ne vous est facturé pour l’utilisation de cette clé.
   + **AWS clé gérée**. alias de clé (`aws/dynamodb`). La clé est enregistrée dans votre compte et est gérée par AWS Key Management Service (AWS KMS). AWS KMS des frais s'appliquent.
   +  **Stockée dans votre compte, et vous en êtes le propriétaire et le gestionnaire.** Clé gérée par le client. La clé est enregistrée dans votre compte et est gérée par AWS Key Management Service (AWS KMS). AWS KMS des frais s'appliquent.
**Note**  
Si vous choisissez de posséder et de gérer votre propre clé, assurez-vous que la politique des clés de KMS est correctement définie. Pour plus d’informations, consultez la [politique relative aux clés gérées par le client](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#customer-cmk).

1. Choisissez **Create table** (Créer une table) pour créer la table chiffrée. Pour confirmer le type de chiffrement, sélectionnez les détails de la table dans l’onglet **Overview** (Vue d’ensemble) et examinez la section **Additional details** (Détails supplémentaires).

### Création d’une table chiffrée (AWS CLI)
<a name="encryption.tutorial-cli"></a>

Utilisez le AWS CLI pour créer une table avec la clé par défaut Clé détenue par AWS, la Clé gérée par AWS, ou une clé gérée par le client pour Amazon DynamoDB.

**Pour créer une table chiffrée avec la valeur par défaut Clé détenue par AWS**
+ Créez la table chiffrée `Music` comme suit :

  ```
  aws dynamodb create-table \
    --table-name Music \
    --attribute-definitions \
        AttributeName=Artist,AttributeType=S \
        AttributeName=SongTitle,AttributeType=S \
    --key-schema \
        AttributeName=Artist,KeyType=HASH \
        AttributeName=SongTitle,KeyType=RANGE \
    --provisioned-throughput \
        ReadCapacityUnits=10,WriteCapacityUnits=5
  ```
**Note**  
Cette table est désormais chiffrée à l'aide de la valeur par défaut Clé détenue par AWS dans le compte de service DynamoDB.

**Pour créer une table chiffrée à l'aide de Clé gérée par AWS for DynamoDB**
+ Créez la table chiffrée `Music` comme suit :

  ```
  aws dynamodb create-table \
    --table-name Music \
    --attribute-definitions \
        AttributeName=Artist,AttributeType=S \
        AttributeName=SongTitle,AttributeType=S \
    --key-schema \
        AttributeName=Artist,KeyType=HASH \
        AttributeName=SongTitle,KeyType=RANGE \
    --provisioned-throughput \
        ReadCapacityUnits=10,WriteCapacityUnits=5 \
    --sse-specification Enabled=true,SSEType=KMS
  ```

   Le statut `SSEDescription` de la description de la table est défini sur `ENABLED` et le `SSEType` est `KMS`. 

  ```
  "SSEDescription": {
    "SSEType": "KMS",
    "Status": "ENABLED",
    "KMSMasterKeyArn": "arn:aws:kms:us-east-1:123456789012:key/abcd1234-abcd-1234-a123-ab1234a1b234",
  }
  ```

**Pour créer une table chiffrée avec une clé gérée par le client pour DynamoDB**
+ Créez la table chiffrée `Music` comme suit :

  ```
  aws dynamodb create-table \
    --table-name Music \
    --attribute-definitions \
        AttributeName=Artist,AttributeType=S \
        AttributeName=SongTitle,AttributeType=S \
    --key-schema \
        AttributeName=Artist,KeyType=HASH \
        AttributeName=SongTitle,KeyType=RANGE \
    --provisioned-throughput \
        ReadCapacityUnits=10,WriteCapacityUnits=5 \
    --sse-specification Enabled=true,SSEType=KMS,KMSMasterKeyId=abcd1234-abcd-1234-a123-ab1234a1b234
  ```
**Note**  
Pour le`KMSMasterKeyId`, vous pouvez utiliser un ID de clé, un ARN de clé ou un alias de clé. Si vous utilisez un alias de clé (par exemple,`alias/my-key`), DynamoDB résout l'alias et associe la clé AWS KMS sous-jacente à la table. Dans la description du tableau, l'ARN de la clé résolue `KMSMasterKeyArn` sera toujours affiché, et non l'alias. Pour plus d'informations sur les identificateurs de clé, consultez la section [Identifiants de clé (KeyId)](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#key-id) dans le guide du *AWS Key Management Service développeur*.

   Le statut `SSEDescription` de la description de la table est défini sur `ENABLED` et le `SSEType` est `KMS`.

  ```
  "SSEDescription": {
    "SSEType": "KMS",
    "Status": "ENABLED",
    "KMSMasterKeyArn": "arn:aws:kms:us-east-1:123456789012:key/abcd1234-abcd-1234-a123-ab1234a1b234",
  }
  ```

## Mise à jour d’une clé de chiffrement
<a name="encryption.tutorial-update"></a>

Vous pouvez également utiliser la console DynamoDB ou le pour mettre à jour AWS CLI les clés de chiffrement d'une table existante entre une clé Clé gérée par AWS, et Clé détenue par AWS une clé gérée par le client à tout moment.

### Mise à jour d’une clé de chiffrement (console)
<a name="encryption.tutorial-update-console"></a>

1. Connectez-vous à la console DynamoDB AWS Management Console et ouvrez-la à l'adresse. [https://console.aws.amazon.com/dynamodb/](https://console.aws.amazon.com/dynamodb/)

1.  Dans le volet de navigation sur le côté gauche de la console, choisissez **Tables**.

1. Choisissez la table que vous voulez mettre à jour.

1. Sélectionnez la liste déroulante **Actions**, puis l’option **Update settings** (Mettre à jour les paramètres ).

1. Accédez à l’onglet **Additional settings** (Paramètres supplémentaires).

1. Sous **Encryption** (Chiffrement), choisissez **Manage encryption** (Gérer le chiffrement).

1. Choisissez un type de chiffrement :
   +  **Détenue par Amazon DynamoDB.** La AWS KMS clé est détenue et gérée par DynamoDB. Aucun frais supplémentaire ne vous est facturé pour l’utilisation de cette clé.
   + **AWS clé gérée** Alias de clé :`aws/dynamodb`. La clé est enregistrée dans votre compte et est gérée par AWS Key Management Service. (AWS KMS). AWS KMS des frais s'appliquent.
   +  **Stockée dans votre compte, et vous en êtes le propriétaire et le gestionnaire.** La clé est enregistrée dans votre compte et est gérée par AWS Key Management Service. (AWS KMS). AWS KMS des frais s'appliquent.
**Note**  
Si vous choisissez de posséder et de gérer votre propre clé, assurez-vous que la politique des clés de KMS est correctement définie. Pour plus d’informations, consultez [Politique de clé pour une clé gérée par le client](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#customer-cmk).

   Choisissez ensuite **Enregistrer** pour mettre à jour la table chiffrée. Pour vérifier le type de chiffrement, consultez les détails de la table sous l’onglet **Présentation**.

### Mise à jour d’une clé de chiffrement (AWS CLI)
<a name="encryption.tutorial-update-cli"></a>

Les exemples suivants illustrent comment mettre à jour une table chiffrée à l’aide de l’ AWS CLI.

**Pour mettre à jour une table chiffrée avec la valeur par défaut Clé détenue par AWS**
+ Mettez à jour la table `Music` chiffrée, comme dans l’exemple suivant.

  ```
  aws dynamodb update-table \
    --table-name Music \
    --sse-specification Enabled=false
  ```
**Note**  
Cette table est désormais chiffrée à l'aide de la valeur par défaut Clé détenue par AWS dans le compte de service DynamoDB.

**Pour mettre à jour une table chiffrée avec le Clé gérée par AWS pour DynamoDB**
+ Mettez à jour la table `Music` chiffrée, comme dans l’exemple suivant.

  ```
  aws dynamodb update-table \
    --table-name Music \
    --sse-specification Enabled=true
  ```

   Le statut `SSEDescription` de la description de la table est défini sur `ENABLED` et le `SSEType` est `KMS`.

  ```
  "SSEDescription": {
    "SSEType": "KMS",
    "Status": "ENABLED",
    "KMSMasterKeyArn": "arn:aws:kms:us-east-1:123456789012:key/abcd1234-abcd-1234-a123-ab1234a1b234",
  }
  ```

**Pour mettre à jour une table chiffrée avec une clé gérée par le client pour DynamoDB**
+ Mettez à jour la table `Music` chiffrée, comme dans l’exemple suivant.

  ```
  aws dynamodb update-table \
    --table-name Music \
    --sse-specification Enabled=true,SSEType=KMS,KMSMasterKeyId=abcd1234-abcd-1234-a123-ab1234a1b234
  ```
**Note**  
Pour le`KMSMasterKeyId`, vous pouvez utiliser un ID de clé, un ARN de clé ou un alias de clé. Si vous utilisez un alias de clé (par exemple,`alias/my-key`), DynamoDB résout l'alias et associe la clé AWS KMS sous-jacente à la table. Dans la description du tableau, l'ARN de la clé résolue `KMSMasterKeyArn` sera toujours affiché, et non l'alias.

   Le statut `SSEDescription` de la description de la table est défini sur `ENABLED` et le `SSEType` est `KMS`. 

  ```
  "SSEDescription": {
    "SSEType": "KMS",
    "Status": "ENABLED",
    "KMSMasterKeyArn": "arn:aws:kms:us-east-1:123456789012:key/abcd1234-abcd-1234-a123-ab1234a1b234",
  }
  ```