

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.

# Sécurité et conformité dans Amazon DynamoDB
<a name="security"></a>

La sécurité du cloud AWS est la priorité absolue. En tant que AWS client, vous bénéficiez d'un centre de données et d'une architecture réseau conçus pour répondre aux exigences des entreprises les plus sensibles en matière de sécurité.

La sécurité est une responsabilité partagée entre vous AWS et vous. Le [modèle de responsabilité partagée](https://aws.amazon.com/compliance/shared-responsibility-model/) décrit cette notion par les termes sécurité *du* cloud et sécurité *dans* le cloud :
+ **Sécurité du cloud** : AWS est chargée de protéger l'infrastructure qui exécute les AWS services dans le AWS cloud. AWS vous fournit également des services que vous pouvez utiliser en toute sécurité. L’efficacité de notre sécurité est régulièrement testée et vérifiée par des auditeurs tiers dans le cadre des [programmes de conformitéAWS](https://aws.amazon.com/compliance/programs/). Pour en savoir plus sur les programmes de conformité qui s’appliquent à DynamoDB, consultez [Services AWS concernés par le programme de conformité](https://aws.amazon.com/compliance/services-in-scope/).
+ **Sécurité dans le cloud** — Votre responsabilité est déterminée par le AWS service que vous utilisez. Vous êtes également responsable d’autres facteurs, y compris la sensibilité de vos données, les exigences de votre organisation, et la législation et la réglementation applicables.

Cette documentation vous aide à comprendre comment appliquer le modèle de responsabilité partagée lors de l’utilisation de DynamoDB. Les rubriques suivantes vous montrent comment configurer DynamoDB pour répondre à vos objectifs de sécurité et de conformité. Vous apprendrez également à utiliser d'autres AWS services qui peuvent vous aider à surveiller et à sécuriser vos ressources DynamoDB.

**Topics**
+ [AWS politiques gérées pour Amazon DynamoDB](ddb-security-iam.awsmanpol.md)
+ [Utilisation de politiques basées sur des ressources pour DynamoDB](access-control-resource-based.md)
+ [Utilisation du contrôle d’accès par attributs avec DynamoDB](attribute-based-access-control.md)
+ [Protection des données dans DynamoDB](data-protection.md)
+ [Gestion des identités et des accès AWS (IAM) et DynamoDB](identity-and-access-mgmt.md)
+ [Validation de la conformité par l’industrie pour DynamoDB](Compliance.md)
+ [Résilience et reprise après sinistre dans Amazon DynamoDB](disaster-recovery-resiliency.md)
+ [Sécurité de l’infrastructure dans Amazon DynamoDB](network-isolation.md)
+ [AWS PrivateLink pour DynamoDB](privatelink-interface-endpoints.md)
+ [Configuration et analyse des vulnérabilités dans Amazon DynamoDB](configuration-vulnerability.md)
+ [Bonnes pratiques de sécurité pour Amazon DynamoDB](best-practices-security.md)

# AWS politiques gérées pour Amazon DynamoDB
<a name="ddb-security-iam.awsmanpol"></a>

DynamoDB AWS utilise des politiques gérées pour définir un ensemble d'autorisations dont le service a besoin pour effectuer des actions spécifiques. DynamoDB gère et met à jour AWS ses politiques gérées. Vous ne pouvez pas modifier les autorisations dans les politiques AWS gérées. Pour plus d'informations sur les politiques AWS gérées, voir les [politiques AWS gérées](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_managed-vs-inline.html#aws-managed-policies) dans le guide de l'utilisateur IAM.

DynamoDB peut parfois ajouter des autorisations supplémentaires à AWS une politique gérée pour prendre en charge de nouvelles fonctionnalités. Ce type de mise à jour affecte toutes les identités (utilisateurs, groupes et rôles) auxquelles la politique est attachée. Une politique AWS gérée est très susceptible d'être mise à jour lorsqu'une nouvelle fonctionnalité est lancée ou lorsque de nouvelles opérations sont disponibles. DynamoDB ne supprimera pas les autorisations d' AWS une politique gérée. Les mises à jour des politiques n'endommageront donc pas vos autorisations existantes. Pour obtenir la liste complète des politiques AWS gérées, consultez la section [stratégies AWS gérées](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/policy-list.html).

## AWS politique gérée : Dynamo DBReplication ServiceRolePolicy
<a name="ddb-security-iam.awsmanpol.policy"></a>

Vous ne pouvez pas attacher la politique `DynamoDBReplicationServiceRolePolicy` à vos entités IAM. Cette politique est attachée à un rôle lié au service qui permet à DynamoDB d’effectuer des actions en votre nom. Pour plus d’informations, consultez [Utilisation d’IAM avec des tables globales](globaltables-security.md).

Cette politique accorde des autorisations qui permettent au rôle lié au service d’effectuer une réplication de données entre des réplicas de tables globales. Elle accorde également des autorisations administratives pour gérer les réplicas de tables globales en votre nom.

**Détails de l’autorisation**

Cette politique accorde les autorisations suivantes :
+ `dynamodb` : réaliser la réplication des données et gérer les réplicas de tables.
+ `application-autoscaling` : extraire et gérer les paramètres d’autoscaling des tables
+ `account` : récupérer le statut de la région pour évaluer l’accessibilité des réplicas.
+ `iam` : pour créer le rôle lié à un service pour Application Auto Scaling dans le cas où le rôle lié au service n’existerait pas déjà.

La définition de cette politique gérée se trouve [ici](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/DynamoDBReplicationServiceRolePolicy.html).

## AWS politique gérée : AmazonDynamo DBFull Access\$1v2
<a name="ddb-security-iam.awsmanpol.fullaccesspolicy-v2"></a>

La politique `AmazonDynamoDBFullAccess_v2` limitée accorde des privilèges d’accès spécifiques aux utilisateurs. Vous pouvez associer la politique `AmazonDynamoDBFullAccess_v2` à vos identités IAM. Cette politique accorde un accès administratif aux ressources Amazon DynamoDB et accorde à une identité IAM (telle qu'un utilisateur, un groupe ou un rôle) un accès aux ressources Services AWS auxquelles DynamoDB est intégré afin d'utiliser toutes les fonctionnalités de DynamoDB. L’utilisation de cette politique permet d’accéder à toutes les fonctionnalités de DynamoDB disponibles dans la AWS Management Console.

**Détails de l’autorisation**

Cette politique inclut les autorisations suivantes :
+ `Amazon DynamoDB`
+ `DynamoDB Accelerator`
+ `AWS KMS`
+ `Groupes de ressources AWS Tagging`
+ `Lambda`
+ `Application Auto Scaling`
+ `CloudWatch`
+ `Amazon Kinesis`
+ `Amazon EC2`
+ `IAM`

Pour consulter la politique sous `JSON` forme, consultez [AmazonDynamoDBFullAccess\$1v2](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonDynamoDBFullAccess_v2.html).

## AWS politique gérée : AmazonDynamo DBRead OnlyAccess
<a name="ddb-security-iam.awsmanpol.readonlypolicy"></a>

Vous pouvez associer la politique `AmazonDynamoDBReadOnlyAccess` à vos identités IAM.

Cette politique accorde un accès en lecture à Amazon DynamoDB.

**Détails de l’autorisation**

Cette politique inclut les autorisations suivantes :
+ `Amazon DynamoDB` : fournit un accès en lecture seule à Amazon DynamoDB.
+ `Amazon DynamoDB Accelerator (DAX)` : fournit un accès en lecture seule à Amazon DynamoDB Accelerator (DAX).
+ `Application Auto Scaling` : permet aux principaux de visualiser les configurations à partir d’Application Auto Scaling. Cela est nécessaire pour que les utilisateurs puissent afficher les politiques de mise à l’échelle automatique associées à une table.
+ `CloudWatch`— Permet aux principaux de consulter les données métriques et les alarmes configurées dans CloudWatch. Cela est nécessaire pour que les utilisateurs puissent voir la taille de la table facturable et les CloudWatch alarmes configurées pour une table.
+ `AWS Data Pipeline`— Permet aux principaux de visualiser AWS Data Pipeline les objets associés.
+ `Amazon EC2`— Permet aux principaux de consulter Amazon VPCs EC2, les sous-réseaux et les groupes de sécurité.
+ `IAM` : permet aux principaux d’afficher les rôles IAM.
+ `AWS KMS`— Permet aux principaux d'afficher les clés configurées dans AWS KMS. Cela est nécessaire pour que les utilisateurs puissent voir AWS KMS keys ce qu'ils créent et gèrent dans leur compte.
+ `Amazon SNS` : permet aux principaux de répertorier les rubriques Amazon SNS et les abonnements par rubrique.
+ `Groupes de ressources AWS` : permet aux principaux d’afficher les groupes de ressources et leurs requêtes.
+ `Groupes de ressources AWS Tagging` : permet aux principaux de répertorier toutes les ressources balisées ou précédemment balisées d’une région.
+ `Kinesis` : permet aux principaux de consulter les descriptions des flux de données Kinesis.
+ `Amazon CloudWatch Contributor Insights` : permet aux principaux de consulter les données de séries temporelles collectées par les règles Contributor Insights.

Pour consulter le `JSON` format de la politique, voir [AmazonDynamoDBReadOnlyAccess](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonDynamoDBReadOnlyAccess.html).

## Mises à jour DynamoDB des politiques gérées AWS
<a name="ddb-security-iam.awsmanpol.updates"></a>

Ce tableau présente les mises à jour apportées aux politiques de gestion des AWS accès pour DynamoDB.


****  

| Modifier | Description | Date de modification | 
| --- | --- | --- | 
| AmazonDynamoDBFullAccess : obsolète | Cette politique a été remplacée par une politique limitée nommée `AmazonDynamoDBFullAccess_v2`. Depuis **avril 2025,** vous ne pouvez plus attacher la politique `AmazonDynamoDBFullAccess` à de nouveaux utilisateurs, groupes ou rôles. Pour de plus amples informations, veuillez consulter [AWS politique gérée : AmazonDynamo DBFull Access\$1v2](#ddb-security-iam.awsmanpol.fullaccesspolicy-v2).  | 28 avril 2025 | 
| Mise à jour de AmazonDynamoDBReadOnlyAccess vers une politique existante | AmazonDynamoDBReadOnlyAccess a ajouté les autorisations dynamodb:GetAbacStatus et dynamodb:UpdateAbacStatus. Ces autorisations vous permettent de consulter le statut ABAC et d'activer ABAC pour vous Compte AWS dans la région actuelle. | 18 novembre 2024 | 
| Mise à jour de AmazonDynamoDBReadOnlyAccess vers une politique existante | AmazonDynamoDBReadOnlyAccess a ajouté l’autorisation dynamodb:GetResourcePolicy. Cette autorisation permet d’accéder aux politiques basées sur les ressources associées aux ressources DynamoDB. | 20 mars 2024 | 
| Mise à jour de DynamoDBReplicationServiceRolePolicy vers une politique existante | DynamoDBReplicationServiceRolePolicy a ajouté l’autorisation dynamodb:GetResourcePolicy. Cette autorisation permet au rôle lié au service de lire les politiques basées sur les ressources associées aux ressources DynamoDB. | 15 décembre 2023 | 
| Mise à jour de DynamoDBReplicationServiceRolePolicy vers une politique existante | DynamoDBReplicationServiceRolePolicy a ajouté l’autorisation account:ListRegions. Cette autorisation permet au rôle lié au service d’évaluer l’accessibilité des réplicas. | 10 mai 2023 | 
| DynamoDBReplicationServiceRolePolicy ajouté à la liste des politiques gérées | Ajout d’informations sur la politique gérée DynamoDBReplicationServiceRolePolicy, qui est utilisée par le rôle lié au service des tables globales DynamoDB. | 10 mai 2023 | 
| Les tables globales DynamoDB ont commencé à effectuer le suivi des modifications | Les tables globales DynamoDB ont commencé à suivre les modifications apportées à ses politiques gérées. AWS  | 10 mai 2023 | 

# Utilisation de politiques basées sur des ressources pour DynamoDB
<a name="access-control-resource-based"></a>

DynamoDB prend en charge les politiques basées sur les ressources pour les tables, les index et les flux. Les politiques basées sur les ressources vous permettent de définir les autorisations d’accès en spécifiant qui a accès à chaque ressource et les actions que cette personne est autorisée à effectuer sur chaque ressource.

Vous pouvez attacher une politique basée sur les ressources aux ressources DynamoDB, telles qu’une table ou un flux. Dans cette politique, vous spécifiez les autorisations pour les [principaux](https://docs.aws.amazon.com/IAM/latest/UserGuide/intro-structure.html#intro-structure-principal) d’Identity and Access Management (IAM) qui peuvent effectuer des actions spéciﬁques sur ces ressources DynamoDB. Par exemple, la politique attachée à une table contiendra des autorisations pour accéder à la table et à ses index. Par conséquent, les politiques basées sur les ressources peuvent vous aider à simplifier le contrôle d’accès pour vos tables, index et flux DynamoDB, en définissant des autorisations au niveau de la ressource. La taille maximale d’une politique que vous pouvez attacher à une ressource DynamoDB est de 20 Ko.

L’un des principaux avantages liés à l’utilisation de politiques basées sur les ressources est de simplifier le contrôle d’accès intercompte afin de le fournir aux principaux IAM dans différents Comptes AWS. Pour de plus amples informations, veuillez consulter [Politique basées sur les ressources pour l’accès intercompte](rbac-examples.md#rbac-examples-cross-account).

Les politiques basées sur les ressources prennent également en charge les intégrations avec l’analyseur d’accès externe d’[IAM Access Analyzer](https://docs.aws.amazon.com/IAM/latest/UserGuide/what-is-access-analyzer.html) et les fonctionnalités [Bloquer l’accès public (BPA)](rbac-bpa-rbp.md). IAM Access Analyzer signale l’accès intercompte aux entités externes spécifiées dans les politiques basées sur les ressources. Il fournit également de la visibilité pour vous aider à affiner les autorisations et à vous conformer au principe du moindre privilège. La fonctionnalité BPA vous aide à empêcher l’accès public à vos tables, index et flux DynamoDB, et elle est automatiquement activée dans les flux de travail de création et de modification de politiques basés sur les ressources.

[![AWS Videos](http://img.youtube.com/vi/https://www.youtube.com/embed/q9sBxrVgq4U?si=0cR4TJIlKvH9Wlu5/0.jpg)](http://www.youtube.com/watch?v=https://www.youtube.com/embed/q9sBxrVgq4U?si=0cR4TJIlKvH9Wlu5)


**Topics**
+ [Création d’une table avec une politique basée sur les ressources](rbac-create-table.md)
+ [Attache d’une politique à une table DynamoDB existante](rbac-attach-resource-based-policy.md)
+ [Attache d’une politique basée sur les ressources à un flux DynamoDB](rbac-attach-resource-policy-streams.md)
+ [Suppression d’une politique basée sur les ressources d’une table DynamoDB](rbac-delete-resource-based-policy.md)
+ [Accès intercompte avec des politiques basées sur les ressources dans DynamoDB](rbac-cross-account-access.md)
+ [Blocage de l’accès public à l’aide de politiques basées sur les ressources dans DynamoDB](rbac-bpa-rbp.md)
+ [Opérations d’API DynamoDB prises en charge par des politiques basées sur les ressources](rbac-iam-actions.md)
+ [Autorisation avec des politiques basées sur l’identité IAM et des politiques basées sur les ressources DynamoDB](rbac-auth-iam-id-based-policies-DDB.md)
+ [Exemples de politiques basées sur les ressources DynamoDB](rbac-examples.md)
+ [Considérations relatives aux politiques basées sur les ressources DynamoDB](rbac-considerations.md)
+ [Bonnes pratiques en matière de politiques basées sur les ressources DynamoDB](rbac-best-practices.md)

# Création d’une table avec une politique basée sur les ressources
<a name="rbac-create-table"></a>

[Vous pouvez ajouter une politique basée sur les ressources lorsque vous créez une table à l'aide de la console DynamoDB, de l'[CreateTable](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_CreateTable.html)API AWS CLI,AWS du SDK ou d'un modèle.](rbac-attach-resource-based-policy.md#rbac-attach-policy-java-sdk) CloudFormation 

## AWS CLI
<a name="rbac-create-table-CLI"></a>

L'exemple suivant crée une table nommée à *MusicCollection* l'aide de la `create-table` AWS CLI commande. Cette commande inclut également le paramètre `resource-policy` qui ajoute une politique basée sur les ressources à la table. Cette politique permet *John* à l'utilisateur d'effectuer les actions [RestoreTableToPointInTime[GetItem](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_GetItem.html)](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_RestoreTableToPointInTime.html),, et [PutItem](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_PutItem.html)d'API sur la table.

N'oubliez pas de remplacer le *italicized* texte par les informations spécifiques à votre ressource.

```
aws dynamodb create-table \
    --table-name MusicCollection \
    --attribute-definitions AttributeName=Artist,AttributeType=S AttributeName=SongTitle,AttributeType=S \
    --key-schema AttributeName=Artist,KeyType=HASH AttributeName=SongTitle,KeyType=RANGE \
    --provisioned-throughput ReadCapacityUnits=5,WriteCapacityUnits=5 \
    --resource-policy \
        "{
            \"Version\": \"2012-10-17\",		 	 	 
            \"Statement\": [
              {
                    \"Effect\": \"Allow\",
                    \"Principal\": {
                        \"AWS\": \"arn:aws:iam::123456789012:user/John\"
                    },
                    \"Action\": [
                        \"dynamodb:RestoreTableToPointInTime\",
                        \"dynamodb:GetItem\",
                        \"dynamodb:DescribeTable\"
                    ],
                    \"Resource\": \"arn:aws:dynamodb:us-west-2:123456789012:table/MusicCollection\"
                }
            ]
        }"
```

## AWS Management Console
<a name="rbac-create-table-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. Sur le tableau de bord, choisissez **Créer une table**.

1. Dans **Détails de la table**, saisissez le nom de la table, la clé de partition et les détails de la clé de tri.

1. Pour les **Paramètres de la table**, choisissez **Personnaliser les paramètres**.

1. (Facultatif) Spécifiez vos options pour la **Classe de table**, le **Calculateur de capacité**, les **Paramètres de capacité de lecture/écriture**, les **Index secondaires**, le **Chiffrement au repos** et la **Protection contre la suppression**.

1. Dans **Politique basée sur les ressources**, ajoutez une politique pour définir les autorisations d’accès pour la table et ses index. Dans cette politique, vous spécifiez quels utilisateurs ont accès à ces ressources et les actions qu’ils sont autorisés à effectuer sur chaque ressource. Pour ajouter une politique, effectuez l’une des actions suivantes :
   + Composez ou collez un document de politique JSON. Pour plus de détails sur le langage de politique IAM, consultez [Creating policies using the JSON editor](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create-console.html#access_policies_create-json-editor) dans le *Guide de l’utilisateur IAM*.
**Astuce**  
Pour voir des exemples de politiques basées sur les ressources dans le Guide de développement Amazon DynamoDB, sélectionnez **Exemples de politiques**.
   + Choisissez **Ajouter une nouvelle instruction** pour ajouter une nouvelle instruction et saisissez les informations dans les champs fournis. Répétez l’opération pour autant d’instructions que vous souhaitez ajouter.
**Important**  
Veillez à résoudre les avertissements de sécurité, les erreurs ou les suggestions avant d’enregistrer votre politique.

   L'exemple de politique IAM suivant permet *John* à l'utilisateur d'effectuer les actions [RestoreTableToPointInTime[GetItem](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_GetItem.html)](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_RestoreTableToPointInTime.html),, et [PutItem](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_PutItem.html)API sur la table*MusicCollection*.

   N'oubliez pas de remplacer le *italicized* texte par les informations spécifiques à votre ressource.

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

****  

   ```
   {
     "Version":"2012-10-17",		 	 	 
     "Statement": [
       {
         "Effect": "Allow",
         "Principal": {
           "AWS": "arn:aws:iam::123456789012:user/username"
         },
         "Action": [
           "dynamodb:RestoreTableToPointInTime",
           "dynamodb:GetItem",
           "dynamodb:PutItem"
         ],
         "Resource": "arn:aws:dynamodb:us-east-1:123456789012:table/MusicCollection"
       }
     ]
   }
   ```

------

1. (Facultatif) Choisissez **Preview external access** (Aperçu de l’accès externe) dans le coin inférieur droit pour avoir un aperçu de la façon dont votre nouvelle politique affecte l’accès public et l’accès intercompte à votre ressource. Avant d’enregistrer votre stratégie, vous pouvez vérifier si elle introduit de nouveaux résultats IAM Access Analyzer ou si elle résout les résultats existants. Si vous ne voyez pas d’analyseur actif, choisissez **Go to Access Analyzer** (Accédez à l’analyseur d’accès) pour [créer un analyseur de compte](https://docs.aws.amazon.com/IAM/latest/UserGuide/access-analyzer-getting-started.html#access-analyzer-enabling) dans l’analyseur d’accès IAM. Pour plus d’informations, consultez [Prévisualiser l’accès](https://docs.aws.amazon.com/IAM/latest/UserGuide/access-analyzer-access-preview.html).

1. Choisissez **Créer un tableau**.

## AWS CloudFormation modèle
<a name="rbac-create-table-cfn"></a>

------
#### [ Using the AWS::DynamoDB::Table resource ]

Le CloudFormation modèle suivant crée une table avec un flux à l'aide de la ressource [AWS::DynamoDB :](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-dynamodb-table.html) :Table. Ce modèle inclut également des politiques basées sur les ressources, associées à la fois à la table et au flux.

```
{
    "AWSTemplateFormatVersion": "2010-09-09",
    "Resources": {
        "MusicCollectionTable": {
            "Type": "AWS::DynamoDB::Table",
            "Properties": {
                "AttributeDefinitions": [
                    {
                        "AttributeName": "Artist",
                        "AttributeType": "S"
                    }
                ],
                "KeySchema": [
                    {
                        "AttributeName": "Artist",
                        "KeyType": "HASH"
                    }
                ],
                "BillingMode": "PROVISIONED",
                "ProvisionedThroughput": {
                    "ReadCapacityUnits": 5,
                    "WriteCapacityUnits": 5
                },
                "StreamSpecification": {
                  "StreamViewType": "OLD_IMAGE",
                  "ResourcePolicy": {
                    "PolicyDocument": {
                      "Version": "2012-10-17",		 	 	 
                      "Statement": [
                        {
                            "Principal": {
                                "AWS": "arn:aws:iam::111122223333:user/John"
                            },
                            "Effect": "Allow",
                            "Action": [
                                "dynamodb:GetRecords",
                                "dynamodb:GetShardIterator",
                                "dynamodb:DescribeStream"
                            ],
                            "Resource": "*"
                        }
                      ]
                    }
                  }
                },
                "TableName": "MusicCollection",
                "ResourcePolicy": {
                    "PolicyDocument": {
                        "Version": "2012-10-17",		 	 	 
                        "Statement": [
                            {
                                "Principal": {
                                    "AWS": [
                                        "arn:aws:iam::111122223333:user/John"
                                    ]
                                },
                                "Effect": "Allow",
                                "Action": "dynamodb:GetItem",
                                "Resource": "*"
                            }
                        ]
                    }
                }
            }
           
        }
    }
}
```

------
#### [ Using the AWS::DynamoDB::GlobalTable resource ]

Le CloudFormation modèle suivant crée une table avec la AWS GlobalTable ressource [::DynamoDB : :](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-dynamodb-globaltable.html) et attache une politique basée sur les ressources à la table et à son flux.

```
{
    "AWSTemplateFormatVersion": "2010-09-09",
    "Resources": {
        "GlobalMusicCollection": {
            "Type": "AWS::DynamoDB::GlobalTable",
            "Properties": {
                "TableName": "MusicCollection",
                "AttributeDefinitions": [{
                    "AttributeName": "Artist",
                    "AttributeType": "S"
                }],
                "KeySchema": [{
                    "AttributeName": "Artist",
                    "KeyType": "HASH"
                }],
                "BillingMode": "PAY_PER_REQUEST",
                "StreamSpecification": {
                    "StreamViewType": "NEW_AND_OLD_IMAGES"
                },
                "Replicas": [
                    {
                        "Region": "us-east-1",
                        "ResourcePolicy": {
                            "PolicyDocument": {
                                "Version": "2012-10-17",		 	 	 
                                "Statement": [{
                                    "Principal": {
                                        "AWS": [
                                            "arn:aws:iam::111122223333:user/John"
                                        ]
                                    },
                                    "Effect": "Allow",
                                    "Action": "dynamodb:GetItem",
                                    "Resource": "*"
                                }]
                            }
                        },
                        "ReplicaStreamSpecification": {
                            "ResourcePolicy": {
                                "PolicyDocument": {
                                    "Version": "2012-10-17",		 	 	 
                                    "Statement": [{
                                        "Principal": {
                                            "AWS": "arn:aws:iam::111122223333:user/John"
                                        },
                                        "Effect": "Allow",
                                        "Action": [
                                            "dynamodb:GetRecords",
                                            "dynamodb:GetShardIterator",
                                            "dynamodb:DescribeStream"
                                        ],
                                        "Resource": "*"
                                    }]
                                }
                            }
                        }
                    }
                ]
            }
        }
    }
}
```

------

# Attache d’une politique à une table DynamoDB existante
<a name="rbac-attach-resource-based-policy"></a>

[Vous pouvez associer une stratégie basée sur les ressources à une table existante ou modifier une stratégie existante à l'aide de la console DynamoDB, de l'[PutResourcePolicy](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_PutResourcePolicy.html)API AWS CLI, AWS du SDK ou d'un modèle.CloudFormation](rbac-create-table.md#rbac-create-table-cfn)

## AWS CLI exemple pour joindre une nouvelle politique
<a name="rbac-attach-policy-CLI"></a>

L'exemple de stratégie IAM suivant utilise la `put-resource-policy` AWS CLI commande pour associer une stratégie basée sur les ressources à une table existante. Cet exemple permet *John* à l'utilisateur d'effectuer les actions [GetItem[PutItem](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_PutItem.html)](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_GetItem.html), [UpdateItem](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_UpdateItem.html), et d'[UpdateTable](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_UpdateTable.html)API sur une table existante nommée*MusicCollection*.

N'oubliez pas de remplacer le *italicized* texte par les informations spécifiques à votre ressource.

```
aws dynamodb put-resource-policy \
    --resource-arn arn:aws:dynamodb:us-west-2:123456789012:table/MusicCollection \
    --policy \
        "{
            \"Version\": \"2012-10-17\",		 	 	 
            \"Statement\": [
              {
                    \"Effect\": \"Allow\",
                    \"Principal\": {
                        \"AWS\": \"arn:aws:iam::111122223333:user/John\"
                    },
                    \"Action\": [
                        \"dynamodb:GetItem\",
                        \"dynamodb:PutItem\",
                        \"dynamodb:UpdateItem\",
                        \"dynamodb:UpdateTable\"
                    ],
                    \"Resource\": \"arn:aws:dynamodb:us-west-2:123456789012:table/MusicCollection\"
                }
            ]
        }"
```

## AWS CLI exemple de mise à jour conditionnelle d'une politique existante
<a name="rbac-update-policy-CLI"></a>

Pour mettre à jour de manière conditionnelle la politique basée sur les ressources existante d’une table, vous pouvez utiliser le paramètre facultatif `expected-revision-id`. L’exemple suivant met à jour la politique uniquement si elle existe dans DynamoDB et si son ID de révision actuel correspond au paramètre `expected-revision-id` fourni.

```
aws dynamodb put-resource-policy \
    --resource-arn arn:aws:dynamodb:us-west-2:123456789012:table/MusicCollection \
    --expected-revision-id 1709841168699 \ 
    --policy \
        "{
            \"Version\": \"2012-10-17\",		 	 	 
            \"Statement\": [
              {
                    \"Effect\": \"Allow\",
                    \"Principal\": {
                        \"AWS\": \"arn:aws:iam::111122223333:user/John\"
                    },
                    \"Action\": [
                        \"dynamodb:GetItem\",
                        \"dynamodb:UpdateItem\",
                        \"dynamodb:UpdateTable\"
                    ],
                    \"Resource\": \"arn:aws:dynamodb:us-west-2:123456789012:table/MusicCollection\"
                }
            ]
        }"
```

## AWS Management Console
<a name="rbac-attach-policy-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. Sur le tableau de bord, choisissez une table existante.

1. Accédez à l’onglet **Autorisations**, puis choisissez **Créer une politique pour la table**.

1. Dans l’éditeur de politique basée sur les ressources, ajoutez la politique que vous souhaitez associer et choisissez **Créer une politique**.

   L'exemple de politique IAM suivant permet *John* à l'utilisateur d'effectuer les actions [GetItem[PutItem](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_PutItem.html)](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_GetItem.html),, [UpdateItem](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_UpdateItem.html), et d'[UpdateTable](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_UpdateTable.html)API sur une table existante nommée*MusicCollection*.

   N'oubliez pas de remplacer le *italicized* texte par les informations spécifiques à votre ressource.

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

****  

   ```
   {
     "Version":"2012-10-17",		 	 	 
     "Statement": [
       {
         "Effect": "Allow",
         "Principal": {
           "AWS": "arn:aws:iam::111122223333:user/username"
         },
         "Action": [
           "dynamodb:GetItem",
           "dynamodb:PutItem",
           "dynamodb:UpdateItem",
           "dynamodb:UpdateTable"
         ],
         "Resource": "arn:aws:dynamodb:us-east-1:123456789012:table/MusicCollection"
       }
     ]
   }
   ```

------

## AWS SDK for Java 2.x
<a name="rbac-attach-policy-java-sdk"></a>

L’exemple de politique IAM suivant utilise la méthode `putResourcePolicy` pour attacher une politique basée sur les ressources à une table existante. Cette politique permet à un utilisateur d'exécuter l'action d'[GetItem](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_GetItem.html)API sur une table existante.

```
import software.amazon.awssdk.regions.Region;
import software.amazon.awssdk.services.dynamodb.DynamoDbClient;
import software.amazon.awssdk.services.dynamodb.model.DynamoDbException;
import software.amazon.awssdk.services.dynamodb.model.PutResourcePolicyRequest;

/**
 * Before running this Java V2 code example, set up your development
 * environment, including your credentials.
 *
 * For more information, see the following documentation topic:
 *
 * [Get started with the AWS SDK for Java 2.x](https://docs.aws.amazon.com/sdk-for-java/latest/developer-guide/get-started.html)
 */
public class PutResourcePolicy {

    public static void main(String[] args) {
        final String usage = """

                Usage:
                    <tableArn> <allowedAWSPrincipal>

                Where:
                    tableArn - The Amazon DynamoDB table ARN to attach the policy to. For example, arn:aws:dynamodb:us-west-2:123456789012:table/MusicCollection.
                    allowed AWS Principal - Allowed AWS principal ARN that the example policy will give access to. For example, arn:aws:iam::123456789012:user/John.
                """;

        if (args.length != 2) {
            System.out.println(usage);
            System.exit(1);
        }

        String tableArn = args[0];
        String allowedAWSPrincipal = args[1];
        System.out.println("Attaching a resource-based policy to the Amazon DynamoDB table with ARN " +
                tableArn);
        Region region = Region.US_WEST_2;
        DynamoDbClient ddb = DynamoDbClient.builder()
                .region(region)
                .build();

        String result = putResourcePolicy(ddb, tableArn, allowedAWSPrincipal);
        System.out.println("Revision ID for the attached policy is " + result);
        ddb.close();
    }

    public static String putResourcePolicy(DynamoDbClient ddb, String tableArn, String allowedAWSPrincipal) {
        String policy = generatePolicy(tableArn, allowedAWSPrincipal);
        PutResourcePolicyRequest request = PutResourcePolicyRequest.builder()
                .policy(policy)
                .resourceArn(tableArn)
                .build();

        try {
            return ddb.putResourcePolicy(request).revisionId();
        } catch (DynamoDbException e) {
            System.err.println(e.getMessage());
            System.exit(1);
        }

        return "";
    }

    private static String generatePolicy(String tableArn, String allowedAWSPrincipal) {
        return "{\n" +
                "    \"Version\": \"2012-10-17\",\n" +,		 	 	 
                "    \"Statement\": [\n" +
                "        {\n" +
                "            \"Effect\": \"Allow\",\n" +
                "            \"Principal\": {\"AWS\":\"" + allowedAWSPrincipal + "\"},\n" +
                "            \"Action\": [\n" +
                "                \"dynamodb:GetItem\"\n" +
                "            ],\n" +
                "            \"Resource\": \"" + tableArn + "\"\n" +
                "        }\n" +
                "    ]\n" +
                "}";
    }
}
```

# Attache d’une politique basée sur les ressources à un flux DynamoDB
<a name="rbac-attach-resource-policy-streams"></a>

[Vous pouvez associer une stratégie basée sur les ressources au flux d'une table existante ou modifier une stratégie existante à l'aide de la console DynamoDB, de l'[PutResourcePolicy](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_PutResourcePolicy.html)API AWS CLI, AWS du SDK ou d'un modèle.CloudFormation](rbac-create-table.md#rbac-create-table-cfn)

**Note**  
Vous ne pouvez pas associer de politique à un flux lorsque vous le créez à l'aide du [CreateTable](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_CreateTable.html)ou [UpdateTable](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_UpdateTable.html) APIs. Vous pouvez toutefois modifier ou supprimer une politique après la suppression d’une table. Vous pouvez également modifier ou supprimer la politique d’un flux désactivé.



## AWS CLI
<a name="rbac-attach-policy-stream-CLI"></a>

L'exemple de stratégie IAM suivant utilise la `put-resource-policy` AWS CLI commande pour associer une stratégie basée sur les ressources au flux d'une table nommée. *MusicCollection* Cet exemple permet *John* à l'utilisateur d'effectuer les actions [GetRecords[GetShardIterator](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_streams_GetShardIterator.html)](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_streams_GetRecords.html),, et [DescribeStream](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_streams_DescribeStream.html)API sur le flux.

N'oubliez pas de remplacer le *italicized* texte par les informations spécifiques à votre ressource.

```
aws dynamodb put-resource-policy \
    --resource-arn arn:aws:dynamodb:us-west-2:123456789012:table/MusicCollection/stream/2024-02-12T18:57:26.492 \
    --policy \
        "{
            \"Version\": \"2012-10-17\",		 	 	 
            \"Statement\": [
              {
                    \"Effect\": \"Allow\",
                    \"Principal\": {
                        \"AWS\": \"arn:aws:iam::111122223333:user/John\"
                    },
                    \"Action\": [
                        \"dynamodb:GetRecords\",
                        \"dynamodb:GetShardIterator\",
                        \"dynamodb:DescribeStream\"
                    ],
                    \"Resource\": \"arn:aws:dynamodb:us-west-2:123456789012:table/MusicCollection/stream/2024-02-12T18:57:26.492\"
                }
            ]
        }"
```

## AWS Management Console
<a name="rbac-attach-policy-stream-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 tableau de bord de la console DynamoDB, choisissez **Tables**, puis sélectionnez une table existante.

   Assurez-vous que les flux sont activés dans la table que vous sélectionnez. Pour en savoir plus sur l’activation de flux pour une table, consultez [Activation d’un flux](Streams.md#Streams.Enabling).

1. Sélectionnez l’onglet **Autorisations**.

1. Dans **Politique basée sur les ressources pour le flux actif**, choisissez **Créer une politique pour le flux**.

1. Dans l’éditeur **Politique basée sur les ressources**, ajoutez une politique pour définir les autorisations d’accès pour le flux. Dans cette politique, vous spécifiez quels utilisateurs ont accès au flux et les actions qu’ils sont autorisés à effectuer sur le flux. Pour ajouter une politique, effectuez l’une des actions suivantes :
   + Composez ou collez un document de politique JSON. Pour plus de détails sur le langage de politique IAM, consultez [Creating policies using the JSON editor](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create-console.html#access_policies_create-json-editor) dans le *Guide de l’utilisateur IAM*.
**Astuce**  
Pour voir des exemples de politiques basées sur les ressources dans le Guide de développement Amazon DynamoDB, sélectionnez **Exemples de politiques**.
   + Choisissez **Ajouter une nouvelle instruction** pour ajouter une nouvelle instruction et saisissez les informations dans les champs fournis. Répétez l’opération pour autant d’instructions que vous souhaitez ajouter.
**Important**  
Veillez à résoudre les avertissements de sécurité, les erreurs ou les suggestions avant d’enregistrer votre politique.

1. (Facultatif) Choisissez **Preview external access** (Aperçu de l’accès externe) dans le coin inférieur droit pour avoir un aperçu de la façon dont votre nouvelle politique affecte l’accès public et l’accès intercompte à votre ressource. Avant d’enregistrer votre stratégie, vous pouvez vérifier si elle introduit de nouveaux résultats IAM Access Analyzer ou si elle résout les résultats existants. Si vous ne voyez pas d’analyseur actif, choisissez **Go to Access Analyzer** (Accédez à l’analyseur d’accès) pour [créer un analyseur de compte](https://docs.aws.amazon.com/IAM/latest/UserGuide/access-analyzer-getting-started.html#access-analyzer-enabling) dans l’analyseur d’accès IAM. Pour plus d’informations, consultez [Prévisualiser l’accès](https://docs.aws.amazon.com/IAM/latest/UserGuide/access-analyzer-access-preview.html).

1. Choisissez **Create Policy** (Créer une politique).

L'exemple de stratégie IAM suivant attache une stratégie basée sur les ressources au flux d'une table nommée. *MusicCollection* Cet exemple permet *John* à l'utilisateur d'effectuer les actions [GetRecords[GetShardIterator](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_streams_GetShardIterator.html)](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_streams_GetRecords.html),, et [DescribeStream](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_streams_DescribeStream.html)API sur le flux.

N'oubliez pas de remplacer le *italicized* texte par les informations spécifiques à votre ressource.

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::111122223333:user/username"
      },
      "Action": [
        "dynamodb:GetRecords",
        "dynamodb:GetShardIterator",
        "dynamodb:DescribeStream"
      ],
      "Resource": [
        "arn:aws:dynamodb:us-east-1:123456789012:table/MusicCollection/stream/2024-02-12T18:57:26.492"
      ]
    }
  ]
}
```

------

# Suppression d’une politique basée sur les ressources d’une table DynamoDB
<a name="rbac-delete-resource-based-policy"></a>

Vous pouvez supprimer une politique basée sur les ressources d'une table existante à l'aide de la console DynamoDB, de l'[DeleteResourcePolicy](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_DeleteResourcePolicy.html)API AWS CLI, AWS du SDK ou d'un modèle. CloudFormation 

## AWS CLI
<a name="rbac-delete-policy-CLI"></a>

L'exemple suivant utilise la `delete-resource-policy` AWS CLI commande pour supprimer une politique basée sur les ressources d'une table nommée. *MusicCollection*

N'oubliez pas de remplacer le *italicized* texte par les informations spécifiques à votre ressource.

```
aws dynamodb delete-resource-policy \
    --resource-arn arn:aws:dynamodb:us-west-2:123456789012:table/MusicCollection
```

## AWS Management Console
<a name="rbac-delete-policy-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 tableau de bord de la console DynamoDB, choisissez **Tables**, puis sélectionnez une table existante.

1. Choisissez **Autorisations**.

1. Dans le menu déroulant **Gérer la politique**, choisissez **Supprimer la politique**.

1. Dans la boîte de dialogue **Supprimer la politique basée sur les ressources pour la table**, saisissez **confirm** pour confirmer la suppression.

1. Sélectionnez **Delete (Supprimer)**.

# Accès intercompte avec des politiques basées sur les ressources dans DynamoDB
<a name="rbac-cross-account-access"></a>

À l’aide d’une politique basée sur les ressources, vous pouvez fournir un accès intercompte à des ressources disponibles dans différents Comptes AWS. Tous les accès entre comptes autorisés par les politiques basées sur les ressources seront signalés par le biais des résultats d'accès externes d'IAM Access Analyzer si vous disposez d'un analyseur identique à la ressource. Région AWS IAM Access Analyzer exécute des vérifications de politiques pour valider votre politique par rapport à la [grammaire de politique](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_grammar.html) et aux [bonnes pratiques](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html) IAM. Ces vérifications génèrent des résultats et fournissent des recommandations exploitables pour vous aider à créer des stratégies fonctionnelles et conformes aux bonnes pratiques en matière de sécurité. Vous pouvez consulter les résultats actifs d’IAM Access Analyzer dans l’onglet **Autorisations** de la [console DynamoDB](https://console.aws.amazon.com/dynamodb/).

Pour en savoir plus sur la validation des politiques à l’aide d’IAM Access Analyzer, consultez [Validation de la politique de l’IAM Access Analyzer](https://docs.aws.amazon.com/IAM/latest/UserGuide/access-analyzer-policy-validation.html) dans le *Guide de l’utilisateur IAM*. Pour afficher la liste des avertissements, erreurs et suggestions renvoyés par IAM Access Analyzer, consultez la [Référence de vérification de politique IAM Access Analyzer](https://docs.aws.amazon.com/IAM/latest/UserGuide/access-analyzer-reference-policy-checks.html).

Pour [GetItem](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_GetItem.html)autoriser un utilisateur A du compte A à accéder à une table B du compte B, effectuez les opérations suivantes :

1. Attachez à la table B une politique basée sur les ressources qui autorise l’utilisateur A à effectuer l’action `GetItem`.

1. Attachez une politique basée sur l’identité qui autorise l’utilisateur A à effectuer l’action `GetItem` sur la table B.

À l’aide de l’option **Aperçu de l’accès externe** disponible dans la [console DynamoDB](https://console.aws.amazon.com/dynamodb/), vous pouvez prévisualiser la façon dont votre nouvelle politique affecte l’accès public et intercompte à votre ressource. Avant d’enregistrer votre stratégie, vous pouvez vérifier si elle introduit de nouveaux résultats IAM Access Analyzer ou si elle résout les résultats existants. Si vous ne voyez pas d’analyseur actif, choisissez **Go to Access Analyzer** (Accédez à l’analyseur d’accès) pour [créer un analyseur de compte](https://docs.aws.amazon.com/IAM/latest/UserGuide/access-analyzer-getting-started.html#access-analyzer-enabling) dans l’analyseur d’accès IAM. Pour plus d’informations, consultez [Prévisualiser l’accès](https://docs.aws.amazon.com/IAM/latest/UserGuide/access-analyzer-access-preview.html).

Le paramètre de nom de table dans le plan de données et le plan de contrôle DynamoDB APIs accepte le nom de ressource Amazon (ARN) complet de la table afin de prendre en charge les opérations entre comptes. Si vous fournissez uniquement le paramètre de nom de table au lieu d’un ARN complet, l’opération d’API sera exécutée sur la table du compte auquel appartient le demandeur. Pour obtenir un exemple de politique qui utilise l’accès intercompte, consultez [Politique basées sur les ressources pour l’accès intercompte](rbac-examples.md#rbac-examples-cross-account).

Le compte du propriétaire de la ressource sera débité même lorsque le principal d’un autre compte lit ou écrit dans la table DynamoDB du compte du propriétaire. Si la table dispose d'un débit provisionné, la somme de toutes les demandes provenant des comptes propriétaires et des demandeurs des autres comptes déterminera si la demande sera limitée (si le dimensionnement automatique est désactivé) ou redimensionnée si le dimensionnement automatique est activé. up/down 

Les demandes seront enregistrées dans les CloudTrail journaux des comptes propriétaire et demandeur afin que chacun des deux comptes puisse savoir quel compte a accédé à quelles données.

## Partagez l'accès grâce aux fonctions AWS Lambda entre comptes
<a name="rbac-analyze-cross-account-lambda-access"></a>

**Fonctions Lambda dans le compte A**

1. Accédez à la [console IAM](https://console.aws.amazon.com/iam/) pour créer un rôle IAM qui sera utilisé comme rôle d'[exécution Lambda pour votre fonction Lambda](https://docs.aws.amazon.com/lambda/latest/dg/lambda-intro-execution-role.html) dans le compte A. Ajoutez la AWS politique IAM gérée qui dispose `AWSLambdaDynamoDBExecutionRole` des autorisations d'appel DynamoDB Streams et Lambda requises. Cette politique donne également accès à toutes les ressources DynamoDB Streams potentielles auxquelles vous pourriez avoir accès dans le compte A.

1. Dans la [console Lambda](https://console.aws.amazon.com/lambda/), créez une fonction AWS Lambda pour traiter les enregistrements d'un flux DynamoDB et, lors de la configuration du rôle d'exécution, choisissez le rôle que vous avez créé à l'étape précédente.

1. Fournissez le rôle d'exécution de la fonction Lambda au propriétaire du compte B de DynamoDB Streams afin de configurer la politique basée sur les ressources pour l'accès en lecture entre comptes.

1. Terminez la configuration de la fonction Lambda.

**Flux DynamoDB dans le compte B**

1. Obtenez le rôle d'exécution Lambda entre comptes à partir du compte A qui appellera la fonction Lambda.

1. Sur la console Amazon DynamoDB du compte B, choisissez la table pour le déclencheur multicompte Lambda. Sous l'onglet **Exportations et flux**, recherchez l'ARN de votre flux DynamoDB. Assurez-vous que l'état du flux DynamoDB est activé et notez l'ARN complet du flux, car vous en aurez besoin pour la politique de ressources.

1. Sous l'onglet **Autorisations**, cliquez sur le bouton **Créer une politique de diffusion** pour démarrer l'éditeur de politique visuelle. Cliquez sur le bouton **Ajouter une nouvelle déclaration** ou modifiez la politique si elle existe déjà.

1. Créez une politique qui spécifie le rôle d'exécution Lambda dans le compte A en tant que principal et accordez les actions DynamoDB Stream requises. Assurez-vous d'inclure les actions`dynamodb:DescribeStream`, `dynamodb:GetRecords``dynamodb:GetShardIterator`, et`dynamodb:ListShards`. [Pour plus d'informations sur les exemples de politiques de ressources pour DynamoDB Streams, consultez la section Exemples de politiques basées sur les ressources DynamoDB.](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/rbac-examples.html)

**Note**  
L'accès entre comptes du [plan de contrôle APIs](HowItWorks.API.md#HowItWorks.API.ControlPlane) a une limite de transactions par seconde (TPS) inférieure à 500 demandes.

# Blocage de l’accès public à l’aide de politiques basées sur les ressources dans DynamoDB
<a name="rbac-bpa-rbp"></a>

[Bloquer l’accès public (BPA)](#rbac-bpa-rbp) est une fonctionnalité qui identifie et empêche l’attachement de politiques basées sur les ressources qui accordent un accès public à vos tables, index ou flux DynamoDB sur vos comptes [Amazon Web Services (AWS)](https://aws.amazon.com/). Avec BPA, vous pouvez empêcher l’accès public à vos ressources DynamoDB. BPA effectue des vérifications lors de la création ou de la modification d’une politique basée sur les ressources et contribue à améliorer votre niveau de sécurité avec DynamoDB.

BPA utilise un [raisonnement automatisé](https://aws.amazon.com/what-is/automated-reasoning/) pour analyser l’accès accordé par votre politique basée sur les ressources, et vous alerte si de telles autorisations sont détectées au moment de l’administration d’une politique basée sur les ressources. L’analyse vérifie l’accès à toutes les déclarations de politique basées sur les ressources, aux actions et à l’ensemble de clés de condition utilisées dans vos politiques.

**Important**  
BPA permet de protéger vos ressources en empêchant l’octroi de l’accès public par le biais de politiques basées sur les ressources directement associées à vos ressources DynamoDB, telles que les tables, les index et les flux. En plus d’utiliser BPA, examinez attentivement les politiques suivantes pour vous assurer qu’elles n’accordent pas d’accès public :  
Politiques basées sur l'identité associées aux AWS principaux associés (par exemple, rôles IAM)
Politiques basées sur les AWS ressources associées (par exemple, clés AWS Key Management Service (KMS))

Vous devez vous assurer que le [principal](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_principal.html) n’inclut aucune entrée `*` ou que l’une des clés de condition spécifiées limite l’accès des principaux à la ressource. Si la politique basée sur les ressources accorde un accès public à votre table, à vos index ou à votre flux, Comptes AWS DynamoDB vous empêchera de créer ou de modifier la politique jusqu'à ce que la spécification contenue dans la stratégie soit corrigée et considérée comme non publique.

Vous pouvez rendre une politique non publique en spécifiant un ou plusieurs principaux à l’intérieur du bloc `Principal`. L’exemple de politique basée sur les ressources suivant bloque l’accès public en spécifiant deux principaux.

```
{
  "Effect": "Allow",
  "Principal": {
    "AWS": [
      "123456789012",
      "111122223333"
    ]
  },
  "Action": "dynamodb:*",
  "Resource": "*"
}
```

Les politiques qui restreignent l’accès en spécifiant certaines clés de condition ne sont pas non plus considérées comme publiques. Parallèlement à l’évaluation du principal spécifié dans la politique basée sur les ressources, les [clés de condition fiables](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html) suivantes sont utilisées pour terminer l’évaluation d’une politique basée sur les ressources pour un accès non public :
+ `aws:PrincipalAccount`
+ `aws:PrincipalArn`
+ `aws:PrincipalOrgID`
+ `aws:PrincipalOrgPaths`
+ `aws:SourceAccount`
+ `aws:SourceArn`
+ `aws:SourceVpc`
+ `aws:SourceVpce`
+ `aws:UserId`
+ `aws:PrincipalServiceName`
+ `aws:PrincipalServiceNamesList`
+ `aws:PrincipalIsAWSService`
+ `aws:Ec2InstanceSourceVpc`
+ `aws:SourceOrgID`
+ `aws:SourceOrgPaths`

En outre, pour qu’une politique basée sur les ressources ne soit pas publique, les valeurs d’Amazon Resource Name (ARN) et les clés de chaîne ne doivent pas contenir de caractères génériques ni de variables. Si votre politique basée sur les ressources utilise la clé `aws:PrincipalIsAWSService`, vous devez vous assurer que vous avez défini la valeur de la clé sur true.

La politique suivante limite l’accès à l’utilisateur `John` dans le compte spécifié. La condition impose une contrainte à `Principal` et ne doit pas être considérée comme publique.

```
{
  "Effect": "Allow",
  "Principal": {
    "AWS": "*"
  },
  "Action": "dynamodb:*",
  "Resource": "*",
  "Condition": {
    "StringEquals": {
      "aws:PrincipalArn": "arn:aws:iam::123456789012:user/John"
    }
  }
}
```

L’exemple suivant d’une politique basée sur des ressources non publique limite l’utilisation de `sourceVPC` avec l’opérateur `StringEquals`.

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "AWS": "*"
      },
      "Action": "dynamodb:*",
      "Resource": "arn:aws:dynamodb:us-east-1:123456789012:table/MusicCollection",
      "Condition": {
        "StringEquals": {
          "aws:SourceVpc": [
            "vpc-91237329"
          ]
        }
      }
    }
  ]
}
```

------

# Opérations d’API DynamoDB prises en charge par des politiques basées sur les ressources
<a name="rbac-iam-actions"></a>

Cette rubrique répertorie les opérations d’API prises en charge par les politiques basées sur les ressources. Toutefois, pour l'accès entre comptes, vous ne pouvez utiliser qu'un certain ensemble de APIs DynamoDB via des politiques basées sur les ressources. Vous ne pouvez pas attacher de politiques basées sur les ressources à des types de ressources, tels que les sauvegardes et les importations. Les actions IAM, qui correspondent à l' APIs opération sur ces types de ressources, sont exclues des actions IAM prises en charge dans les politiques basées sur les ressources. Parce que les administrateurs de tables configurent les paramètres internes des tables au sein d'un même compte APIs, tels que [UpdateTimeToLive](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_UpdateTimeToLive.html)et [DisableKinesisStreamingDestination](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_DisableKinesisStreamingDestination.html), ne prennent pas en charge l'accès entre comptes via des politiques basées sur les ressources.

Le plan de données et le plan de contrôle APIs DynamoDB qui prennent en charge l'accès entre comptes prennent également en charge la surcharge des noms de table, ce qui vous permet de spécifier l'ARN de la table au lieu du nom de la table. Vous pouvez spécifier l'ARN de la table dans le `TableName` paramètre de ceux-ci APIs. Cependant, ils ne sont pas tous compatibles avec APIs l'accès entre comptes.

**Topics**
+ [Opérations de l’API du plan de données](#rbac-data-plane-actions)
+ [Opérations d’une API PartiQL](#rbac-partiql-actions)
+ [Opérations de l’API du plan de contrôle](#rbac-control-plane-actions)
+ [Opérations API des tables globales de la version 2019.11.21 (actuelle)](#rbac-current-global-table-actions)
+ [Opérations API des tables globales de la version 2017.11.29 (ancienne)](#rbac-legacy-global-table-actions)
+ [Opérations d’API de balises](#rbac-tags-actions)
+ [Opérations de l’API de sauvegarde et restauration](#rbac-backup-restore-actions)
+ [Opérations d'API continues Backup/Restore (PITR)](#rbac-continuous-backup-restore-actions)
+ [Opérations d’API Contributor Insights](#rbac-contributor-insights-actions)
+ [Opérations d’API d’exportation](#rbac-export-actions)
+ [Opérations d’API d’importation](#rbac-import-actions)
+ [Opérations de l’API Amazon Kinesis Data Streams](#rbac-kinesis-actions)
+ [Opérations d’API de politique basée sur les ressources](#rbac-rbp-actions)
+ [Time-to-Live Opérations d'API](#rbac-ttl-actions)
+ [Autres opérations d’API](#rbac-other-actions)
+ [Opérations liées à l’API DynamoDB Streams](#rbac-ds-actions)

## Opérations de l’API du plan de données
<a name="rbac-data-plane-actions"></a>

Le tableau suivant répertorie la prise en charge au niveau de l’API fournie par les opérations d’API du [plan de données](HowItWorks.API.md#HowItWorks.API.DataPlane), pour les politiques basées sur les ressources et l’accès intercompte.


| Plan de données - Tables/indexes APIs | Prise en charge de politique basée sur les ressources | Prise en charge intercompte | 
| --- | --- | --- | 
|   [DeleteItem](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_DeleteItem.html)   | Oui | Oui | 
|   [GetItem](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_GetItem.html)   | Oui | Oui | 
|   [PutItem](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_PutItem.html)   | Oui | Oui | 
|   [Interrogation](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_Query.html)   | Oui | Oui | 
|   [Analyser](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_Scan.html)   | Oui | Oui | 
|   [UpdateItem](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_UpdateItem.html)   | Oui | Oui | 
|   [TransactGetItems](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_TransactGetItems.html)   | Oui | Oui | 
|   [TransactWriteItems](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_TransactWriteItems.html)   | Oui | Oui | 
|   [BatchGetItem](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_BatchGetItem.html)   | Oui | Oui | 
|   [BatchWriteItem](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_BatchWriteItem.html)   | Oui | Oui | 

## Opérations d’une API PartiQL
<a name="rbac-partiql-actions"></a>

Le tableau suivant répertorie le support au niveau de l’API fourni par les opérations d’API [PartiQL](HowItWorks.API.md#HowItWorks.API.DataPlane.partiql) pour les politiques basées sur les ressources et l’accès intercompte.


| PartiQL APIs | Prise en charge de politique basée sur les ressources | Prise en charge intercompte | 
| --- | --- | --- | 
|   [BatchExecuteStatement](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_BatchExecuteStatement.html)   | Oui | Non | 
|   [ExecuteStatement](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_ExecuteStatement.html)   | Oui | Non | 
|   [ExecuteTransaction](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_ExecuteTransaction.html)   | Oui | Non | 

## Opérations de l’API du plan de contrôle
<a name="rbac-control-plane-actions"></a>

Le tableau suivant répertorie la prise en charge au niveau de l’API fournie par les opérations d’API du [plan de contrôle](HowItWorks.API.md#HowItWorks.API.ControlPlane), pour les politiques basées sur les ressources et l’accès intercompte.


| Plan de contrôle - Tables APIs | Prise en charge de politique basée sur les ressources | Prise en charge intercompte | 
| --- | --- | --- | 
|   [CreateTable](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_CreateTable.html)   | Non | Non | 
|   [DeleteTable](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_DeleteTable.html)   | Oui | Oui | 
|   [DescribeTable](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_DescribeTable.html)   | Oui | Oui | 
|   [UpdateTable](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_UpdateTable.html)   | Oui | Oui | 

## Opérations API des tables globales de la version 2019.11.21 (actuelle)
<a name="rbac-current-global-table-actions"></a>

Le tableau suivant répertorie le support au niveau de l’API fourni par les opérations d’API des [tables globales version 2019.11.21 (actuelle)](GlobalTables.md) pour les politiques basées sur les ressources et l’accès intercompte.


| Version 2019.11.21 (actuelle) des tables globales APIs | Prise en charge de politique basée sur les ressources | Prise en charge intercompte | 
| --- | --- | --- | 
|   [DescribeTableReplicaAutoScaling](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_DescribeTableReplicaAutoScaling.html)   | Oui | Non | 
|   [UpdateTableReplicaAutoScaling](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_UpdateTableReplicaAutoScaling.html)   | Oui | Non | 

## Opérations API des tables globales de la version 2017.11.29 (ancienne)
<a name="rbac-legacy-global-table-actions"></a>

Le tableau suivant répertorie le support au niveau de l’API fourni par les opérations d’API des [Tables globales de la version 2017.11.29 (ancienne)](globaltables.V1.md) pour les politiques basées sur les ressources et l’accès intercompte.


| Tables globales de la version 2017.11.29 (Legacy) APIs | Prise en charge de politique basée sur les ressources | Prise en charge intercompte | 
| --- | --- | --- | 
|   [CreateGlobalTable](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_CreateGlobalTable.html)   | Non | Non | 
|   [DescribeGlobalTable](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_DescribeGlobalTable.html)   | Non | Non | 
|   [DescribeGlobalTableSettings](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_DescribeGlobalTableSettings.html)   | Non | Non | 
|   [ListGlobalTables](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_ListGlobalTables.html)   | Non | Non | 
|   [UpdateGlobalTable](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_UpdateGlobalTable.html)   | Non | Non | 
|   [UpdateGlobalTableSettings](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_UpdateGlobalTableSettings.html)   | Non | Non | 

## Opérations d’API de balises
<a name="rbac-tags-actions"></a>

Le tableau suivant répertorie le support au niveau de l’API fourni par les opérations d’API liées aux [balises](Tagging.Operations.md) pour les politiques basées sur les ressources et l’accès intercompte.


| Balises APIs | Prise en charge de politique basée sur les ressources | Prise en charge intercompte | 
| --- | --- | --- | 
|   [ListTagsOfResource](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_ListTagsOfResource.html)   | Oui | Oui | 
|   [TagResource](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_TagResource.html)   | Oui | Oui | 
|   [UntagResource](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_UntagResource.html)   | Oui | Oui | 

## Opérations de l’API de sauvegarde et restauration
<a name="rbac-backup-restore-actions"></a>

Le tableau suivant répertorie le support au niveau de l’API fourni par les opérations d’API liées à la [sauvegarde et à la restauration](Backup-and-Restore.md) pour les politiques basées sur les ressources et l’accès intercompte.


| Backup et restauration APIs | Prise en charge de politique basée sur les ressources | Prise en charge intercompte | 
| --- | --- | --- | 
|   [CreateBackup](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_CreateBackup.html)   | Oui | Non | 
|   [DescribeBackup](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_DescribeBackup.html)   | Non | Non | 
|   [DeleteBackup](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_DeleteBackup.html)   | Non | Non | 
|  [RestoreTableFromBackup](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_RestoreTableFromBackup.html)  | Non | Non | 

## Opérations d'API continues Backup/Restore (PITR)
<a name="rbac-continuous-backup-restore-actions"></a>

Le tableau suivant répertorie le support au niveau de l'API fourni par les opérations d'API liées à [Continuous Backup/Restore (PITR)](Point-in-time-recovery.md) pour les politiques basées sur les ressources et l'accès entre comptes.


| Continu Backup/Restore (PITR) APIs | Prise en charge de politique basée sur les ressources | Prise en charge intercompte | 
| --- | --- | --- | 
|   [DescribeContinuousBackups](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_DescribeContinuousBackups.html)   | Oui | Non | 
|   [RestoreTableToPointInTime](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_RestoreTableToPointInTime.html)   | Oui | Non | 
|   [UpdateContinuousBackups](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_UpdateContinuousBackups.html)   | Oui | Non | 

## Opérations d’API Contributor Insights
<a name="rbac-contributor-insights-actions"></a>

Le tableau suivant répertorie le support au niveau de l'API fourni par les opérations d'API liées à [Continuous Backup/Restore (PITR)](Point-in-time-recovery.md) pour les politiques basées sur les ressources et l'accès entre comptes.


| Informations sur les contributeurs APIs | Prise en charge de politique basée sur les ressources | Prise en charge intercompte | 
| --- | --- | --- | 
|   [DescribeContributorInsights](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_DescribeContributorInsights.html)   | Oui | Non | 
|   [ListContributorInsights](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_ListContributorInsights.html)   | Non | Non | 
|   [UpdateContributorInsights](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_UpdateContributorInsights.html)   | Oui | Non | 

## Opérations d’API d’exportation
<a name="rbac-export-actions"></a>

Le tableau suivant répertorie le support au niveau de l’API fourni par les opérations de l’API d’exportation pour les politiques basées sur les ressources et l’accès intercompte.


| Exporter APIs | Prise en charge de politique basée sur les ressources | Prise en charge intercompte | 
| --- | --- | --- | 
|   [DescribeExport](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_DescribeExport.html)   | Non | Non | 
|   [ExportTableToPointInTime](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_ExportTableToPointInTime.html)   | Oui | Non | 
|   [ListExports](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_ListExports.html)   | Non | Non | 

## Opérations d’API d’importation
<a name="rbac-import-actions"></a>

Le tableau suivant répertorie le support au niveau de l’API fourni par les opérations de l’API d’importation pour les politiques basées sur les ressources et l’accès intercompte.


| Importer APIs | Prise en charge de politique basée sur les ressources | Prise en charge intercompte | 
| --- | --- | --- | 
|   [DescribeImport](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_DescribeImport.html)   | Non | Non | 
|   [ImportTable](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_ImportTable.html)   | Non | Non | 
|   [ListImports](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_ListImports.html)   | Non | Non | 

## Opérations de l’API Amazon Kinesis Data Streams
<a name="rbac-kinesis-actions"></a>

Le tableau suivant répertorie la prise en charge au niveau de l’API fournie par les opérations de l’API Kinesis Data Streams, pour les politiques basées sur les ressources et l’accès intercompte.


| Kinésis APIs | Prise en charge de politique basée sur les ressources | Prise en charge intercompte | 
| --- | --- | --- | 
|   [DescribeKinesisStreamingDestination](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_DescribeKinesisStreamingDestination.html)   | Oui | Non | 
|   [DisableKinesisStreamingDestination](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_DisableKinesisStreamingDestination.html)   | Oui | Non | 
|   [EnableKinesisStreamingDestination](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_EnableKinesisStreamingDestination.html)   | Oui | Non | 
|   [UpdateKinesisStreamingDestination](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_UpdateKinesisStreamingDestination.html)   | Oui | Non | 

## Opérations d’API de politique basée sur les ressources
<a name="rbac-rbp-actions"></a>

Le tableau suivant répertorie le support au niveau de l’API fourni par les opérations de l’API de politique basée sur les ressources pour ces politiques et l’accès intercompte.


| Politique basée sur les ressources APIs | Prise en charge de politique basée sur les ressources | Prise en charge intercompte | 
| --- | --- | --- | 
|   [GetResourcePolicy](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_GetResourcePolicy.html)   | Oui | Non | 
|   [PutResourcePolicy](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_PutResourcePolicy.html)   | Oui | Non | 
|   [DeleteResourcePolicy](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_DeleteResourcePolicy.html)   | Oui | Non | 

## Time-to-Live Opérations d'API
<a name="rbac-ttl-actions"></a>

Le tableau suivant répertorie le support au niveau de l’API fourni par les opérations de l’API de [durée de vie](TTL.md) (TTL) pour les politiques basées sur les ressources et l’accès intercompte.


| TTL APIs | Prise en charge de politique basée sur les ressources | Prise en charge intercompte | 
| --- | --- | --- | 
|   [DescribeTimeToLive](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_DescribeTimeToLive.html)   | Oui | Non | 
|   [UpdateTimeToLive](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_UpdateTimeToLive.html)   | Oui | Non | 

## Autres opérations d’API
<a name="rbac-other-actions"></a>

Le tableau suivant répertorie le support au niveau de l’API fourni par les autres opérations d’API diverses pour les politiques basées sur les ressources et l’accès intercompte.


| Autres APIs | Prise en charge de politique basée sur les ressources | Prise en charge intercompte | 
| --- | --- | --- | 
|   [DescribeLimits](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_DescribeLimits.html)   | Non | Non | 
|   [DescribeEndpoints](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_DescribeEndpoints.html)   | Non | Non | 
|   [ListBackups](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_ListBackups.html)   | Non | Non | 
|   [ListTables](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_ListTables.html)   | Non | Non | 

## Opérations liées à l’API DynamoDB Streams
<a name="rbac-ds-actions"></a>

Le tableau suivant répertorie la prise en charge par APIs DynamoDB Streams au niveau de l'API pour les politiques basées sur les ressources et l'accès entre comptes.


| Streams DynamoDB APIs | Prise en charge de politique basée sur les ressources | Prise en charge intercompte | 
| --- | --- | --- | 
|   [DescribeStream](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_streams_DescribeStream.html)   | Oui | Oui | 
|   [GetRecords](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_streams_GetRecords.html)   | Oui | Oui | 
|   [GetShardIterator](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_streams_GetShardIterator.html)   | Oui | Oui | 
|   [ListStreams](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_streams_ListStreams.html)   | Non | Non | 

# Autorisation avec des politiques basées sur l’identité IAM et des politiques basées sur les ressources DynamoDB
<a name="rbac-auth-iam-id-based-policies-DDB"></a>

Les **politiques basées sur l’identité** sont attachées à une identité, comme des utilisateurs, des groupes d’utilisateurs et des rôles IAM. Ces documents de politique IAM contrôlent les actions que peut exécuter une identité, sur quelles ressources et dans quelles conditions. Les politiques basées sur une identité peuvent être [gérées](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_managed-vs-inline.html) ou [en ligne](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_managed-vs-inline.html#inline-policies).

Les **politiques basées sur les ressources** sont des documents de politique IAM que vous attachez à une ressource, telle qu’une table DynamoDB. Ces politiques accordent au principal spécifié l’autorisation d’effectuer des actions spécifiques sur cette ressource et définit sous quelles conditions cela s’applique. Par exemple, la politique basée sur les ressources pour une table DynamoDB inclut également l’index associé à la table. Les politiques basées sur les ressources sont des politiques en ligne. Il ne s’agit pas de politiques gérées basées sur les ressources.

Pour plus d’informations sur ces politiques, consultez [Politiques basées sur l’identité et Politiques basées sur une ressource](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_identity-vs-resource.html) dans le *Guide de l’utilisateur IAM*.

Si le principal IAM provient du même compte que le propriétaire de la ressource, une politique basée sur les ressources est suffisante pour spécifier les autorisations d’accès à la ressource. Vous pouvez toujours choisir d’avoir une politique basée sur l’identité IAM avec une politique basée sur les ressources. Pour l’accès intercompte, vous devez autoriser explicitement l’accès dans les politiques d’identité et de ressources, comme spécifié dans [Accès intercompte avec des politiques basées sur les ressources dans DynamoDB](rbac-cross-account-access.md). Lorsque vous utilisez les deux types de politiques, une politique est évaluée comme décrit dans [Déterminer si une demande est autorisée ou rejetée dans un compte](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_evaluation-logic.html#policy-eval-denyallow).

**Important**  
Si une politique basée sur l'identité accorde un accès inconditionnel à une table DynamoDB (par exemple, sans condition), une politique basée sur les ressources qui autorise l'accès `dynamodb:GetItem` avec des conditions activées ne limitera pas cet accès. `dynamodb:Attributes` L'autorisation inconditionnelle de la politique basée sur l'identité a priorité, et les conditions de la politique basée sur les ressources ne sont pas appliquées en tant que restrictions. Pour restreindre l'accès à des attributs spécifiques, utilisez une `Deny` déclaration explicite au lieu de vous fier uniquement aux `Allow` instructions conditionnelles de la politique basée sur les ressources.

# Exemples de politiques basées sur les ressources DynamoDB
<a name="rbac-examples"></a>

Lorsque vous spécifiez un ARN dans le champ `Resource` d’une politique basée sur les ressources, la politique ne prend effet que si l’ARN spécifié correspond à celui de la ressource DynamoDB à laquelle il est attaché.

**Note**  
N'oubliez pas de remplacer le *italicized* texte par les informations spécifiques à votre ressource.

## Politique basée sur les ressources pour une table
<a name="rbac-examples-get"></a>

La politique basée sur les ressources suivante, attachée à une table DynamoDB nommée*MusicCollection*, donne aux utilisateurs IAM l'*Jane*autorisation d'effectuer *John* des actions sur la ressource. [GetItem[BatchGetItem](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_BatchGetItem.html)](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_GetItem.html)*MusicCollection*

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "1111",
        "Effect": "Allow",
        "Principal": {
          "AWS": [
            "arn:aws:iam::111122223333:user/username",
            "arn:aws:iam::111122223333:user/Jane"
          ]
        },
        "Action": [
          "dynamodb:GetItem",
          "dynamodb:BatchGetItem"
        ],
        "Resource": [
          "arn:aws:dynamodb:us-east-1:123456789012:table/MusicCollection"
        ]
    }
  ]
}
```

------

## Politique basée sur les ressources pour un flux
<a name="rbac-examples-streams"></a>

La politique basée sur les ressources suivante attachée à un flux DynamoDB nommé `2024-02-12T18:57:26.492` donne aux utilisateurs IAM l'*Jane*autorisation d'effectuer [GetRecords](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_streams_GetRecords.html)des *John* actions d'API sur la ressource. [GetShardIterator[DescribeStream](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_streams_DescribeStream.html)](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_streams_GetShardIterator.html)`2024-02-12T18:57:26.492`

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "1111",
      "Effect": "Allow",
      "Principal": {
        "AWS": [
          "arn:aws:iam::111122223333:user/username",
          "arn:aws:iam::111122223333:user/Jane"
        ]
      },
      "Action": [
        "dynamodb:DescribeStream",
        "dynamodb:GetRecords",
        "dynamodb:GetShardIterator"
      ],
      "Resource": [
        "arn:aws:dynamodb:us-east-1:123456789012:table/MusicCollection/stream/2024-02-12T18:57:26.492"
      ]
    }
  ]
}
```

------

## Politique d’accès basée sur les ressources pour effectuer toutes les actions sur les ressources spécifiées
<a name="rbac-examples-wildcard"></a>

Pour permettre à un utilisateur d’effectuer toutes les actions sur une table et tous les index associés à une table, vous pouvez utiliser un caractère générique (\$1) pour représenter les actions et les ressources associées à la table. L’utilisation d’un caractère générique pour les ressources permettra à l’utilisateur d’accéder à la table DynamoDB et à tous ses index associés, y compris ceux qui n’ont pas encore été créés. Par exemple, la politique suivante *John* autorisera l'utilisateur à effectuer des actions sur la *MusicCollection* table et sur tous ses index, y compris les index qui seront créés dans le futur.

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "1111",
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::111122223333:user/role-name"
      },
      "Action": "dynamodb:*",
      "Resource": [
        "arn:aws:dynamodb:us-east-1:123456789012:table/MusicCollection",
        "arn:aws:dynamodb:us-east-1:123456789012:table/MusicCollection/index/index-name"
      ]
    }
  ]
}
```

------

## Politique basées sur les ressources pour l’accès intercompte
<a name="rbac-examples-cross-account"></a>

Vous pouvez spécifier des autorisations pour une identité IAM intercompte afin d’accéder aux ressources DynamoDB. Par exemple, vous pouvez avoir besoin qu’un utilisateur d’un compte approuvé bénéficie d’un accès au contenu de votre table, à condition qu’il n’accède qu’à des éléments et à des attributs spécifiques de ces éléments. La politique suivante autorise l'accès à un utilisateur à *John* partir d'un Compte AWS identifiant fiable *111111111111* pour accéder aux données d'une table dans un compte à *123456789012* l'aide de l'[GetItem](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_GetItem.html)API. La politique garantit que l'utilisateur ne peut accéder qu'aux éléments dotés d'une clé primaire *Jane* et qu'il ne peut récupérer que les attributs `Artist``SongTitle`, mais aucun autre attribut.

**Important**  
Si vous ne spécifiez pas la condition `SPECIFIC_ATTRIBUTES`, vous verrez tous les attributs des articles renvoyés.

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "CrossAccountTablePolicy",
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::111111111111:user/John"
            },
            "Action": "dynamodb:GetItem",
            "Resource": [
                "arn:aws:dynamodb:us-west-2:123456789012:table/MusicCollection"
            ],
            "Condition": {
                "ForAllValues:StringEquals": {
                    "dynamodb:LeadingKeys": "Jane",
                    "dynamodb:Attributes": [
                        "Artist",
                        "SongTitle"
                    ]
                },
                "StringEquals": {
                    "dynamodb:Select": "SPECIFIC_ATTRIBUTES"
                }
            }
        }
    ]
}
```

------

Outre la politique basée sur les ressources précédente, la politique basée sur l'identité attachée à l'utilisateur doit *John* également autoriser l'action de l'`GetItem`API pour que l'accès entre comptes fonctionne. Voici un exemple de politique basée sur l'identité que vous devez associer à l'utilisateur. *John*

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "CrossAccountIdentityBasedPolicy",
            "Effect": "Allow",
            "Action": [
                "dynamodb:GetItem"
            ],
            "Resource": [
                "arn:aws:dynamodb:us-east-1:123456789012:table/MusicCollection"
            ],
            "Condition": {
                "ForAllValues:StringEquals": {
                    "dynamodb:LeadingKeys": "Jane",
                    "dynamodb:Attributes": [
                        "Artist",
                        "SongTitle"
                    ]
                },
                "StringEquals": {
                    "dynamodb:Select": "SPECIFIC_ATTRIBUTES"
                }
            }
        }
    ]
}
```

------

L'utilisateur John peut faire une `GetItem` demande en spécifiant l'ARN de la table dans le `table-name` paramètre d'accès à la table *MusicCollection* dans le compte*123456789012*.

```
aws dynamodb get-item \
    --table-name arn:aws:dynamodb:us-west-2:123456789012:table/MusicCollection \
    --key '{"Artist": {"S": "Jane"}' \
    --projection-expression 'Artist, SongTitle' \
    --return-consumed-capacity TOTAL
```

## Politique basée sur les ressources avec conditions d’adresse IP
<a name="rbac-examples-conditions"></a>

Vous pouvez appliquer une condition pour restreindre les adresses IP sources, les clouds privés virtuels (VPCs) et les points de terminaison VPC (VPCE). Vous pouvez spécifier des autorisations en fonction des adresses sources de la demande d’origine. Par exemple, vous pouvez autoriser un utilisateur à accéder aux ressources DynamoDB uniquement si elles sont accessibles à partir d’une source IP spécifique, telle qu’un point de terminaison VPN d’entreprise. Spécifiez ces adresses IP dans la déclaration `Condition`.

L'exemple suivant permet à l'utilisateur d'*John*accéder à n'importe quelle ressource DynamoDB lorsque les IPs sources sont et. `54.240.143.0/24` `2001:DB8:1234:5678::/64`

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

****  

```
{
  "Id":"PolicyId2",
  "Version":"2012-10-17",		 	 	 
  "Statement":[
    {
      "Sid":"AllowIPmix",
      "Effect":"Allow",
      "Principal": {
        "AWS": "arn:aws:iam::111111111111:user/username"
      },
      "Action":"dynamodb:*",
      "Resource":"*",
      "Condition": {
        "IpAddress": {
          "aws:SourceIp": [
            "54.240.143.0/24",
            "2001:DB8:1234:5678::/64"
          ]
        }
      }
    }
  ]
}
```

------

Vous pouvez également refuser tout accès aux ressources DynamoDB, sauf lorsque la source est un point de terminaison VPC spécifique, par exemple. *vpce-1a2b3c4d*

**Important**  
Lorsque vous utilisez DAX avec des tables DynamoDB dotées de politiques de ressources basées sur l'adresse IP IPv6 dans des environnements uniquement, vous devez configurer des règles d'accès supplémentaires. Si votre politique de ressources restreint l'accès à l'espace d' IPv4 adressage `0.0.0.0/0` des tables, vous devez autoriser l'accès au rôle IAM associé à votre cluster DAX. Ajoutez une `ArnNotEquals` condition à votre politique pour garantir que DAX conserve l'accès à vos tables DynamoDB. Pour plus d'informations, voir [DAX et. IPv6](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/DAX.create-cluster.DAX_and_IPV6.html)

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

****  

```
{
  "Id":"PolicyId",
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "AccessToSpecificVPCEOnly",
      "Principal": "*",
      "Action": "dynamodb:*",
      "Effect": "Deny",
      "Resource": "*",
      "Condition": {
        "StringNotEquals":{
          "aws:sourceVpce":"vpce-1a2b3c4d"
        }
      }
    }
  ]
}
```

------

## Politique basée sur les ressources utilisant un rôle IAM
<a name="rbac-examples-iam"></a>

Vous pouvez également spécifier un rôle de service IAM dans la politique basée sur les ressources. Les entités IAM qui assument ce rôle sont limitées par les actions autorisées spécifiées pour le rôle et par l’ensemble de ressources spécifique dans le cadre de la politique basée sur les ressources.

L'exemple suivant permet à une entité IAM d'effectuer toutes les actions DynamoDB sur les ressources DynamoDB et DynamoDB. *MusicCollection* *MusicCollection*

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "1111",
      "Effect": "Allow",
      "Principal": { "AWS": "arn:aws:iam::111122223333:role/role-name" },
      "Action": "dynamodb:*",
      "Resource": [
        "arn:aws:dynamodb:us-east-1:123456789012:table/MusicCollection",
        "arn:aws:dynamodb:us-east-1:123456789012:table/MusicCollection/*"
      ]
    }
  ]
}
```

------

# Considérations relatives aux politiques basées sur les ressources DynamoDB
<a name="rbac-considerations"></a>

Lorsque vous définissez des politiques basées sur les ressources pour vos ressources DynamoDB, les considérations suivantes s’appliquent :

**Considérations générales**
+ La taille maximale prise en charge pour un document de politique basé sur les ressources est de 20 Ko. DynamoDB compte les espaces blancs lors du calcul de la taille d’une politique au regard de cette limite. 
+ Les mises à jour ultérieures d’une politique pour une ressource donnée sont bloquées pendant 15 secondes après une mise à jour réussie de la politique pour la même ressource.
+ Vous ne pouvez actuellement attacher une politique basée sur les ressources qu’aux flux existants. Vous ne pouvez pas attacher de politique à un flux lors de sa création.

**Considérations relatives aux tables globales**
+ Les politiques basées sur les ressources ne sont pas prises en charge pour les réplicas de [Table globale version 2017.11.29 (ancienne)](globaltables_HowItWorks.md).
+ Dans une politique basée sur les ressources, si l’action permettant à un rôle DynamoDB lié à un service (SLR) de répliquer les données d’une table globale est refusée, l’ajout ou la suppression d’un réplica échouera avec une erreur.
+ La AWS GlobalTable ressource [::DynamoDB : :](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-dynamodb-globaltable.html) ne prend pas en charge la création d'une réplique et l'ajout d'une politique basée sur les ressources à cette réplique dans la même mise à jour de pile dans des régions autres que la région où vous déployez la mise à jour de pile.

**Considérations relatives à l’accès intercompte**
+ L'accès entre comptes à l'aide de politiques basées sur les ressources ne prend pas en charge les tables chiffrées avec des clés AWS gérées, car vous ne pouvez pas accorder d'accès entre comptes à la AWS politique KMS gérée.

**CloudFormation considérations**
+ Les politiques basées sur les ressources ne prennent pas en charge la [détection des écarts](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-stack-drift.html#). Si vous mettez à jour une politique basée sur les ressources en dehors du modèle de AWS CloudFormation pile, vous devrez mettre à jour la CloudFormation pile avec les modifications.
+ Les politiques basées sur les ressources ne prennent pas en charge les modifications hors bande. Si vous ajoutez, mettez à jour ou supprimez une politique en dehors du CloudFormation modèle, la modification ne sera pas remplacée si aucune modification n'est apportée à la politique dans le modèle.

  Supposons, par exemple, que votre modèle contienne une politique basée sur les ressources que vous mettez à jour ultérieurement en dehors du modèle. Si vous n’apportez aucune modification à la politique du modèle, la politique mise à jour dans DynamoDB ne sera pas synchronisée avec celle du modèle.

  Inversement, supposons que votre modèle ne contienne pas de politique basée sur les ressources, mais que vous ajoutiez une politique en dehors du modèle. Cette politique ne sera pas supprimée de DynamoDB tant que vous ne l’ajoutez pas au modèle. Lorsque vous ajoutez une politique au modèle et que vous mettez à jour la pile, la politique existante dans DynamoDB est mise à jour pour correspondre à celle définie dans le modèle.

# Bonnes pratiques en matière de politiques basées sur les ressources DynamoDB
<a name="rbac-best-practices"></a>

Cette rubrique décrit les bonnes pratiques pour définir les autorisations d’accès pour vos ressources DynamoDB et les actions autorisées sur ces ressources.

## Simplification du contrôle d’accès aux ressources DynamoDB
<a name="rbac-simplify-access-control"></a>

Si Gestion des identités et des accès AWS les principaux qui ont besoin d'accéder à une ressource DynamoDB font partie de la Compte AWS même entité que le propriétaire de la ressource, aucune politique basée sur l'identité IAM n'est requise pour chaque principal. Une politique basée sur les ressources qui est attachée aux ressources données suffit. Ce type de configuration simplifie le contrôle d’accès.

## Protégez vos ressources DynamoDB avec les politiques basées sur les ressources
<a name="rbac-protect"></a>

 Pour toutes les tables et tous les flux DynamoDB, créez des politiques basées sur les ressources afin d’appliquer le contrôle d’accès à ces ressources. Les politiques basées sur les ressources vous permettent de centraliser les autorisations au niveau des ressources, de simplifier le contrôle d’accès aux tables, aux index et aux flux DynamoDB, et de réduire les frais d’administration. Si aucune politique basée sur les ressources n’est spécifiée pour une table ou un flux, l’accès à la table ou au flux sera implicitement refusé, sauf si les politiques basées sur l’identité associées aux principaux IAM autorisent l’accès.

## Accorder les autorisations de moindre privilège
<a name="rbac-least-privilege"></a>

Lorsque vous définissez des autorisations avec des politiques basées sur les ressources DynamoDB, accordez uniquement les autorisations nécessaires à l’exécution d’une action. Pour ce faire, vous définissez les actions qui peuvent être entreprises sur des ressources spécifiques dans des conditions spécifiques, également appelées autorisations de moindre privilège. Vous pouvez commencer par des autorisations étendues tout en explorant les autorisations requises pour votre charge de travail ou votre cas d’utilisation. Au fur et à mesure que votre cas d’utilisation évolue, vous pouvez réduire les autorisations que vous accordez pour obtenir le moindre privilège.

## Analyse de l’activité d’accès intercompte pour générer des politiques de moindre privilège
<a name="rbac-analyze-cross-account-access"></a>

IAM Access Analyzer signale l’accès intercompte aux entités externes spécifiées dans les politiques basées sur les ressources, et fournit une visibilité qui vous aide à affiner les autorisations et à vous conformer au moindre privilège. Pour plus d’informations sur la génération de politiques, consultez [IAM Access Analyzer policy generation](https://docs.aws.amazon.com/IAM/latest/UserGuide/access-analyzer-policy-generation.html).

## Utilisation d’IAM Access Analyzer pour générer des politiques de moindre privilège
<a name="rbac-iam-access-analyzer"></a>

Pour accorder uniquement les autorisations nécessaires à l’exécution d’une seule tâche, vous pouvez générer des politiques en fonction de votre activité d’accès connectée AWS CloudTrail. IAM Access Analyzer analyse les services et les actions utilisés par vos politiques.

# Utilisation du contrôle d’accès par attributs avec DynamoDB
<a name="attribute-based-access-control"></a>

Le [contrôle d'accès basé sur les attributs (ABAC)](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction_attribute-based-access-control.html) est une stratégie d'autorisation qui définit les autorisations d'accès en fonction des [conditions des balises](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Tagging.html) dans vos politiques basées sur l'identité ou dans d'autres politiques, telles que les politiques basées sur les ressources et AWS les politiques IAM de l'organisation. Vous pouvez associer des balises aux tables DynamoDB, qui sont ensuite évaluées par rapport aux conditions basées sur les balises. Les index associés à une table héritent des balises que vous ajoutez à la table. Vous pouvez ajouter jusqu’à 50 balises par table DynamoDB. La taille maximale prise en charge pour toutes les balises d’une table est de 10 Ko. Pour plus d’informations sur le balisage des ressources DynamoDB et les restrictions de balisage, consultez [Étiquetage de ressources dans DynamoDB](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Tagging.Operations.html) et [Restrictions d’étiquetage dans DynamoDB](Tagging.md#TaggingRestrictions).

Pour plus d'informations sur l'utilisation de balises pour contrôler l'accès aux AWS ressources, consultez les rubriques suivantes du guide de l'utilisateur IAM :
+ [À quoi sert ABAC AWS](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction_attribute-based-access-control.html)
+ [Contrôle de l'accès aux AWS ressources à l'aide de balises](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_tags.html)

À l’aide d’ABAC, vous pouvez appliquer différents niveaux d’accès à vos équipes et à vos applications afin qu’elles puissent effectuer des actions sur les tables DynamoDB en utilisant moins de politiques. Vous pouvez spécifier une balise dans le champ [élément de condition](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_condition.html) d’une politique IAM pour contrôler l’accès à vos tables ou index DynamoDB. Ces conditions déterminent le niveau d’accès d’un principal, d’un utilisateur ou d’un rôle IAM aux tables et aux index DynamoDB. Lorsqu’un principal IAM fait une demande d’accès à DynamoDB, les balises de la ressource et de l’identité sont évaluées par rapport aux conditions des balises définies dans la politique IAM. Par la suite, la politique n’entre en vigueur que si les conditions relatives aux balises sont remplies. Cela vous permet de créer une politique IAM qui énonce efficacement l’un des éléments suivants :
+ *Autorisez l’utilisateur à gérer uniquement les ressources dotées d’une balise comportant une clé `X` et une valeur `Y`*.
+ *Refusez l’accès à tous les utilisateurs pour les ressources étiquetées avec une clé `X`*.

Par exemple, vous pouvez créer une politique qui permet aux utilisateurs de mettre à jour une table uniquement si elle possède la balise de paire clé-valeur : `"environment": "staging"`. Vous pouvez utiliser la clé de ResourceTag condition [aws :](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-resourcetag) pour autoriser ou refuser l'accès à une table en fonction des balises associées à cette table.

Vous pouvez inclure des conditions basées sur les attributs lors de la création de la politique ou ultérieurement à l'aide de l' AWS API AWS Management Console, AWS Command Line Interface (AWS CLI), du AWS SDK ou. AWS CloudFormation

L'exemple suivant autorise l'[UpdateItem](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_UpdateItem.html)action sur une table nommée `MusicTable` si elle inclut une clé de balise avec le nom `environment` et la valeur`production`.

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "dynamodb:UpdateItem"
      ],
      "Resource": "arn:aws:dynamodb:*:*:table/MusicTable",
      "Condition": {
        "StringEquals": {
          "aws:ResourceTag/environment": "production"
        }
      }
    }
  ]
}
```

------

**Topics**
+ [Pourquoi utiliser l’ABAC ?](#why-use-abac)
+ [Clés de condition pour mettre en œuvre ABAC avec DynamoDB](#condition-keys-implement-abac)
+ [Considérations relatives à l’utilisation d’ABAC avec DynamoDB](#abac-considerations)
+ [Activation de l’ABAC dans DynamoDB](abac-enable-ddb.md)
+ [Utilisation de l’ABAC avec des tables et des index DynamoDB](abac-implementation-ddb-tables.md)
+ [Exemples d’utilisation de l’ABAC avec des tables et des index DynamoDB](abac-example-use-cases.md)
+ [Résolution des erreurs courantes liées à l’ABAC pour les tables et les index DynamoDB](abac-troubleshooting.md)

## Pourquoi utiliser l’ABAC ?
<a name="why-use-abac"></a>
+ **Gestion des politiques simplifiée :** vous utilisez moins de politiques, car vous n’avez pas à créer de politiques différentes afin de définir le niveau d’accès pour chaque principal IAM.
+ **Contrôle d’accès pouvait être mis à l’échelle :** la mise à l’échelle du contrôle d’accès est plus facile avec ABAC, car vous n’avez pas à mettre à jour vos politiques lorsque vous créez de nouvelles ressources DynamoDB. Vous pouvez utiliser des balises pour autoriser l’accès aux principaux IAM qui contiennent des balises correspondant à celles de la ressource. Vous pouvez intégrer de nouveaux principaux IAM ou de nouvelles ressources DynamoDB et appliquer les balises appropriées afin d’accorder automatiquement les autorisations nécessaires sans avoir à modifier les politiques.
+ **Gestion précise des autorisations :** il est recommandé d’[accorder le moindre privilège](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html#grant-least-privilege) lorsque vous créez des politiques. Avec ABAC, vous pouvez créer des balises pour le principal IAM et les utiliser pour restreindre l’accès à des actions et à des ressources spécifiques correspondant aux balises du principal IAM. 
+ **Alignement avec l’annuaire d’entreprise :** vous pouvez mapper des balises avec les attributs des employés existants à partir de votre annuaire d’entreprise afin d’aligner vos politiques de contrôle d’accès sur votre structure organisationnelle.

## Clés de condition pour mettre en œuvre ABAC avec DynamoDB
<a name="condition-keys-implement-abac"></a>

Vous pouvez utiliser les clés de condition suivantes dans vos AWS politiques pour contrôler le niveau d'accès à vos tables et index DynamoDB :
+ [aws : ResourceTag /tag-key](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-resourcetag) : contrôle l'accès selon que la paire clé-valeur de balise d'une table ou d'un index DynamoDB correspond ou non à la clé et à la valeur de balise d'une politique. Cette clé de condition s'applique à tous APIs ceux qui opèrent sur une table ou un index existant.

  Les conditions `dynamodb:ResourceTag` sont évaluées comme si vous n’aviez attaché aucune balise à une ressource.
+ [aws : RequestTag /tag-key](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-requesttag) : permet de comparer la paire clé-valeur de balise transmise dans la demande avec la paire de balises que vous spécifiez dans la politique. Cette clé de condition est pertinente pour ceux APIs qui contiennent des balises dans le cadre de la charge utile de la demande. Il s'agit APIs notamment [CreateTable](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_CreateTable.html)de et [TagResource](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_TagResource.html).
+ [aws : TagKeys](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-tagkeys) : Compare les clés de balise d'une demande avec les clés que vous spécifiez dans la politique. Cette clé de condition est pertinente pour ceux APIs qui contiennent des balises dans le cadre de la charge utile de la demande. Ceux-ci APIs incluent `CreateTable``TagResource`, et`UntagResource`.

## Considérations relatives à l’utilisation d’ABAC avec DynamoDB
<a name="abac-considerations"></a>

Lorsque vous utilisez ABAC avec des tables ou des index DynamoDB, les considérations suivantes s’appliquent :
+ Le balisage et l’ABAC ne sont pas pris en charge pour DynamoDB Streams.
+ Le balisage et l’ABAC ne sont pas pris en charge pour les sauvegardes DynamoDB. Pour utiliser l’ABAC avec des sauvegardes, nous vous recommandons d’utiliser [AWS Backup](https://docs.aws.amazon.com/aws-backup/latest/devguide/whatisbackup.html).
+ Les balises ne sont pas conservées dans les tables restaurées. Vous devez ajouter des balises aux tables restaurées avant de pouvoir utiliser des conditions basées sur des balises dans vos politiques.

# Activation de l’ABAC dans DynamoDB
<a name="abac-enable-ddb"></a>

Dans la plupart des cas Comptes AWS, ABAC est activé par défaut. À l’aide de la [console DynamoDB](https://console.aws.amazon.com/dynamodb/), vous pouvez vérifier si ABAC est activé pour votre compte. [Pour ce faire, assurez-vous d'ouvrir la console DynamoDB avec un rôle doté de l'autorisation dynamodb :. GetAbacStatus](#required-permissions-abac) Ouvrez ensuite la page **Paramètres** de la console DynamoDB.

Si vous ne voyez pas la carte **Contrôle d’accès basé sur les attributs** ou si le statut de la carte est **Activé**, cela signifie que l’ABAC est activé pour votre compte. Toutefois, si vous voyez la carte de **Contrôle d’accès basé sur les attributs** avec le statut **Désactivé**, comme indiqué dans l’image suivante, cela signifie que l’ABAC n’est pas activé pour votre compte.

## Contrôle d’accès par attributs - Non activé
<a name="abac-disabled-image"></a>

![\[Page de paramètres de la console DynamoDB qui affiche la carte de Contrôle d’accès par attributs.\]](http://docs.aws.amazon.com/fr_fr/amazondynamodb/latest/developerguide/images/ddb-console-settings-page.png)


L'ABAC n'est pas activé Comptes AWS pour les conditions basées sur les balises spécifiées dans leurs politiques basées sur l'identité ou dans d'autres politiques qui doivent encore être auditées. Si l’ABAC n’est pas activé pour votre compte, les conditions basées sur les balises de vos politiques destinées à agir sur les tables ou les index DynamoDB sont évaluées comme si aucune balise n’était présente pour vos ressources ou vos demandes d’API. Lorsque l’ABAC est activé pour votre compte, les conditions basées sur les balises figurant dans les politiques de votre compte sont évaluées en tenant compte des balises associées à vos tables ou à vos demandes d’API.

Pour activer l’ABAC pour votre compte, nous vous recommandons de commencer par auditer vos politiques comme décrit dans la section [Audit de politique](#policy-audit-for-abac). Incluez ensuite les [autorisations requises pour l’ABAC](#required-permissions-abac) dans votre politique IAM. Enfin, suivez les étapes décrites dans [Activation de l’ABAC dans la console](#abac-enable-console) pour activer l’ABAC pour votre compte dans la région actuelle. Après avoir activé l’ABAC, vous pouvez le désactiver dans les sept prochains jours calendaires suivant l’activation.

**Topics**
+ [Audit de vos politiques avant d’activer l’ABAC](#policy-audit-for-abac)
+ [Autorisations IAM requises pour activer l’ABAC](#required-permissions-abac)
+ [Activation de l’ABAC dans la console](#abac-enable-console)

## Audit de vos politiques avant d’activer l’ABAC
<a name="policy-audit-for-abac"></a>

Avant d’activer l’ABAC pour votre compte, auditez vos politiques pour vous assurer que les conditions basées sur des balises qui peuvent exister dans les politiques de votre compte sont configurées comme prévu. L’audit de vos politiques permet d’éviter les surprises liées aux modifications d’autorisation apportées à vos flux de travail DynamoDB après l’activation de l’ABAC. Pour consulter des exemples d’utilisation de conditions basées sur les attributs avec des balises, ainsi que le comportement avant et après de la mise en œuvre de l’ABAC, consultez [Exemples d’utilisation de l’ABAC avec des tables et des index DynamoDBExemples de cas d’utilisation ](abac-example-use-cases.md).

## Autorisations IAM requises pour activer l’ABAC
<a name="required-permissions-abac"></a>

Vous devez disposer de l’autorisation `dynamodb:UpdateAbacStatus` pour activer l’ABAC pour votre compte dans la région actuelle. Pour vérifier si l’ABAC est activé pour votre compte, vous devez également avoir l’autorisation `dynamodb:GetAbacStatus`. Cette autorisation vous permet de consulter le statut de l’ABAC d’un compte dans n’importe quelle région. Vous avez besoin de ces autorisations en plus de l’autorisation nécessaire pour accéder à la console DynamoDB.

La politique IAM suivante accorde l’autorisation d’activer l’ABAC et de consulter son statut pour un compte dans la région actuelle.

```
{
"version": "2012-10-17", 		 	 	 &TCX5-2025-waiver;
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "dynamodb:UpdateAbacStatus",
                "dynamodb:GetAbacStatus"
             ],
            "Resource": "*"
        }
    ]
}
```

## Activation de l’ABAC dans la console
<a name="abac-enable-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 panneau de navigation supérieur, sélectionnez la région pour laquelle vous souhaitez activer l’ABAC.

1. Dans le panneau de navigation de gauche, choisissez **Paramètres**.

1. Sur la page **Settings (Paramètres)**, procédez comme suit :

   1. Dans la carte de **Contrôle d’accès par attributs**, choisissez **Activer**.

   1. Dans la case **Confirmer le réglage du contrôle d’accès par attributs**, choisissez **Activer** pour confirmer votre choix.

      Cette opération active l’ABAC pour la région actuelle et la carte de **Contrôle d’accès basé sur les attributs** indique le statut **Activé**.

      Si vous souhaitez désactiver l’ABAC après l’avoir activé sur votre console, vous pouvez le faire dans les sept jours calendaires suivant l’activation. Pour désactiver l’ABAC, choisissez **Désactiver** dans la carte de **Contrôle d’accès par attributs** de la page **Paramètres**.
**Note**  
La mise à jour du statut de l’ABAC est une opération asynchrone. Si les balises de vos politiques ne sont pas évaluées immédiatement, vous devrez peut-être attendre un certain temps, car l’application des modifications sera finalement cohérente.

# Utilisation de l’ABAC avec des tables et des index DynamoDB
<a name="abac-implementation-ddb-tables"></a>

Les étapes suivantes montrent comment configurer des autorisations à l’aide de l’ABAC. Dans cet exemple de scénario, vous allez ajouter des balises à une table DynamoDB et créer un rôle IAM avec une politique qui inclut des conditions basées sur des balises. Vous allez ensuite tester les autorisations accordées dans la table DynamoDB en respectant les conditions des balises.

**Topics**
+ [Étape 1 : Ajouter des balises à une table DynamoDB](#abac-add-table-tags)
+ [Étape 2 : Créer un rôle IAM avec une politique incluant des conditions basées sur des balises](#abac-create-iam-role)
+ [Étape 3 : Tester les autorisations accordées](#abac-test-permissions)

## Étape 1 : Ajouter des balises à une table DynamoDB
<a name="abac-add-table-tags"></a>

Vous pouvez ajouter des balises à des tables DynamoDB nouvelles ou existantes à l'aide de l'API AWS ,AWS CLI() AWS Command Line Interface AWS , AWS Management Console du SDK ou. AWS CloudFormation Par exemple, la commande CLI [tag-resource](https://docs.aws.amazon.com/cli/latest/reference/dynamodb/tag-resource.html) suivante ajoute une balise à une table nommée `MusicTable`.

```
aws dynamodb tag-resource —resource-arn arn:aws:dynamodb:us-east-1:123456789012:table/MusicTable —tags Key=environment,Value=staging
```

## Étape 2 : Créer un rôle IAM avec une politique incluant des conditions basées sur des balises
<a name="abac-create-iam-role"></a>

[Créez une politique IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create-console.html#access_policies_create-json-editor) à l'aide de la clé de condition [aws : ResourceTag /tag-key](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-resourcetag) pour comparer la paire clé-valeur de balise spécifiée dans la politique IAM avec la paire clé-valeur attachée à la table. L’exemple de politique suivant permet aux utilisateurs de placer ou de mettre à jour des éléments dans des tables si celles-ci contiennent la paire clé-valeur de balise : `"environment": "staging"`. Si une table ne possède pas la paire clé-valeur de balise spécifiée, ces actions sont refusées.

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "dynamodb:PutItem",
                "dynamodb:UpdateItem"
            ],
            "Resource": "arn:aws:dynamodb:*:*:table/*",
            "Condition": {
                "StringEquals": {
                    "aws:ResourceTag/environment": "staging"
                }
            }
        }
    ]
}
```

------

## Étape 3 : Tester les autorisations accordées
<a name="abac-test-permissions"></a>

1. Attachez la politique IAM à un utilisateur ou à un rôle de test dans votre Compte AWS. Assurez-vous que le principal IAM que vous utilisez n’a pas déjà accès à la table DynamoDB par le biais d’une autre politique.

1. Assurez-vous que votre table DynamoDB contient la clé de balise `"environment"` avec une valeur de `"staging"`.

1. Exécutez les actions `dynamodb:PutItem` et `dynamodb:UpdateItem` et sur la table balisée. Ces actions devraient réussir si la paire clé-valeur de la balise `"environment": "staging"` est présente.

   Si vous effectuez ces actions sur une table dépourvue de la paire clé-valeur de balise `"environment": "staging"`, votre demande échouera avec un message d’erreur `AccessDeniedException`.

Vous pouvez également consulter les autres [exemples de cas d’utilisation](abac-example-use-cases.md) décrits dans la section suivante pour mettre en œuvre l’ABAC et effectuer d’autres tests.

# Exemples d’utilisation de l’ABAC avec des tables et des index DynamoDB
<a name="abac-example-use-cases"></a>

Les exemples suivants illustrent certains cas d’utilisation pour la mise en œuvre des conditions basées sur les attributs à l’aide de balises.

**Topics**
+ [Exemple 1 : Autoriser une action à l'aide de aws : ResourceTag](#abac-allow-example-resource-tag)
+ [Exemple 2 : Autoriser une action à l'aide de aws : RequestTag](#abac-allow-example-request-tag)
+ [Exemple 3 : Refuser une action à l'aide de aws : TagKeys](#abac-deny-example-tag-key)

## Exemple 1 : Autoriser une action à l'aide de aws : ResourceTag
<a name="abac-allow-example-resource-tag"></a>

À l’aide de la clé de condition `aws:ResourceTag/tag-key`, vous pouvez comparer la paire clé-valeur de balise spécifiée dans une politique IAM avec la paire clé-valeur attachée dans une table DynamoDB. Par exemple, vous pouvez autoriser une action spécifique, par exemple si les conditions des balises correspondent dans une politique IAM et dans une table. [PutItem](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_PutItem.html) Effectuez les étapes suivantes pour ce faire :

------
#### [ Using the AWS CLI ]

1. Créer une table. L'exemple suivant utilise la AWS CLI commande [create-table](https://docs.aws.amazon.com/cli/latest/reference/dynamodb/create-table.html) pour créer une table nommée. `myMusicTable`

   ```
   aws dynamodb create-table \
     --table-name myMusicTable \
     --attribute-definitions AttributeName=id,AttributeType=S \
     --key-schema AttributeName=id,KeyType=HASH \
     --provisioned-throughput ReadCapacityUnits=5,WriteCapacityUnits=5 \
     --region us-east-1
   ```

1. Ajoutez une balise à cette table. L'exemple de AWS CLI commande [tag-resource](https://docs.aws.amazon.com/cli/latest/reference/dynamodb/tag-resource.html) suivant ajoute la paire clé-valeur tag au. `Title: ProductManager` `myMusicTable`

   ```
   aws dynamodb tag-resource --region us-east-1 --resource-arn arn:aws:dynamodb:us-east-1:123456789012:table/myMusicTable --tags Key=Title,Value=ProductManager
   ```

1. Créez une [politique intégrée](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_managed-vs-inline.html#inline-policies) et ajoutez-la à un rôle auquel la politique [AmazonDynamoDBReadOnlyAccess](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonDynamoDBReadOnlyAccess.html) AWS gérée est attachée, comme indiqué dans l'exemple suivant.

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

****  

   ```
   {
     "Version":"2012-10-17",		 	 	 
     "Statement": [
       {
         "Effect": "Allow",
         "Action": "dynamodb:PutItem",
         "Resource": "arn:aws:dynamodb:*:*:table/*",
         "Condition": {
           "StringEquals": {
             "aws:ResourceTag/Title": "ProductManager"
           }
         }
       }
     ]
   }
   ```

------

   Cette politique autorise l’action `PutItem` sur la table lorsque la clé de balise et la valeur associées à la table correspondent aux balises spécifiées dans la politique.

1. Assumez le rôle avec les politiques décrites à l’étape 3.

1. Utilisez la AWS CLI commande [put-item](https://docs.aws.amazon.com/cli/latest/reference/dynamodb/put-item.html) pour placer un élément dans le. `myMusicTable`

   ```
   aws dynamodb put-item \
       --table-name myMusicTable --region us-east-1 \
       --item '{
           "id": {"S": "2023"},
           "title": {"S": "Happy Day"},
           "info": {"M": {
               "rating": {"N": "9"},
               "Artists": {"L": [{"S": "Acme Band"}, {"S": "No One You Know"}]},
               "release_date": {"S": "2023-07-21"}
           }}
       }'
   ```

1. Analysez la table pour vérifier si l’élément y a été ajouté.

   ```
   aws dynamodb scan --table-name myMusicTable  --region us-east-1
   ```

------
#### [ Using the AWS SDK for Java 2.x ]

1. Créer une table. L'exemple suivant utilise l'[CreateTable](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_CreateTable.html)API pour créer une table nommée`myMusicTable`.

   ```
   DynamoDbClient dynamoDB = DynamoDbClient.builder().region(region).build();
   CreateTableRequest createTableRequest = CreateTableRequest.builder()
       .attributeDefinitions(
           Arrays.asList(
               AttributeDefinition.builder()
               .attributeName("id")
               .attributeType(ScalarAttributeType.S)
               .build()
           )
       )
       .keySchema(
           Arrays.asList(
               KeySchemaElement.builder()
               .attributeName("id")
               .keyType(KeyType.HASH)
               .build()
           )
       )
       .provisionedThroughput(ProvisionedThroughput.builder()
           .readCapacityUnits(5L)
           .writeCapacityUnits(5L)
           .build()
       )
       .tableName("myMusicTable")
       .build();
   
   CreateTableResponse createTableResponse = dynamoDB.createTable(createTableRequest);
   String tableArn = createTableResponse.tableDescription().tableArn();
   String tableName = createTableResponse.tableDescription().tableName();
   ```

1. Ajoutez une balise à cette table. Dans l'exemple suivant, l'[TagResource](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_TagResource.html)API ajoute la paire clé-valeur de balise `Title: ProductManager` au. `myMusicTable`

   ```
   TagResourceRequest tagResourceRequest = TagResourceRequest.builder()
       .resourceArn(tableArn)
       .tags(
           Arrays.asList(
               Tag.builder()
               .key("Title")
               .value("ProductManager")
               .build()
           )
       )
       .build();
   dynamoDB.tagResource(tagResourceRequest);
   ```

1. Créez une [politique intégrée](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_managed-vs-inline.html#inline-policies) et ajoutez-la à un rôle auquel la politique [AmazonDynamoDBReadOnlyAccess](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonDynamoDBReadOnlyAccess.html) AWS gérée est attachée, comme indiqué dans l'exemple suivant.

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

****  

   ```
   {
     "Version":"2012-10-17",		 	 	 
     "Statement": [
       {
         "Effect": "Allow",
         "Action": "dynamodb:PutItem",
         "Resource": "arn:aws:dynamodb:*:*:table/*",
         "Condition": {
           "StringEquals": {
             "aws:ResourceTag/Title": "ProductManager"
           }
         }
       }
     ]
   }
   ```

------

   Cette politique autorise l’action `PutItem` sur la table lorsque la clé de balise et la valeur associées à la table correspondent aux balises spécifiées dans la politique.

1. Assumez le rôle avec les politiques décrites à l’étape 3.

1. Utilisez l'[PutItem](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_PutItem.html)API pour placer un élément dans le`myMusicTable`.

   ```
   HashMap<String, AttributeValue> info = new HashMap<>();
   info.put("rating", AttributeValue.builder().s("9").build());
   info.put("artists", AttributeValue.builder().ss(List.of("Acme Band","No One You Know").build());
   info.put("release_date", AttributeValue.builder().s("2023-07-21").build());
   
   HashMap<String, AttributeValue> itemValues = new HashMap<>();
   itemValues.put("id", AttributeValue.builder().s("2023").build());
   itemValues.put("title", AttributeValue.builder().s("Happy Day").build());
   itemValues.put("info", AttributeValue.builder().m(info).build());
   
   
   PutItemRequest putItemRequest = PutItemRequest.builder()
                   .tableName(tableName)
                   .item(itemValues)
                   .build();
   dynamoDB.putItem(putItemRequest);
   ```

1. Analysez la table pour vérifier si l’élément y a été ajouté.

   ```
   ScanRequest scanRequest = ScanRequest.builder()
                   .tableName(tableName)
                   .build();
                   
   ScanResponse scanResponse = dynamoDB.scan(scanRequest);
   ```

------
#### [ Using the AWS SDK pour Python (Boto3) ]

1. Créer une table. L'exemple suivant utilise l'[CreateTable](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_CreateTable.html)API pour créer une table nommée`myMusicTable`.

   ```
   create_table_response = ddb_client.create_table(
       AttributeDefinitions=[
           {
               'AttributeName': 'id',
               'AttributeType': 'S'
           },
       ],
       TableName='myMusicTable',
       KeySchema=[
           {
               'AttributeName': 'id',
               'KeyType': 'HASH'
           },
       ],
           ProvisionedThroughput={
           'ReadCapacityUnits': 5,
           'WriteCapacityUnits': 5
       },
   )
   
   table_arn = create_table_response['TableDescription']['TableArn']
   ```

1. Ajoutez une balise à cette table. Dans l'exemple suivant, l'[TagResource](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_TagResource.html)API ajoute la paire clé-valeur de balise `Title: ProductManager` au. `myMusicTable`

   ```
   tag_resouce_response = ddb_client.tag_resource(
       ResourceArn=table_arn,
       Tags=[
           {
               'Key': 'Title',
               'Value': 'ProductManager'
           },
       ]
   )
   ```

1. Créez une [politique intégrée](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_managed-vs-inline.html#inline-policies) et ajoutez-la à un rôle auquel la politique [AmazonDynamoDBReadOnlyAccess](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonDynamoDBReadOnlyAccess.html) AWS gérée est attachée, comme indiqué dans l'exemple suivant.

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

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
           "Effect": "Allow",
           "Action": "dynamodb:PutItem",
           "Resource": "arn:aws:dynamodb:*:*:table/*",
           "Condition": {
               "StringEquals": {
               "aws:ResourceTag/Title": "ProductManager"
               }
           }
           }
       ]
       }
   ```

------

   Cette politique autorise l’action `PutItem` sur la table lorsque la clé de balise et la valeur associées à la table correspondent aux balises spécifiées dans la politique.

1. Assumez le rôle avec les politiques décrites à l’étape 3.

1. Utilisez l'[PutItem](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_PutItem.html)API pour placer un élément dans le`myMusicTable`.

   ```
   put_item_response = client.put_item(
       TableName = 'myMusicTable'
       Item = {
           'id': '2023',
           'title': 'Happy Day',
           'info': {
               'rating': '9',
               'artists': ['Acme Band','No One You Know'],
               'release_date': '2023-07-21'
           }
       }
   )
   ```

1. Analysez la table pour vérifier si l’élément y a été ajouté.

   ```
   scan_response = client.scan(
       TableName='myMusicTable'
   )
   ```

------

**Sans l’ABAC**  
Si ABAC n'est pas activé pour vous Compte AWS, les conditions de balise de la politique IAM et de la table DynamoDB ne correspondent pas. Par conséquent, l’action `PutItem` renvoie le code `AccessDeniedException` en raison de l’effet de la politique `AmazonDynamoDBReadOnlyAccess`.

```
An error occurred (AccessDeniedException) when calling the PutItem operation: User: arn:aws:sts::123456789012:assumed-role/DynamoDBReadOnlyAccess/Alice is not authorized to perform: dynamodb:PutItem on resource: arn:aws:dynamodb:us-east-1:123456789012:table/myMusicTable because no identity-based policy allows the dynamodb:PutItem action.
```

**Avec l’ABAC**  
Si ABAC est activé pour vous Compte AWS, l'`put-item`action se termine correctement et ajoute un nouvel élément à votre tableau. Cela est dû au fait que la politique intégrée de la table autorise l’action `PutItem` si les conditions de balise de la politique IAM et de la table correspondent.

## Exemple 2 : Autoriser une action à l'aide de aws : RequestTag
<a name="abac-allow-example-request-tag"></a>

À l'aide de la [RequestTagclé de condition aws : /tag-key](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-requesttag), vous pouvez comparer la paire clé-valeur de balise transmise dans votre demande avec la paire de balises spécifiée dans la politique IAM. Vous pouvez autoriser une action spécifique, telle que `CreateTable`, en utilisant `aws:RequestTag` si les conditions de la balise ne correspondent pas. Effectuez les étapes suivantes pour ce faire :

------
#### [ Using the AWS CLI ]

1. Créez une [politique intégrée](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_managed-vs-inline.html#inline-policies) et ajoutez-la à un rôle auquel la politique [AmazonDynamoDBReadOnlyAccess](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/ReadOnlyAccess.html) AWS gérée est attachée, comme indiqué dans l'exemple suivant.

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

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Effect": "Allow",
               "Action": [
                   "dynamodb:CreateTable",
                   "dynamodb:TagResource"
               ],
               "Resource": "arn:aws:dynamodb:*:*:table/*",
               "Condition": {
                   "StringEquals": {
                       "aws:RequestTag/Owner": "John"
                   }
               }
           }
       ]
   }
   ```

------

1. Créez une table contenant la paire clé-valeur de balise de `"Owner": "John"`.

   ```
   aws dynamodb create-table \
   --attribute-definitions AttributeName=ID,AttributeType=S \
   --key-schema AttributeName=ID,KeyType=HASH  \
   --provisioned-throughput ReadCapacityUnits=1000,WriteCapacityUnits=500 \
   --region us-east-1 \
   --tags Key=Owner,Value=John \
   --table-name myMusicTable
   ```

------
#### [ Using the AWS SDK pour Python (Boto3) ]

1. Créez une [politique intégrée](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_managed-vs-inline.html#inline-policies) et ajoutez-la à un rôle auquel la politique [AmazonDynamoDBReadOnlyAccess](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonDynamoDBReadOnlyAccess.html) AWS gérée est attachée, comme indiqué dans l'exemple suivant.

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

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Effect": "Allow",
               "Action": [
                   "dynamodb:CreateTable",
                   "dynamodb:TagResource"
               ],
               "Resource": "arn:aws:dynamodb:*:*:table/*",
               "Condition": {
                   "StringEquals": {
                       "aws:RequestTag/Owner": "John"
                   }
               }
           }
       ]
   }
   ```

------

1. Créez une table contenant la paire clé-valeur de balise de `"Owner": "John"`.

   ```
   ddb_client = boto3.client('dynamodb')
   
   create_table_response = ddb_client.create_table(
       AttributeDefinitions=[
           {
               'AttributeName': 'id',
               'AttributeType': 'S'
           },
       ],
       TableName='myMusicTable',
       KeySchema=[
           {
               'AttributeName': 'id',
               'KeyType': 'HASH'
           },
       ],
           ProvisionedThroughput={
           'ReadCapacityUnits': 1000,
           'WriteCapacityUnits': 500
       },
       Tags=[
           {
               'Key': 'Owner',
               'Value': 'John'
           },
       ],
   )
   ```

------

**Sans l’ABAC**  
Si ABAC n'est pas activé pour vous Compte AWS, les conditions de balise de la politique intégrée et de la table DynamoDB ne correspondent pas. Par conséquent, la demande `CreateTable` échoue et votre table n’est pas créée.

```
An error occurred (AccessDeniedException) when calling the CreateTable operation: User: arn:aws:sts::123456789012:assumed-role/Admin/John is not authorized to perform: dynamodb:CreateTable on resource: arn:aws:dynamodb:us-east-1:123456789012:table/myMusicTable because no identity-based policy allows the dynamodb:CreateTable action.
```

**Avec l’ABAC**  
Si ABAC est activé pour vous Compte AWS, votre demande de création de table est terminée avec succès. Étant donné que la paire clé-valeur de la balise `"Owner": "John"` est présente dans la demande `CreateTable`, la politique en ligne permet à l’utilisateur `John` d’effectuer l’action `CreateTable`.

## Exemple 3 : Refuser une action à l'aide de aws : TagKeys
<a name="abac-deny-example-tag-key"></a>

À l'aide de la clé de TagKeys condition [aws :](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-tagkeys), vous pouvez comparer les clés de balise d'une demande avec les clés spécifiées dans la politique IAM. Vous pouvez refuser une action spécifique, par exemple `CreateTable`, avec `aws:TagKeys` si une clé de balise spécifique *n’est pas* présente dans la demande. Effectuez les étapes suivantes pour ce faire :

------
#### [ Using the AWS CLI ]

1. Ajoutez une [politique gérée par le client](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_managed-vs-inline.html#customer-managed-policies) à un rôle auquel est attachée la politique AWS gérée d'[AmazonDynamoDBFullaccès](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonDynamoDBFullAccess.html), comme indiqué dans l'exemple suivant.

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

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Effect": "Deny",
               "Action": [
                   "dynamodb:CreateTable",
                   "dynamodb:TagResource"
               ],
               "Resource": "arn:aws:dynamodb:*:*:table/*",
               "Condition": {
                   "Null": {
                       "aws:TagKeys": "false"
                   },
                   "ForAllValues:StringNotEquals": {
                       "aws:TagKeys": "CostCenter"
                   }
               }
           }
       ]
   }
   ```

------

1. Assumez le rôle auquel la politique était attachée et créez une table avec la clé de balise `Title`.

   ```
   aws dynamodb create-table \
   --attribute-definitions AttributeName=ID,AttributeType=S \
   --key-schema AttributeName=ID,KeyType=HASH  \
   --provisioned-throughput ReadCapacityUnits=1000,WriteCapacityUnits=500 \
   --region us-east-1 \
   --tags Key=Title,Value=ProductManager \
   --table-name myMusicTable
   ```

------
#### [ Using the AWS SDK pour Python (Boto3) ]

1. Ajoutez une [politique gérée par le client](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_managed-vs-inline.html#customer-managed-policies) à un rôle auquel est attachée la politique AWS gérée d'[AmazonDynamoDBFullaccès](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonDynamoDBFullAccess.html), comme indiqué dans l'exemple suivant.

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

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Effect": "Deny",
               "Action": [
                   "dynamodb:CreateTable",
                   "dynamodb:TagResource"
               ],
               "Resource": "arn:aws:dynamodb:*:*:table/*",
               "Condition": {
                   "Null": {
                       "aws:TagKeys": "false"
                   },
                   "ForAllValues:StringNotEquals": {
                       "aws:TagKeys": "CostCenter"
                   }
               }
           }
       ]
   }
   ```

------

1. Assumez le rôle auquel la politique était attachée et créez une table avec la clé de balise `Title`.

   ```
   ddb_client = boto3.client('dynamodb')
   
   create_table_response = ddb_client.create_table(
       AttributeDefinitions=[
           {
               'AttributeName': 'id',
               'AttributeType': 'S'
           },
       ],
       TableName='myMusicTable',
       KeySchema=[
           {
               'AttributeName': 'id',
               'KeyType': 'HASH'
           },
       ],
           ProvisionedThroughput={
           'ReadCapacityUnits': 1000,
           'WriteCapacityUnits': 500
       },
       Tags=[
           {
               'Key': 'Title',
               'Value': 'ProductManager'
           },
       ],
   )
   ```

------

**Sans l’ABAC**  
Si ABAC n'est pas activé pour vous Compte AWS, DynamoDB n'envoie pas les clés de balise de la commande à `create-table` IAM. La condition `Null` garantit que la condition a la valeur `false` s’il n’y a pas de clés de balise dans la demande. Comme la politique `Deny` ne correspond pas, la commande `create-table` s’exécute correctement.

**Avec l’ABAC**  
Si ABAC est activé pour vous Compte AWS, les clés de balise transmises dans la `create-table` commande sont transmises à IAM. La clé de balise `Title` est évaluée par rapport à la clé de balise basée sur les conditions, `CostCenter`, présente dans la politique `Deny`. La clé de balise `Title` ne correspond pas à la clé de balise présente dans la politique `Deny` à cause de l’opérateur `StringNotEquals`. Par conséquent, l’action `CreateTable` échoue et votre table n’est pas créée. L’exécution de la commande `create-table` renvoie le message d’erreur `AccessDeniedException`.

```
An error occurred (AccessDeniedException) when calling the CreateTable operation: User: arn:aws:sts::123456789012:assumed-role/DynamoFullAccessRole/ProductManager is not authorized to perform: dynamodb:CreateTable on resource: arn:aws:dynamodb:us-east-1:123456789012:table/myMusicTable with an explicit deny in an identity-based policy.
```

# Résolution des erreurs courantes liées à l’ABAC pour les tables et les index DynamoDB
<a name="abac-troubleshooting"></a>

Cette rubrique fournit des conseils de résolution pour les erreurs et problèmes courants que vous pouvez rencontrer lorsque vous mettez en œuvre l’ABAC dans des tables ou des index DynamoDB.

## Les clés de condition spécifiques au service dans les politiques génèrent une erreur
<a name="abac-troubleshooting-service-specific-keys"></a>

Les clés de condition spécifiques au service ne sont pas considérées comme des clés de condition valides. Si vous avez utilisé ce type de clés dans vos politiques, cela provoquera une erreur. Pour résoudre ce problème, vous devez remplacer les clés de condition spécifiques au service par une [clé de condition appropriée pour mettre en œuvre l’ABAC](attribute-based-access-control.md#condition-keys-implement-abac) dans DynamoDB.

Supposons, par exemple, que vous ayez utilisé la clé de `dynamodb:ResourceTag` condition [dans une politique intégrée](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_managed-vs-inline.html#inline-policies) qui exécute la [PutItem](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_PutItem.html)demande. Imaginez que la demande échoue avec le message d’erreur `AccessDeniedException`. L’exemple suivant montre la politique en ligne erronée avec la clé de condition `dynamodb:ResourceTag`.

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "dynamodb:PutItem"
            ],
            "Resource": "arn:aws:dynamodb:*:*:table/*",
            "Condition": {
                "StringEquals": {
                    "dynamodb:ResourceTag/Owner": "John"
                }
            }
        }
    ]
}
```

------

Pour résoudre ce problème, remplacez la clé de condition `dynamodb:ResourceTag` par `aws:ResourceTag`, comme indiqué dans l’exemple suivant.

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "dynamodb:PutItem"
            ],
            "Resource": "arn:aws:dynamodb:*:*:table/*",
            "Condition": {
                "StringEquals": {
                    "aws:ResourceTag/Owner": "John"
                }
            }
        }
    ]
}
```

------

## Impossible de désactiver l’ABAC
<a name="abac-troubleshooting-unable-opt-out"></a>

Si ABAC a été activé pour votre compte via Support, vous ne pourrez pas désactiver ABAC via la console DynamoDB. Pour désactiver l’ABAC, contactez [Support](https://console.aws.amazon.com/support).

Vous ne pouvez désactiver vous-même l’ABAC *que si* les conditions suivantes sont réunies :
+ Vous avez utilisé la méthode en libre-service pour [l’activer via la console DynamoDB](abac-enable-ddb.md#abac-enable-console).
+ Vous le désactiver dans les sept jours civils suivant son activation.

# Protection des données dans DynamoDB
<a name="data-protection"></a>

Amazon DynamoDB offre une infrastructure de stockage hautement durable, conçue pour un stockage de données principal et stratégique. Les données sont stockées de façon redondante sur plusieurs appareils situés dans plusieurs installations au sein d’une région Amazon DynamoDB.

DynamoDB protège les données utilisateur stockées au repos ainsi que les données en transit entre les clients locaux et DynamoDB, ainsi qu'entre DynamoDB et d'autres ressources au sein de la même région. AWS AWS 

**Topics**
+ [Chiffrement de DynamoDB au repos](EncryptionAtRest.md)
+ [Sécurisation des connexions DynamoDB à l’aide de points de terminaison d’un VPC et de politiques IAM](inter-network-traffic-privacy.md)

# 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",
  }
  ```

# Sécurisation des connexions DynamoDB à l’aide de points de terminaison d’un VPC et de politiques IAM
<a name="inter-network-traffic-privacy"></a>

Les connexions sont protégées à la fois entre Amazon DynamoDB et les applications sur site et entre DynamoDB et d'autres ressources au sein de la même région. AWS AWS 

## Politique requise pour les points de terminaison
<a name="inter-network-traffic-DescribeEndpoints"></a>

Amazon DynamoDB fournit une API [DescribeEndpoints](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_DescribeEndpoints.html) qui vous permet d'énumérer les informations relatives aux points de terminaison régionaux. Pour les demandes adressées aux points de terminaison DynamoDB publics, l’API répond quelle que soit la politique IAM DynamoDB configurée, même en cas de refus explicite ou implicite dans la politique de point de terminaison IAM ou d’un VPC. Cela est dû au fait que DynamoDB ignore intentionnellement l’autorisation pour l’API `DescribeEndpoints`.

Pour les demandes provenant d’un point de terminaison d’un VPC, les politiques de point de terminaison IAM et de cloud privé virtuel (VPC) doivent autoriser l’appel d’API `DescribeEndpoints` pour le ou les principaux responsables de la gestion des identités et des accès (IAM) demandeurs à l’aide de l’action IAM `dynamodb:DescribeEndpoints`. Dans le cas contraire, l’accès à l’API `DescribeEndpoints` est refusé.

Voici un exemple de stratégie de point de terminaison.

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::111122223333:root"
            },
            "Action": "dynamodb:DescribeEndpoints",
            "Resource": "*"
        }
    ]
}
```

------

## Trafic entre les clients de service et sur site et les applications
<a name="inter-network-traffic-privacy-on-prem"></a>

Vous avez deux options de connectivité entre votre réseau privé et AWS : 
+ Une AWS Site-to-Site VPN connexion. Pour plus d’informations, consultez [Présentation de AWS Site-to-Site VPN](https://docs.aws.amazon.com/vpn/latest/s2svpn/VPC_VPN.html) dans le *Guide de l’utilisateur AWS Site-to-Site VPN *.
+ Une Direct Connect connexion. Pour plus d’informations, consultez [Présentation de Direct Connect](https://docs.aws.amazon.com/directconnect/latest/UserGuide/Welcome.html) dans le *Guide de l’utilisateur Direct Connect *.

L'accès à DynamoDB via le réseau se fait par publication. AWS APIs Les clients doivent prendre en charge le protocole TLS (Transport Layer Security) 1.2. Nous recommandons TLS 1.3. Les clients doivent également prendre en charge les suites de chiffrement PFS (Perfect Forward Secrecy) comme Ephemeral Diffie-Hellman (DHE) ou Elliptic Curve Ephemeral Diffie-Hellman (ECDHE). La plupart des systèmes modernes tels que Java 7 et les versions ultérieures prennent en charge ces modes. De plus, vous devez signer les demandes à l’aide d’un ID de clé d’accès et d’une clé d’accès secrète, associées à un principal IAM. Vous pouvez également utiliser le service [AWS Security Token Service (STS)](https://docs.aws.amazon.com/STS/latest/APIReference/Welcome.html) afin de générer des informations d’identification de sécurité temporaires pour signer les demandes.

## Trafic entre les AWS ressources d'une même région
<a name="inter-network-traffic-privacy-within-region"></a>

Un point de terminaison Amazon Virtual Private Cloud (Amazon VPC) pour DynamoDB est une entité logique au sein d’un VPC qui autorise la connectivité uniquement à DynamoDB. Le VPC Amazon achemine les demandes vers DynamoDB et les réponses en retour vers le VPC. Pour plus d’informations, consultez [Points de terminaison VPC](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-endpoints.html) dans le *Guide de l’utilisateur Amazon VPC*. Pour des exemples de politiques que vous pouvez utiliser pour contrôler l’accès à partir de points de terminaison d’un VPC, consultez [Utilisation de politiques IAM pour contrôler l’accès à DynamoDB](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-endpoints-ddb.html). 

**Note**  
Les points de terminaison Amazon VPC ne sont pas accessibles via ou. AWS Site-to-Site VPN Direct Connect

# Gestion des identités et des accès AWS (IAM) et DynamoDB
<a name="identity-and-access-mgmt"></a>

 Gestion des identités et des accès AWS est un AWS service qui permet à un administrateur de contrôler en toute sécurité l'accès aux AWS ressources. Des administrateurs contrôlent les personnes qui peuvent être authentifiées (connectées) et autorisées (disposant d’autorisations) pour utiliser des ressources Amazon DynamoDB et DynamoDB Accelerator. Vous pouvez utiliser IAM pour gérer les autorisations d’accès et implémenter des politiques de sécurité pour Amazon DynamoDB et DynamoDB Accelerator. IAM est un AWS service que vous pouvez utiliser sans frais supplémentaires. 

 

**Topics**
+ [Gestion des identités et des accès pour Amazon DynamoDB](security-iam.md)
+ [Utilisation de conditions de politique IAM pour un contrôle d’accès précis](specifying-conditions.md)

# Gestion des identités et des accès pour Amazon DynamoDB
<a name="security-iam"></a>





Gestion des identités et des accès AWS (IAM) est un outil Service AWS qui permet à un administrateur de contrôler en toute sécurité l'accès aux AWS ressources. Des administrateurs IAM contrôlent les personnes qui *s’authentifient* (sont connectées) et *sont autorisées* (disposent d’autorisations) à utiliser des ressources DynamoDB. IAM est un Service AWS outil que vous pouvez utiliser sans frais supplémentaires.

**Topics**
+ [Public ciblé](#security_iam_audience)
+ [Authentification par des identités](#security_iam_authentication)
+ [Gestion de l’accès à l’aide de politiques](#security_iam_access-manage)
+ [Fonctionnement d’Amazon DynamoDB avec IAM](security_iam_service-with-iam.md)
+ [Exemples de stratégies basées sur l’identité pour Amazon DynamoDB](security_iam_id-based-policy-examples.md)
+ [Résolution de problèmes pour l’identité et l’accès Amazon DynamoDB](security_iam_troubleshoot.md)
+ [Politique IAM pour empêcher l’achat de capacité réservée DynamoDB](iam-policy-prevent-purchase-reserved-capacity.md)

## Public ciblé
<a name="security_iam_audience"></a>

La façon dont vous utilisez Gestion des identités et des accès AWS (IAM) varie en fonction de votre rôle :
+ **Utilisateur du service** : demandez des autorisations à votre administrateur si vous ne pouvez pas accéder aux fonctionnalités (voir [Résolution de problèmes pour l’identité et l’accès Amazon DynamoDB](security_iam_troubleshoot.md))
+ **Administrateur du service** : déterminez l’accès des utilisateurs et soumettez les demandes d’autorisation (voir [Fonctionnement d’Amazon DynamoDB avec IAM](security_iam_service-with-iam.md))
+ **Administrateur IAM** : rédigez des politiques pour gérer l’accès (voir [Exemples de stratégies basées sur l’identité pour Amazon DynamoDB](security_iam_id-based-policy-examples.md))

## Authentification par des identités
<a name="security_iam_authentication"></a>

L'authentification est la façon dont vous vous connectez à AWS l'aide de vos informations d'identification. Vous devez être authentifié en tant qu'utilisateur IAM ou en assumant un rôle IAM. Utilisateur racine d'un compte AWS

Vous pouvez vous connecter en tant qu'identité fédérée à l'aide d'informations d'identification provenant d'une source d'identité telle que AWS IAM Identity Center (IAM Identity Center), d'une authentification unique ou d'informations d'identification. Google/Facebook Pour plus d’informations sur la connexion, consultez [Connexion à votre Compte AWS](https://docs.aws.amazon.com/signin/latest/userguide/how-to-sign-in.html) dans le *Guide de l’utilisateur Connexion à AWS *.

Pour l'accès par programmation, AWS fournit un SDK et une CLI pour signer les demandes de manière cryptographique. Pour plus d’informations, consultez [Signature AWS Version 4 pour les demandes d’API](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_sigv.html) dans le *Guide de l’utilisateur IAM*.

### Compte AWS utilisateur root
<a name="security_iam_authentication-rootuser"></a>

 Lorsque vous créez un Compte AWS, vous commencez par une seule identité de connexion appelée *utilisateur Compte AWS root* qui dispose d'un accès complet à toutes Services AWS les ressources. Il est vivement déconseillé d’utiliser l’utilisateur racine pour vos tâches quotidiennes. Pour les tâches qui requièrent des informations d’identification de l’utilisateur racine, consultez [Tâches qui requièrent les informations d’identification de l’utilisateur racine](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_root-user.html#root-user-tasks) dans le *Guide de l’utilisateur IAM*. 

### Identité fédérée
<a name="security_iam_authentication-federated"></a>

Il est recommandé d'obliger les utilisateurs humains à utiliser la fédération avec un fournisseur d'identité pour accéder à Services AWS l'aide d'informations d'identification temporaires.

Une *identité fédérée* est un utilisateur provenant de l'annuaire de votre entreprise, de votre fournisseur d'identité Web ou Directory Service qui y accède à Services AWS l'aide d'informations d'identification provenant d'une source d'identité. Les identités fédérées assument des rôles qui fournissent des informations d’identification temporaires.

Pour une gestion des accès centralisée, nous vous recommandons d’utiliser AWS IAM Identity Center. Pour plus d’informations, consultez [Qu’est-ce que IAM Identity Center ?](https://docs.aws.amazon.com/singlesignon/latest/userguide/what-is.html) dans le *Guide de l’utilisateur AWS IAM Identity Center *.

### Utilisateurs et groupes IAM
<a name="security_iam_authentication-iamuser"></a>

Un *[utilisateur IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_users.html)* est une identité qui dispose d’autorisations spécifiques pour une seule personne ou application. Nous vous recommandons d’utiliser ces informations d’identification temporaires au lieu des utilisateurs IAM avec des informations d’identification à long terme. Pour plus d'informations, voir [Exiger des utilisateurs humains qu'ils utilisent la fédération avec un fournisseur d'identité pour accéder à AWS l'aide d'informations d'identification temporaires](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html#bp-users-federation-idp) dans le *guide de l'utilisateur IAM*.

[https://docs.aws.amazon.com/IAM/latest/UserGuide/id_groups.html](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_groups.html) spécifient une collection d’utilisateurs IAM et permettent de gérer plus facilement les autorisations pour de grands ensembles d’utilisateurs. Pour plus d’informations, consultez [Cas d’utilisation pour les utilisateurs IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/gs-identities-iam-users.html) dans le *Guide de l’utilisateur IAM*.

### Rôles IAM
<a name="security_iam_authentication-iamrole"></a>

Un *[rôle IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html)* est une identité dotée d’autorisations spécifiques qui fournit des informations d’identification temporaires. Vous pouvez assumer un rôle en [passant d'un rôle d'utilisateur à un rôle IAM (console)](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use_switch-role-console.html) ou en appelant une opération d' AWS API AWS CLI ou d'API. Pour plus d’informations, consultez [Méthodes pour endosser un rôle](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_manage-assume.html) dans le *Guide de l’utilisateur IAM*.

Les rôles IAM sont utiles pour l’accès des utilisateurs fédérés, les autorisations temporaires des utilisateurs IAM, les accès intercompte, les accès entre services et les applications exécutées sur Amazon EC2. Pour plus d’informations, consultez [Accès intercompte aux ressources dans IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies-cross-account-resource-access.html) dans le *Guide de l’utilisateur IAM*.

## Gestion de l’accès à l’aide de politiques
<a name="security_iam_access-manage"></a>

Vous contrôlez l'accès en AWS créant des politiques et en les associant à AWS des identités ou à des ressources. Une politique définit les autorisations lorsqu'elles sont associées à une identité ou à une ressource. AWS évalue ces politiques lorsqu'un directeur fait une demande. La plupart des politiques sont stockées AWS sous forme de documents JSON. Pour plus d’informations les documents de politique JSON, consultez [Vue d’ensemble des politiques JSON](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html#access_policies-json) dans le *Guide de l’utilisateur IAM*.

À l’aide de politiques, les administrateurs précisent qui a accès à quoi en définissant quel **principal** peut effectuer des **actions** sur quelles **ressources** et dans quelles **conditions**.

Par défaut, les utilisateurs et les rôles ne disposent d’aucune autorisation. Un administrateur IAM crée des politiques IAM et les ajoute aux rôles, que les utilisateurs peuvent ensuite assumer. Les politiques IAM définissent les autorisations quelle que soit la méthode que vous utilisez pour exécuter l’opération.

### Politiques basées sur l’identité
<a name="security_iam_access-manage-id-based-policies"></a>

Les stratégies basées sur l’identité sont des documents de stratégie d’autorisations JSON que vous attachez à une identité (utilisateur, groupe ou rôle). Ces politiques contrôlent les actions que peuvent exécuter ces identités, sur quelles ressources et dans quelles conditions. Pour découvrir comment créer une politique basée sur l’identité, consultez [Définition d’autorisations IAM personnalisées avec des politiques gérées par le client](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create.html) dans le *Guide de l’utilisateur IAM*.

Les politiques basées sur l’identité peuvent être des *politiques intégrées* (intégrées directement dans une seule identité) ou des *politiques gérées (politiques* autonomes associées à plusieurs identités). Pour découvrir comment choisir entre des politiques gérées et en ligne, consultez [Choix entre les politiques gérées et les politiques en ligne](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies-choosing-managed-or-inline.html) dans le *Guide de l’utilisateur IAM*.

### Politiques basées sur les ressources
<a name="security_iam_access-manage-resource-based-policies"></a>

Les politiques basées sur les ressources sont des documents de politique JSON que vous attachez à une ressource. Les exemples incluent *les politiques de confiance de rôle* IAM et les *stratégies de compartiment* Amazon S3. Dans les services qui sont compatibles avec les politiques basées sur les ressources, les administrateurs de service peuvent les utiliser pour contrôler l’accès à une ressource spécifique. Vous devez [spécifier un principal](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_principal.html) dans une politique basée sur les ressources.

Les politiques basées sur les ressources sont des politiques en ligne situées dans ce service. Vous ne pouvez pas utiliser les politiques AWS gérées par IAM dans une stratégie basée sur les ressources.

### Autres types de politique
<a name="security_iam_access-manage-other-policies"></a>

AWS prend en charge des types de politiques supplémentaires qui peuvent définir les autorisations maximales accordées par les types de politiques les plus courants :
+ **Limites d’autorisations** : une limite des autorisations définit le nombre maximum d’autorisations qu’une politique basée sur l’identité peut accorder à une entité IAM. Pour plus d’informations, consultez [Limites d’autorisations pour des entités IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_boundaries.html) dans le *Guide de l’utilisateur IAM*.
+ **Politiques de contrôle des services (SCPs)** — Spécifiez les autorisations maximales pour une organisation ou une unité organisationnelle dans AWS Organizations. Pour plus d’informations, consultez [Politiques de contrôle de service](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_scps.html) dans le *Guide de l’utilisateur AWS Organizations *.
+ **Politiques de contrôle des ressources (RCPs)** : définissez le maximum d'autorisations disponibles pour les ressources de vos comptes. Pour plus d'informations, voir [Politiques de contrôle des ressources (RCPs)](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_rcps.html) dans le *guide de AWS Organizations l'utilisateur*.
+ **Politiques de session** : politiques avancées que vous passez en tant que paramètre lorsque vous créez par programmation une session temporaire pour un rôle ou un utilisateur fédéré. Pour plus d’informations, consultez [Politiques de session](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html#policies_session) dans le *Guide de l’utilisateur IAM*.

### Plusieurs types de politique
<a name="security_iam_access-manage-multiple-policies"></a>

Lorsque plusieurs types de politiques s’appliquent à la requête, les autorisations en résultant sont plus compliquées à comprendre. Pour savoir comment AWS déterminer s'il faut autoriser une demande lorsque plusieurs types de politiques sont impliqués, consultez la section [Logique d'évaluation des politiques](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_evaluation-logic.html) dans le *guide de l'utilisateur IAM*.

# Fonctionnement d’Amazon DynamoDB avec IAM
<a name="security_iam_service-with-iam"></a>

Avant d’utiliser IAM pour gérer l’accès à DynamoDB, découvrez les fonctions IAM que vous pouvez utiliser avec DynamoDB.






| Fonctionnalité IAM | Support DynamoDB | 
| --- | --- | 
|  [Politiques basées sur l’identité](#security_iam_service-with-iam-id-based-policies)  |   Oui  | 
|  [Politiques basées sur les ressources](#security_iam_service-with-iam-resource-based-policies)  |   Oui  | 
|  [Actions de politique](#security_iam_service-with-iam-id-based-policies-actions)  |   Oui  | 
|  [Ressources de politique](#security_iam_service-with-iam-id-based-policies-resources)  |   Oui  | 
|  [Clés de condition de politique](#security_iam_service-with-iam-id-based-policies-conditionkeys)  |   Oui  | 
|  [ACLs](#security_iam_service-with-iam-acls)  |   Non   | 
|  [ABAC (étiquettes dans les politiques)](#security_iam_service-with-iam-tags)  |   Oui  | 
|  [Informations d’identification temporaires](#security_iam_service-with-iam-roles-tempcreds)  |   Oui  | 
|  [Autorisations de principal](#security_iam_service-with-iam-principal-permissions)  |   Oui  | 
|  [Rôles de service](#security_iam_service-with-iam-roles-service)  |   Oui  | 
|  [Rôles liés à un service](#security_iam_service-with-iam-roles-service-linked)  |   Oui  | 

*Pour obtenir une vue d'ensemble du fonctionnement de DynamoDB et des AWS autres services avec la plupart des fonctionnalités IAM, [AWS consultez la section Services compatibles avec IAM dans le Guide de l'utilisateur](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_aws-services-that-work-with-iam.html) IAM.*

## Politiques basées sur l’identité pour DynamoDB
<a name="security_iam_service-with-iam-id-based-policies"></a>

**Prend en charge les politiques basées sur l’identité :** oui

Les politiques basées sur l’identité sont des documents de politique d’autorisations JSON que vous pouvez attacher à une identité telle qu’un utilisateur, un groupe d’utilisateurs ou un rôle IAM. Ces politiques contrôlent quel type d’actions des utilisateurs et des rôles peuvent exécuter, sur quelles ressources et dans quelles conditions. Pour découvrir comment créer une politique basée sur l’identité, consultez [Définition d’autorisations IAM personnalisées avec des politiques gérées par le client](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create.html) dans le *Guide de l’utilisateur IAM*.

Avec les politiques IAM basées sur l’identité, vous pouvez spécifier des actions et ressources autorisées ou refusées, ainsi que les conditions dans lesquelles les actions sont autorisées ou refusées. Pour découvrir tous les éléments que vous utilisez dans une politique JSON, consultez [Références des éléments de politique JSON IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements.html) dans le *Guide de l’utilisateur IAM*.

### Exemples de stratégies basées sur l’identité pour DynamoDB
<a name="security_iam_service-with-iam-id-based-policies-examples"></a>



Pour voir des exemples de politiques DynamoDB basées sur l’identité, veuillez consulter [Exemples de stratégies basées sur l’identité pour Amazon DynamoDB](security_iam_id-based-policy-examples.md).

## Politiques basées sur une ressource dans DynamoDB
<a name="security_iam_service-with-iam-resource-based-policies"></a>

**Prend en charge les politiques basées sur les ressources** : oui

Les politiques basées sur les ressources sont des documents de politique JSON que vous attachez à une ressource. Par exemple, les *politiques de confiance de rôle* IAM et les *politiques de compartiment* Amazon S3 sont des politiques basées sur les ressources. Dans les services qui sont compatibles avec les politiques basées sur les ressources, les administrateurs de service peuvent les utiliser pour contrôler l’accès à une ressource spécifique. Pour la ressource dans laquelle se trouve la politique, cette dernière définit quel type d’actions un principal spécifié peut effectuer sur cette ressource et dans quelles conditions. Vous devez [spécifier un principal](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_principal.html) dans une politique basée sur les ressources. Les principaux peuvent inclure des comptes, des utilisateurs, des rôles, des utilisateurs fédérés ou. Services AWS

Pour permettre un accès intercompte, vous pouvez spécifier un compte entier ou des entités IAM dans un autre compte en tant que principal dans une politique basée sur les ressources. Pour plus d’informations, consultez [Accès intercompte aux ressources dans IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies-cross-account-resource-access.html) dans le *Guide de l’utilisateur IAM*.

## Actions de politique pour DynamoDB
<a name="security_iam_service-with-iam-id-based-policies-actions"></a>

**Prend en charge les actions de politique :** oui

Les administrateurs peuvent utiliser les politiques AWS JSON pour spécifier qui a accès à quoi. C’est-à-dire, quel **principal** peut effectuer **des actions** sur quelles **ressources** et dans quelles **conditions**.

L’élément `Action` d’une politique JSON décrit les actions que vous pouvez utiliser pour autoriser ou refuser l’accès à une politique. Intégration d’actions dans une politique afin d’accorder l’autorisation d’exécuter les opérations associées.



Pour afficher la liste des actions DynamoDB, veuillez consulter [Actions définies par Amazon DynamoDB](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazondynamodb.html#amazondynamodb-actions-as-permissions) dans la *Référence de l’autorisation de service*.

Les actions de politique dans DynamoDB utilisent le préfixe suivant avant l’action :

```
aws
```

Pour indiquer plusieurs actions dans une seule déclaration, séparez-les par des virgules.

```
"Action": [
      "aws:action1",
      "aws:action2"
         ]
```





Pour voir des exemples de politiques DynamoDB basées sur l’identité, veuillez consulter [Exemples de stratégies basées sur l’identité pour Amazon DynamoDB](security_iam_id-based-policy-examples.md).

## Ressources de politique pour DynamoDB
<a name="security_iam_service-with-iam-id-based-policies-resources"></a>

**Prend en charge les ressources de politique :** oui

Les administrateurs peuvent utiliser les politiques AWS JSON pour spécifier qui a accès à quoi. C’est-à-dire, quel **principal** peut effectuer **des actions** sur quelles **ressources** et dans quelles **conditions**.

L’élément de politique JSON `Resource` indique le ou les objets auxquels l’action s’applique. Il est recommandé de définir une ressource à l’aide de son [Amazon Resource Name (ARN)](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference-arns.html). Pour les actions qui ne sont pas compatibles avec les autorisations de niveau ressource, utilisez un caractère générique (\$1) afin d’indiquer que l’instruction s’applique à toutes les ressources.

```
"Resource": "*"
```

*Pour consulter la liste des types de ressources DynamoDB et ARNs leurs caractéristiques, [consultez la section Ressources définies par Amazon DynamoDB dans le Service Authorization Reference](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazondynamodb.html#amazondynamodb-resources-for-iam-policies).* Pour savoir les actions avec lesquelles vous pouvez spécifier l’ARN de chaque ressource, consultez [Actions définies par Amazon DynamoDB](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazondynamodb.html#amazondynamodb-actions-as-permissions).





Pour voir des exemples de politiques DynamoDB basées sur l’identité, veuillez consulter [Exemples de stratégies basées sur l’identité pour Amazon DynamoDB](security_iam_id-based-policy-examples.md).

## Clés de condition de politique pour DynamoDB
<a name="security_iam_service-with-iam-id-based-policies-conditionkeys"></a>

**Prend en charge les clés de condition de politique spécifiques au service :** oui

Les administrateurs peuvent utiliser les politiques AWS JSON pour spécifier qui a accès à quoi. C’est-à-dire, quel **principal** peut effectuer **des actions** sur quelles **ressources** et dans quelles **conditions**.

L’élément `Condition` indique à quel moment les instructions s’exécutent en fonction de critères définis. Vous pouvez créer des expressions conditionnelles qui utilisent des [opérateurs de condition](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_condition_operators.html), tels que les signes égal ou inférieur à, pour faire correspondre la condition de la politique aux valeurs de la demande. Pour voir toutes les clés de condition AWS globales, voir les clés de [contexte de condition AWS globales](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html) dans le *guide de l'utilisateur IAM*.

Pour afficher la liste des clés de condition DynamoDB, veuillez consulter [Clés de condition pour Amazon DynamoDB](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazondynamodb.html#amazondynamodb-policy-keys) dans la *Référence de l’autorisation de service*. Pour savoir avec quelles actions et ressources vous pouvez utiliser une clé de condition, consultez [Actions définies par Amazon DynamoDB](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazondynamodb.html#amazondynamodb-actions-as-permissions).

Pour voir des exemples de politiques DynamoDB basées sur l’identité, veuillez consulter [Exemples de stratégies basées sur l’identité pour Amazon DynamoDB](security_iam_id-based-policy-examples.md).

## Listes de contrôle d'accès (ACLs) dans DynamoDB
<a name="security_iam_service-with-iam-acls"></a>

**Supports ACLs :** Non 

Les listes de contrôle d'accès (ACLs) contrôlent les principaux (membres du compte, utilisateurs ou rôles) autorisés à accéder à une ressource. ACLs sont similaires aux politiques basées sur les ressources, bien qu'elles n'utilisent pas le format de document de politique JSON.

## Contrôle d’accès par attributs (ABAC) avec DynamoDB
<a name="security_iam_service-with-iam-tags"></a>

**Prise en charge d’ABAC (balises dans les politiques) :** Oui

Le contrôle d’accès par attributs (ABAC) est une stratégie d’autorisation qui définit les autorisations en fonction des attributs appelés balises. Vous pouvez associer des balises aux entités et aux AWS ressources IAM, puis concevoir des politiques ABAC pour autoriser les opérations lorsque la balise du principal correspond à la balise de la ressource.

Pour contrôler l’accès basé sur des étiquettes, vous devez fournir les informations d’étiquette dans l’[élément de condition](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_condition.html) d’une politique utilisant les clés de condition `aws:ResourceTag/key-name`, `aws:RequestTag/key-name` ou `aws:TagKeys`.

Si un service prend en charge les trois clés de condition pour tous les types de ressources, alors la valeur pour ce service est **Oui**. Si un service prend en charge les trois clés de condition pour certains types de ressources uniquement, la valeur est **Partielle**.

Pour plus d’informations sur ABAC, consultez [Définition d’autorisations avec l’autorisation ABAC](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction_attribute-based-access-control.html) dans le *Guide de l’utilisateur IAM*. Pour accéder à un didacticiel décrivant les étapes de configuration de l’ABAC, consultez [Utilisation du contrôle d’accès par attributs (ABAC)](https://docs.aws.amazon.com/IAM/latest/UserGuide/tutorial_attribute-based-access-control.html) dans le *Guide de l’utilisateur IAM*.

## Utilisation des informations d’identification temporaires avec DynamoDB
<a name="security_iam_service-with-iam-roles-tempcreds"></a>

**Prend en charge les informations d’identification temporaires :** oui

Les informations d'identification temporaires fournissent un accès à court terme aux AWS ressources et sont automatiquement créées lorsque vous utilisez la fédération ou que vous changez de rôle. AWS recommande de générer dynamiquement des informations d'identification temporaires au lieu d'utiliser des clés d'accès à long terme. Pour plus d’informations, consultez [Informations d’identification de sécurité temporaires dans IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp.html) et [Services AWS compatibles avec IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_aws-services-that-work-with-iam.html) dans le *Guide de l’utilisateur IAM*.

## Autorisations principales entre services pour DynamoDB
<a name="security_iam_service-with-iam-principal-permissions"></a>

**Prend en charge les sessions d’accès direct (FAS) :** oui

 Les sessions d'accès direct (FAS) utilisent les autorisations du principal appelant et Service AWS, combinées Service AWS à la demande d'envoi de demandes aux services en aval. Pour plus de détails sur la politique relative à la transmission de demandes FAS, consultez la section [Sessions de transmission d’accès](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_forward_access_sessions.html). 

## Fonctions de service pour DynamoDB
<a name="security_iam_service-with-iam-roles-service"></a>

**Prend en charge les rôles de service :** oui

 Un rôle de service est un [rôle IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html) qu’un service endosse pour accomplir des actions en votre nom. Un administrateur IAM peut créer, modifier et supprimer un rôle de service à partir d’IAM. Pour plus d’informations, consultez [Création d’un rôle pour la délégation d’autorisations à un Service AWS](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-service.html) dans le *Guide de l’utilisateur IAM*. 

**Avertissement**  
La modification des autorisations d’une fonction du service peut altérer la fonctionnalité de DynamoDB. Ne modifiez des fonctions du service que quand DynamoDB vous le conseille.

## Rôles liés à un service pour DynamoDB
<a name="security_iam_service-with-iam-roles-service-linked"></a>

**Prend en charge les rôles liés à un service :** oui

 Un rôle lié à un service est un type de rôle de service lié à un. Service AWS Le service peut endosser le rôle afin d’effectuer une action en votre nom. Les rôles liés au service apparaissent dans votre Compte AWS fichier et appartiennent au service. Un administrateur IAM peut consulter, mais ne peut pas modifier, les autorisations concernant les rôles liés à un service. 

Pour plus d’informations sur la création ou la gestion des rôles liés à un service, consultez [Services AWS qui fonctionnent avec IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_aws-services-that-work-with-iam.html). Recherchez un service dans le tableau qui inclut un `Yes` dans la colonne **Rôle lié à un service**. Choisissez le lien **Oui** pour consulter la documentation du rôle lié à ce service.

### Rôles liés au service pris en charge dans DynamoDB
<a name="security_iam_service-with-iam-roles-service-linked-supported-by-dynamodb"></a>

Les rôles liés au service suivants sont pris en charge dans DynamoDB.
+ DynamoDB utilise le **AWSServiceRoleForDynamoDBReplication**rôle lié à un service pour la réplication des tables globales entre elles. Régions AWS Consultez [Sécurité des tables globales DynamoDB](globaltables-security.md) pour plus d'informations sur le rôle **AWSServiceRoleForDynamoDBReplication**lié à un service.
+ DynamoDB Accelerator (DAX) utilise le ** AWSServiceRoleForrôle DAX lié à un service pour configurer et gérer un cluster** DAX. [Utilisation des rôles IAM liés à un service pour DAX](using-service-linked-roles.md)Pour plus d'informations sur le rôle lié au service **AWSServiceRoleForDAX**, reportez-vous à la section.

Outre ces rôles liés au service DynamoDB, DynamoDB utilise le service Application Auto Scaling pour gérer automatiquement les paramètres de débit sur les tables avec mode de capacité provisionné. Le service Application Auto Scaling utilise le rôle lié au service ** AWSServiceRoleForApplicationAutoScaling\$1DynamoDBTable**pour gérer les paramètres de débit sur les tables DynamoDB pour lesquelles le dimensionnement automatique est activé. Pour plus d’informations, consultez [Rôles liés à un service pour Application Auto Scaling](https://docs.aws.amazon.com/autoscaling/application/userguide/application-auto-scaling-service-linked-roles.html).

# Exemples de stratégies basées sur l’identité pour Amazon DynamoDB
<a name="security_iam_id-based-policy-examples"></a>

Par défaut, les utilisateurs et les rôles ne sont pas autorisés à créer ou modifier les ressources DynamoDB. Pour octroyer aux utilisateurs des autorisations d’effectuer des actions sur les ressources dont ils ont besoin, un administrateur IAM peut créer des politiques IAM.

Pour apprendre à créer une politique basée sur l’identité IAM à l’aide de ces exemples de documents de politique JSON, consultez [Création de politiques IAM (console)](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create-console.html) dans le *Guide de l’utilisateur IAM*.

*Pour en savoir plus sur les actions et les types de ressources définis par DynamoDB, y compris le format de ARNs chaque type de ressource, [consultez la section Actions, ressources et clés de condition pour Amazon DynamoDB dans la référence d'autorisation de service](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazondynamodb.html).*

**Topics**
+ [Bonnes pratiques en matière de politiques](#security_iam_service-with-iam-policy-best-practices)
+ [Utilisation de la console DynamoDB](#security_iam_id-based-policy-examples-console)
+ [Autorisation accordée aux utilisateurs pour afficher leurs propres autorisations](#security_iam_id-based-policy-examples-view-own-permissions)
+ [Utilisation des politiques basées sur une identité avec Amazon DynamoDB](using-identity-based-policies.md)

## Bonnes pratiques en matière de politiques
<a name="security_iam_service-with-iam-policy-best-practices"></a>

Les stratégies basées sur l’identité déterminent si une personne peut créer, consulter ou supprimer des ressources DynamoDB dans votre compte. Ces actions peuvent entraîner des frais pour votre Compte AWS. Lorsque vous créez ou modifiez des politiques basées sur l’identité, suivez ces instructions et recommandations :
+ **Commencez AWS par les politiques gérées et passez aux autorisations du moindre privilège : pour commencer à accorder des autorisations** à vos utilisateurs et à vos charges de travail, utilisez les *politiques AWS gérées* qui accordent des autorisations pour de nombreux cas d'utilisation courants. Ils sont disponibles dans votre Compte AWS. Nous vous recommandons de réduire davantage les autorisations en définissant des politiques gérées par les AWS clients spécifiques à vos cas d'utilisation. Pour plus d’informations, consultez [politiques gérées par AWS](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_managed-vs-inline.html#aws-managed-policies) ou [politiques gérées par AWS pour les activités professionnelles](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_job-functions.html) dans le *Guide de l’utilisateur IAM*.
+ **Accordez les autorisations de moindre privilège** : lorsque vous définissez des autorisations avec des politiques IAM, accordez uniquement les autorisations nécessaires à l’exécution d’une seule tâche. Pour ce faire, vous définissez les actions qui peuvent être entreprises sur des ressources spécifiques dans des conditions spécifiques, également appelées *autorisations de moindre privilège*. Pour plus d’informations sur l’utilisation d’IAM pour appliquer des autorisations, consultez [politiques et autorisations dans IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html) dans le *Guide de l’utilisateur IAM*.
+ **Utilisez des conditions dans les politiques IAM pour restreindre davantage l’accès** : vous pouvez ajouter une condition à vos politiques afin de limiter l’accès aux actions et aux ressources. Par exemple, vous pouvez écrire une condition de politique pour spécifier que toutes les demandes doivent être envoyées via SSL. Vous pouvez également utiliser des conditions pour accorder l'accès aux actions de service si elles sont utilisées par le biais d'un service spécifique Service AWS, tel que CloudFormation. Pour plus d’informations, consultez [Conditions pour éléments de politique JSON IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_condition.html) dans le *Guide de l’utilisateur IAM*.
+ **Utilisez l’Analyseur d’accès IAM pour valider vos politiques IAM afin de garantir des autorisations sécurisées et fonctionnelles** : l’Analyseur d’accès IAM valide les politiques nouvelles et existantes de manière à ce que les politiques IAM respectent le langage de politique IAM (JSON) et les bonnes pratiques IAM. IAM Access Analyzer fournit plus de 100 vérifications de politiques et des recommandations exploitables pour vous aider à créer des politiques sécurisées et fonctionnelles. Pour plus d’informations, consultez [Validation de politiques avec IAM Access Analyzer](https://docs.aws.amazon.com/IAM/latest/UserGuide/access-analyzer-policy-validation.html) dans le *Guide de l’utilisateur IAM*.
+ **Exiger l'authentification multifactorielle (MFA**) : si vous avez un scénario qui nécessite des utilisateurs IAM ou un utilisateur root, activez l'authentification MFA pour une sécurité accrue. Compte AWS Pour exiger la MFA lorsque des opérations d’API sont appelées, ajoutez des conditions MFA à vos politiques. Pour plus d’informations, consultez [Sécurisation de l’accès aux API avec MFA](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_mfa_configure-api-require.html) dans le *Guide de l’utilisateur IAM*.

Pour plus d’informations sur les bonnes pratiques dans IAM, consultez [Bonnes pratiques de sécurité dans IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html) dans le *Guide de l’utilisateur IAM*.

## Utilisation de la console DynamoDB
<a name="security_iam_id-based-policy-examples-console"></a>

Pour accéder à la console Amazon DynamoDB, vous devez disposer d’un ensemble minimum d’autorisations. Ces autorisations doivent vous permettre de répertorier et d'afficher les détails relatifs aux ressources DynamoDB de votre. Compte AWS Si vous créez une politique basée sur l’identité qui est plus restrictive que l’ensemble minimum d’autorisations requis, la console ne fonctionnera pas comme prévu pour les entités (utilisateurs ou rôles) tributaires de cette politique.

Il n'est pas nécessaire d'accorder des autorisations de console minimales aux utilisateurs qui appellent uniquement l'API AWS CLI ou l' AWS API. Autorisez plutôt l’accès à uniquement aux actions qui correspondent à l’opération d’API qu’ils tentent d’effectuer.

Pour garantir que les utilisateurs et les rôles peuvent toujours utiliser la console DynamoDB, associez également DynamoDB ou la politique gérée aux `ConsoleAccess` entités `ReadOnly` AWS . Pour plus d’informations, consultez [Ajout d’autorisations à un utilisateur](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_users_change-permissions.html#users_change_permissions-add-console) dans le *Guide de l’utilisateur IAM*.

## Autorisation accordée aux utilisateurs pour afficher leurs propres autorisations
<a name="security_iam_id-based-policy-examples-view-own-permissions"></a>

Cet exemple montre comment créer une politique qui permet aux utilisateurs IAM d’afficher les politiques en ligne et gérées attachées à leur identité d’utilisateur. Cette politique inclut les autorisations permettant d'effectuer cette action sur la console ou par programmation à l'aide de l'API AWS CLI or AWS .

```
{
    "Version": "2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "ViewOwnUserInfo",
            "Effect": "Allow",
            "Action": [
                "iam:GetUserPolicy",
                "iam:ListGroupsForUser",
                "iam:ListAttachedUserPolicies",
                "iam:ListUserPolicies",
                "iam:GetUser"
            ],
            "Resource": ["arn:aws:iam::*:user/${aws:username}"]
        },
        {
            "Sid": "NavigateInConsole",
            "Effect": "Allow",
            "Action": [
                "iam:GetGroupPolicy",
                "iam:GetPolicyVersion",
                "iam:GetPolicy",
                "iam:ListAttachedGroupPolicies",
                "iam:ListGroupPolicies",
                "iam:ListPolicyVersions",
                "iam:ListPolicies",
                "iam:ListUsers"
            ],
            "Resource": "*"
        }
    ]
}
```

# Utilisation des politiques basées sur une identité avec Amazon DynamoDB
<a name="using-identity-based-policies"></a>

Cette rubrique traite de l'utilisation des politiques basées sur l'identité Gestion des identités et des accès AWS (IAM) avec Amazon DynamoDB et fournit des exemples. Les exemples montrent comment un administrateur de comptes peut attacher des politiques d’autorisations à des identités IAM (utilisateurs, groupes et rôles), et ainsi accorder des autorisations d’effectuer des opérations sur des ressources Amazon DynamoDB.

Les sections de cette rubrique couvrent les sujets suivants :
+ [Autorisations IAM requises pour utiliser la console Amazon DynamoDB](#console-permissions)
+ [AWS politiques IAM gérées (prédéfinies) pour Amazon DynamoDB](#access-policy-examples-aws-managed)
+ [Exemples de politiques gérées par le client](#access-policy-examples-for-sdk-cli)



Un exemple de politique d’autorisation est exposé ci-dessous.

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "DescribeQueryScanBooksTable",
            "Effect": "Allow",
            "Action": [
                "dynamodb:DescribeTable",
                "dynamodb:Query",
                "dynamodb:Scan"
            ],
            "Resource": "arn:aws:dynamodb:us-west-2:111122223333:table/Books"
        }
    ]
}
```

------

 La politique précédente comporte une déclaration qui accorde des autorisations pour trois actions DynamoDB `dynamodb:DescribeTable` (`dynamodb:Query`,, `dynamodb:Scan` et) sur une table de `us-west-2` AWS la région, qui appartient au compte spécifié par AWS . `account-id` L’*Amazon Resource Name (ARN)* dans la valeur `Resource` spécifie la table à laquelle les autorisations s’appliquent.

## Autorisations IAM requises pour utiliser la console Amazon DynamoDB
<a name="console-permissions"></a>

Pour utiliser la console DynamoDB, un utilisateur doit disposer d'un ensemble minimal d'autorisations lui permettant d'utiliser les ressources DynamoDB de son AWS compte. Outre ces autorisations DynamoDB, la console nécessite d’autres autorisations :
+  CloudWatch Autorisations Amazon pour afficher les statistiques et les graphiques.
+ AWS Data Pipeline autorisations d'exportation et d'importation de données DynamoDB. 
+  Gestion des identités et des accès AWS autorisations d'accès aux rôles nécessaires pour les exportations et les importations.
+ Amazon Simple Notification Service est autorisé à vous avertir chaque fois qu'une CloudWatch alarme est déclenchée.
+ AWS Lambda autorisations pour traiter les enregistrements DynamoDB Streams.

Si vous créez une politique IAM plus restrictive que les autorisations minimales requises, la console ne fonctionnera pas comme prévu pour les utilisateurs dotés de cette politique IAM. Pour garantir que ces utilisateurs peuvent toujours utiliser la console DynamoDB, associez également la politique gérée à `AmazonDynamoDBReadOnlyAccess` AWS l'utilisateur, comme décrit dans. [AWS politiques IAM gérées (prédéfinies) pour Amazon DynamoDB](#access-policy-examples-aws-managed)

Il n'est pas nécessaire d'accorder des autorisations de console minimales aux utilisateurs qui appellent uniquement l'API AWS CLI ou l'API Amazon DynamoDB.

**Note**  
 Si vous faites référence à un point de terminaison VPC, vous devez également autoriser l'appel d' DescribeEndpoints API pour le ou les principaux IAM demandeurs avec l'action IAM (dynamodb :). DescribeEndpoints Pour de plus amples informations, veuillez consulter [Politique requise pour les points de terminaison](inter-network-traffic-privacy.md#inter-network-traffic-DescribeEndpoints). 

## AWS politiques IAM gérées (prédéfinies) pour Amazon DynamoDB
<a name="access-policy-examples-aws-managed"></a>

AWS répond à certains cas d'utilisation courants en fournissant des politiques IAM autonomes créées et administrées par. AWS Ces politiques AWS gérées accordent les autorisations nécessaires pour les cas d'utilisation courants afin que vous puissiez éviter d'avoir à rechercher les autorisations nécessaires. Pour plus d’informations, consultez [Politiques gérées par AWS](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_managed-vs-inline.html#aws-managed-policies) dans le *Guide de l’utilisateur IAM*.

Les politiques AWS gérées suivantes, que vous pouvez associer aux utilisateurs de votre compte, sont spécifiques à DynamoDB et sont regroupées par scénario d'utilisation :
+ **AmazonDynamoDBReadOnlyAccess**— Accorde un accès en lecture seule aux ressources DynamoDB via le. AWS Management Console
+ **AmazonDynamoDBFullAccès** : accorde un accès complet aux ressources DynamoDB par le biais du. AWS Management Console

Vous pouvez consulter ces politiques d'autorisations AWS gérées en vous connectant à la console IAM et en y recherchant des politiques spécifiques.

**Important**  
La bonne pratique consiste à créer des politiques IAM personnalisées qui accordent le [moindre privilège](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html#grant-least-privilege) aux utilisateurs, rôles ou groupes IAM qui en ont besoin. 

## Exemples de politiques gérées par le client
<a name="access-policy-examples-for-sdk-cli"></a>

Cette section contient des exemples de politiques qui accordent des autorisations pour diverses actions DynamoDB. Ces politiques fonctionnent lorsque vous utilisez AWS SDKs ou le AWS CLI. Lorsque vous utilisez la console, vous devez accorder des autorisations supplémentaires spécifiques de la console. Pour de plus amples informations, veuillez consulter [Autorisations IAM requises pour utiliser la console Amazon DynamoDB](#console-permissions).

**Note**  
Tous les exemples de politique suivants utilisent l'une des AWS régions et contiennent des noms de comptes IDs et de tables fictifs.

Exemples :
+ [Politique IAM pour accorder des autorisations à toutes les actions DynamoDB sur une table](grant-permissions-to-any-action-on-table.md)
+ [Politique IAM pour accorder des autorisations en lecture seule sur des éléments dans une table DynamoDB](read-only-permissions-on-table-items.md)
+ [Politique IAM pour accorder l’accès à une table DynamoDB spécifique et à ses index](iam-policy-specific-table-indexes.md)
+ [Politique IAM pour lire, écrire, mettre à jour et supprimer l’accès sur une table DynamoDB](iam-policy-example-data-crud.md)
+ [Politique IAM pour séparer les environnements DynamoDB dans le même compte AWS](iam-policy-separate-environments.md)
+ [Politique IAM pour empêcher l’achat de capacité réservée DynamoDB](iam-prevent-purchase-reserved-capacity.md)
+ [Politique IAM pour accorder un accès en lecture pour un flux DynamoDB uniquement (pas pour la table)](iam-policy-read-stream-only.md)
+ [Politique IAM permettant à une AWS Lambda fonction d'accéder aux enregistrements de flux DynamoDB](iam-policy-example-lamda-process-dynamodb-streams.md)
+ [Politique IAM pour l’accès en lecture et écriture à un cluster DynamoDB Accelerator (DAX)](iam-policy-example-read-write-dax-access.md)

 Le *Guide de l’utilisateur IAM* inclut [trois exemples DynamoDB supplémentaires](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_examples.html) :
+ [Amazon DynamoDB : autorise l’accès à une table spécifique](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_examples_dynamodb_specific-table.html)
+ [Amazon DynamoDB : autorise l’accès à des colonnes spécifiques](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_examples_dynamodb_columns.html)
+ [Amazon DynamoDB : autorise l’accès de niveau ligne à DynamoDB en fonction de l’ID Amazon Cognito](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_examples_dynamodb_rows.html)

# Politique IAM pour accorder des autorisations à toutes les actions DynamoDB sur une table
<a name="grant-permissions-to-any-action-on-table"></a>

La politique suivante accorde des autorisations pour *toutes* les actions DynamoDB sur une table nommée `Books`. L'ARN de ressource spécifié dans le `Resource` identifie une table dans une AWS région spécifique. Si vous remplacez le nom de table `Books` dans l’ARN `Resource` par un caractère générique (\$1), *toutes* les actions DynamoDB sont autorisées sur *toutes* les tables du compte. Considérez attentivement les implications possibles en matière de sécurité avant d’utiliser un caractère générique sur cette politique ou toute politique IAM.

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "AllAPIActionsOnBooks",
            "Effect": "Allow",
            "Action": "dynamodb:*",
            "Resource": "arn:aws:dynamodb:us-west-2:123456789012:table/Books"
        }
    ]
}
```

------

**Note**  
Voici un exemple d’utilisation d’un caractère générique (\$1) pour autoriser *toutes* les actions, y compris l’administration, les opérations de données, la surveillance et l’achat de capacité réservée DynamoDB. Au lieu de cela, une bonne pratique consiste à spécifier explicitement chaque action à autoriser, et uniquement ce dont cet utilisateur, ce rôle ou ce groupe ont besoin.

# Politique IAM pour accorder des autorisations en lecture seule sur des éléments dans une table DynamoDB
<a name="read-only-permissions-on-table-items"></a>

La politique d’autorisations suivante accorde des autorisations pour les actions DynamoDB `GetItem`, `BatchGetItem`, `Scan`, `Query` et `ConditionCheckItem` uniquement, et définit ainsi un accès en lecture seule sur la table `Books`.

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "ReadOnlyAPIActionsOnBooks",
            "Effect": "Allow",
            "Action": [
                "dynamodb:GetItem",
                "dynamodb:BatchGetItem",
                "dynamodb:Scan",
                "dynamodb:Query",
                "dynamodb:ConditionCheckItem"
            ],
            "Resource": "arn:aws:dynamodb:us-west-2:123456789012:table/Books"
        }
    ]
}
```

------

# Politique IAM pour accorder l’accès à une table DynamoDB spécifique et à ses index
<a name="iam-policy-specific-table-indexes"></a>

La politique suivante accorde des autorisations pour effectuer des actions de modification de données sur une table DynamoDB appelée `Books` et tous ses index. Pour plus d’informations sur le fonctionnement des index, consultez [Amélioration de l’accès aux données avec les index secondaires dans DynamoDB](SecondaryIndexes.md).

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "AccessTableAllIndexesOnBooks",
            "Effect": "Allow",
            "Action": [
              "dynamodb:PutItem",
              "dynamodb:UpdateItem",
              "dynamodb:DeleteItem",
              "dynamodb:BatchWriteItem",
              "dynamodb:GetItem",
              "dynamodb:BatchGetItem",
              "dynamodb:Scan",
              "dynamodb:Query",
              "dynamodb:ConditionCheckItem"
            ],
            "Resource": [
                "arn:aws:dynamodb:us-west-2:123456789012:table/Books",
                "arn:aws:dynamodb:us-west-2:123456789012:table/Books/index/*"
            ]
        }
    ]
}
```

------

# Politique IAM pour lire, écrire, mettre à jour et supprimer l’accès sur une table DynamoDB
<a name="iam-policy-example-data-crud"></a>

Utilisez cette politique si vous devez autoriser votre application à créer, lire, mettre à jour et supprimer des données dans des tables, index et flux Amazon DynamoDB. Remplacez le nom de la AWS région, votre identifiant de compte et le nom de la table ou le caractère générique (\$1) le cas échéant.

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "DynamoDBIndexAndStreamAccess",
            "Effect": "Allow",
            "Action": [
                "dynamodb:GetShardIterator",
                "dynamodb:Scan",
                "dynamodb:Query",
                "dynamodb:DescribeStream",
                "dynamodb:GetRecords",
                "dynamodb:ListStreams"
            ],
            "Resource": [
                "arn:aws:dynamodb:us-west-2:123456789012:table/Books/index/*",
                "arn:aws:dynamodb:us-west-2:123456789012:table/Books/stream/*"
            ]
        },
        {
            "Sid": "DynamoDBTableAccess",
            "Effect": "Allow",
            "Action": [
                "dynamodb:BatchGetItem",
                "dynamodb:BatchWriteItem",
                "dynamodb:ConditionCheckItem",
                "dynamodb:PutItem",
                "dynamodb:DescribeTable",
                "dynamodb:DeleteItem",
                "dynamodb:GetItem",
                "dynamodb:Scan",
                "dynamodb:Query",
                "dynamodb:UpdateItem"
            ],
            "Resource": "arn:aws:dynamodb:us-west-2:123456789012:table/Books"
        },
        {
            "Sid": "DynamoDBDescribeLimitsAccess",
            "Effect": "Allow",
            "Action": "dynamodb:DescribeLimits",
            "Resource": [
                "arn:aws:dynamodb:us-west-2:123456789012:table/Books",
                "arn:aws:dynamodb:us-west-2:123456789012:table/Books/index/*"
            ]
        }
    ]
}
```

------

Pour étendre cette politique à toutes les tables DynamoDB de AWS toutes les régions pour ce compte, utilisez un caractère générique (\$1) pour la région et le nom de la table. Par exemple :

```
"Resource":[
                "arn:aws:dynamodb:*:123456789012:table/*",
                "arn:aws:dynamodb:*:123456789012:table/*/index/*"
                ]
```

# Politique IAM pour séparer les environnements DynamoDB dans le même compte AWS
<a name="iam-policy-separate-environments"></a>

Supposons que vous ayez des environnements séparés gérant chacun sa propre version d’une table nommée `ProductCatalog`. Si vous créez deux `ProductCatalog` tables dans le même AWS compte, le travail dans un environnement peut affecter l'autre environnement en raison de la façon dont les autorisations sont configurées. Par exemple, les quotas relatifs au nombre d'opérations simultanées sur le plan de contrôle (telles que`CreateTable`) sont définis au niveau du AWS compte.

Par conséquent, chaque action effectuée dans un environnement réduit le nombre d’opérations disponibles dans l’autre. Il existe également un risque que le code d’un environnement puisse accéder accidentellement aux tables de l’autre.

**Note**  
Si vous souhaitez séparer les charges de travail de test et de production afin de contrôler les répercussions potentielles d’un incident, une bonne pratique consiste à créer des comptes AWS distincts pour les charges de travail de test et de production. Pour plus d’informations, consultez [Gestion et séparation de comptes AWS](https://docs.aws.amazon.com//wellarchitected/latest/security-pillar/aws-account-management-and-separation.html).

Supposons également que vous ayez deux développeurs, Amit et Alice, qui testent la table `ProductCatalog`. Au lieu que chaque développeur ait besoin d'un AWS compte distinct, vos développeurs peuvent partager le même AWS compte de test. Dans ce compte de test, vous pouvez créer une copie de la même table pour que chaque développeur puisse y travailler, comme `Alice_ProductCatalog` et `Amit_ProductCatalog`. Dans ce cas, vous pouvez créer les utilisateurs Alice et Amit dans le AWS compte que vous avez créé pour l'environnement de test. Vous pouvez ensuite accorder à ces utilisateurs l’autorisation d’effectuer des actions DynamoDB sur les tables qu’ils possèdent. 

Pour accorder ces autorisations utilisateur IAM, vous pouvez procéder de l’une des façons suivantes :
+ Créez une politique distincte pour chaque utilisateur, puis attachez chaque politique à son utilisateur séparément. Par exemple, vous pouvez attacher la politique suivante à l’utilisateur Alice pour l’autoriser à accéder à toutes les actions DynamoDB sur la table `Alice_ProductCatalog` : 

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

****  

  ```
  {
      "Version":"2012-10-17",		 	 	 
      "Statement": [
          {
              "Sid": "AllAPIActionsOnAliceTable",
              "Effect": "Allow",
              "Action": [
                "dynamodb:DeleteItem",
                "dynamodb:DescribeContributorInsights",
                "dynamodb:RestoreTableToPointInTime",
                "dynamodb:ListTagsOfResource",
                "dynamodb:CreateTableReplica",
                "dynamodb:UpdateContributorInsights",
                "dynamodb:CreateBackup",
                "dynamodb:DeleteTable",
                "dynamodb:UpdateTableReplicaAutoScaling",
                "dynamodb:UpdateContinuousBackups",
                "dynamodb:TagResource",
                "dynamodb:DescribeTable",
                "dynamodb:GetItem",
                "dynamodb:DescribeContinuousBackups",
                "dynamodb:BatchGetItem",
                "dynamodb:UpdateTimeToLive",
                "dynamodb:BatchWriteItem",
                "dynamodb:ConditionCheckItem",
                "dynamodb:UntagResource",
                "dynamodb:PutItem",
                "dynamodb:Scan",
                "dynamodb:Query",
                "dynamodb:UpdateItem",
                "dynamodb:DeleteTableReplica",
                "dynamodb:DescribeTimeToLive",
                "dynamodb:RestoreTableFromBackup",
                "dynamodb:UpdateTable",
                "dynamodb:DescribeTableReplicaAutoScaling",
                "dynamodb:GetShardIterator",
                "dynamodb:DescribeStream",
                "dynamodb:GetRecords",
                "dynamodb:DescribeLimits",
                "dynamodb:ListStreams"
              ],
              "Resource": "arn:aws:dynamodb:us-west-2:123456789012:table/Alice_ProductCatalog/*"
          }
      ]
  }
  ```

------

  Ensuite, vous pouvez créer une politique similaire avec une autre ressource (table `Amit_ProductCatalog`) pour l’utilisateur Amit. 
+ Au lieu d’attacher les politiques à des utilisateurs individuels, vous pouvez utiliser les variables des politiques IAM pour écrire une seule politique et l’attacher à un groupe. Vous devez créer un groupe et, pour cet exemple, y ajouter les utilisateurs Alice et Amit. L’exemple suivant accorde des autorisations pour exécuter toutes les actions DynamoDB sur la table `${aws:username}_ProductCatalog`. La variable de politique `${aws:username}` est remplacée par le nom utilisateur du demandeur lors de l’évaluation de la politique. Par exemple, si Alice envoie une demande pour ajouter un élément, l’action est autorisée uniquement si Alice ajoute les éléments à la table `Alice_ProductCatalog`. 

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

****  

  ```
  {
      "Version":"2012-10-17",		 	 	 
      "Statement": [
          {
              "Sid": "ActionsOnUserSpecificTable",
              "Effect": "Allow",
              "Action": [
                "dynamodb:PutItem",
                "dynamodb:UpdateItem",
                "dynamodb:DeleteItem",
                "dynamodb:BatchWriteItem",
                "dynamodb:GetItem",
                "dynamodb:BatchGetItem",
                "dynamodb:Scan",
                "dynamodb:Query",
                "dynamodb:ConditionCheckItem"
              ],
              "Resource": "arn:aws:dynamodb:us-west-2:123456789012:table/${aws:username}_ProductCatalog"
          },
          {
              "Sid": "AdditionalPrivileges",
              "Effect": "Allow",
              "Action": [
                  "dynamodb:ListTables",
                  "dynamodb:DescribeTable",
                  "dynamodb:DescribeContributorInsights"
              ],
              "Resource": "arn:aws:dynamodb:us-west-2:123456789012:table/*"
          }
      ]
  }
  ```

------

**Note**  
Lorsque vous utilisez des variables de politique IAM, vous devez spécifier explicitement la version `2012-10-17` du langage de politique IAM dans la politique. La version par défaut du langage de politique IAM (`2008-10-17`) ne prend pas en charge les variables de politique. 

Au lieu d’identifier une table spécifique en tant que ressource comme vous le feriez normalement, vous pouvez utiliser un caractère générique (\$1) pour accorder des autorisations sur toutes les tables dont le nom est préfixé avec le nom de l’utilisateur qui effectue la demande, comme illustré dans l’exemple suivant.

```
"Resource":"arn:aws:dynamodb:us-west-2:123456789012:table/${aws:username}_*"
```

# Politique IAM pour empêcher l’achat de capacité réservée DynamoDB
<a name="iam-prevent-purchase-reserved-capacity"></a>

Avec une capacité réservée Amazon DynamoDB, vous payez un droit initial unique, et vous engagez à payer pour un niveau d’utilisation minimal, avec à la clé la réalisation d’économies considérables au fil du temps. Vous pouvez utiliser le AWS Management Console pour consulter et acheter la capacité réservée. Cependant, il se peut que vous ne souhaitiez pas que tous les utilisateurs au sein de votre organisation puissent acheter de la capacité réservée. Pour plus d’informations sur la capacité réservée, consultez [Tarification Amazon DynamoDB](https://aws.amazon.com/dynamodb/pricing).

DynamoDB fournit les opérations d’API suivantes pour contrôler l’accès à la gestion de la capacité réservée :
+ `dynamodb:DescribeReservedCapacity` – Renvoie les achats de capacité réservée qui sont actuellement en vigueur.
+ `dynamodb:DescribeReservedCapacityOfferings` – Renvoie des détails sur les plans de capacité réservée actuellement proposés par AWS.
+ `dynamodb:PurchaseReservedCapacityOfferings` – Effectue un achat réel de capacité réservée.

Il AWS Management Console utilise ces actions d'API pour afficher les informations sur les capacités réservées et effectuer des achats. Vous ne pouvez pas appeler ces opérations à partir d’un programme d’application, car elles ne sont accessibles qu’à partir de la console. Cependant, vous pouvez autoriser ou rejeter l’accès à ces opérations dans une politique d’autorisations IAM.

La politique suivante permet aux utilisateurs de consulter les achats et les offres de capacité réservée en utilisant le AWS Management Console , mais les nouveaux achats sont refusés.

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "AllowReservedCapacityDescriptions",
            "Effect": "Allow",
            "Action": [
                "dynamodb:DescribeReservedCapacity",
                "dynamodb:DescribeReservedCapacityOfferings"
            ],
            "Resource": "arn:aws:dynamodb:us-west-2:123456789012:*"
        },
        {
            "Sid": "DenyReservedCapacityPurchases",
            "Effect": "Deny",
            "Action": "dynamodb:PurchaseReservedCapacityOfferings",
            "Resource": "arn:aws:dynamodb:us-west-2:123456789012:*"
        }
    ]
}
```

------

Notez que cette politique utilise le caractère générique (\$1) pour décrire les autorisations pour tous, et pour rejeter l'achat de capacité réservée DynamoDB pour tous.

# Politique IAM pour accorder un accès en lecture pour un flux DynamoDB uniquement (pas pour la table)
<a name="iam-policy-read-stream-only"></a>

Lorsque vous activez DynamoDB Streams sur une table, des informations sont capturées sur chaque modification apportée à des éléments dans celle-ci. Pour de plus amples informations, veuillez consulter [Modifier la récupération de données pour DynamoDB Streams](Streams.md).

Dans certains cas, vous pouvez être amené à empêcher une application de lire les données d’une table DynamoDB, tout en autorisant l’accès aux flux de celle-ci. Par exemple, vous pouvez configurer AWS Lambda pour interroger un flux et appeler une fonction Lambda lorsque des mises à jour d'éléments sont détectées, puis effectuer un traitement supplémentaire.

Les actions suivantes sont disponibles pour contrôler l’accès à DynamoDB Streams :
+ `dynamodb:DescribeStream`
+ `dynamodb:GetRecords`
+ `dynamodb:GetShardIterator`
+ `dynamodb:ListStreams`

L’exemple de politique suivant accorde aux utilisateurs des autorisations d’accès aux flux d’une table nommée `GameScores`. Le caractère générique final (\$1) dans l’ARN correspond à tout flux associé à la table.

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "AccessGameScoresStreamOnly",
            "Effect": "Allow",
            "Action": [
                "dynamodb:DescribeStream",
                "dynamodb:GetRecords",
                "dynamodb:GetShardIterator",
                "dynamodb:ListStreams"
            ],
            "Resource": "arn:aws:dynamodb:us-west-2:123456789012:table/GameScores/stream/*"
        }
    ]
}
```

------

Notez que cette politique donne accès aux flux de la table `GameScores`, mais pas à la table proprement dite.

# Politique IAM permettant à une AWS Lambda fonction d'accéder aux enregistrements de flux DynamoDB
<a name="iam-policy-example-lamda-process-dynamodb-streams"></a>

Si vous souhaitez que certaines actions soient effectuées en fonction des événements d'un flux DynamoDB, vous pouvez écrire AWS Lambda une fonction déclenchée par ces événements. Une fonction Lambda telle que celle-ci a besoin d’autorisations pour lire les données d’un flux DynamoDB. Pour plus d’informations sur l’utilisation de Lambda avec DynamoDB Streams, consultez [Streams et déclencheurs DynamoDB AWS Lambda](Streams.Lambda.md).

Pour accorder des autorisations à Lambda, utilisez la politique d’autorisations associée au rôle IAM de la fonction Lambda (également appelée rôle d’exécution). Spécifiez cette politique lorsque vous créez la fonction Lambda.

Par exemple, vous pouvez associer la politique d’autorisations et le rôle d’exécution suivants pour accorder les autorisations Lambda nécessaires pour exécuter les actions DynamoDB Streams répertoriées.

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "APIAccessForDynamoDBStreams",
            "Effect": "Allow",
            "Action": [
                "dynamodb:GetRecords",
                "dynamodb:GetShardIterator",
                "dynamodb:DescribeStream",
                "dynamodb:ListStreams"
            ],
            "Resource": "arn:aws:dynamodb:us-west-2:123456789012:table/GameScores/stream/*"
        }
    ]
}
```

------

Pour plus d’informations, consultez [Autorisations AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/intro-permission-model.html) dans le *Manuel du développeur AWS Lambda *.

# Politique IAM pour l’accès en lecture et écriture à un cluster DynamoDB Accelerator (DAX)
<a name="iam-policy-example-read-write-dax-access"></a>

La politique suivante autorise l’accès en lecture, en écriture, en mise à jour et en suppression à un cluster DynamoDB Accelerator (DAX), mais pas à la table DynamoDB associée. Pour utiliser cette politique, remplacez le nom de la AWS région, votre identifiant de compte et le nom de votre cluster DAX.

**Note**  
Cette politique permet d’accéder au cluster DAX, mais pas à la table DynamoDB associée. Assurez-vous que votre cluster DAX dispose de la politique appropriée pour effectuer ces mêmes opérations sur la table DynamoDB en votre nom. 

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "AmazonDynamoDBDAXDataOperations",
            "Effect": "Allow",
            "Action": [
                "dax:GetItem",
                "dax:PutItem",
                "dax:ConditionCheckItem",
                "dax:BatchGetItem",
                "dax:BatchWriteItem",
                "dax:DeleteItem",
                "dax:Query",
                "dax:UpdateItem",
                "dax:Scan"
            ],
            "Resource": "arn:aws:dax:eu-west-1:123456789012:cache/MyDAXCluster"
        }
    ]
}
```

------

Pour étendre cette politique afin de couvrir l'accès au DAX pour toutes les AWS régions pour un compte, utilisez un caractère générique (\$1) pour le nom de la région.

```
"Resource": "arn:aws:dax:*:123456789012:cache/MyDAXCluster"
```







# Résolution de problèmes pour l’identité et l’accès Amazon DynamoDB
<a name="security_iam_troubleshoot"></a>

Utilisez les informations suivantes pour identifier et résoudre les problèmes courants que vous pouvez rencontrer lorsque vous travaillez avec DynamoDB et IAM.

**Topics**
+ [Je ne suis pas autorisé à effectuer une action dans DynamoDB](#security_iam_troubleshoot-no-permissions)
+ [Je ne suis pas autorisé à effectuer iam : PassRole](#security_iam_troubleshoot-passrole)
+ [Je souhaite autoriser des personnes extérieures à moi Compte AWS à accéder à mes ressources DynamoDB](#security_iam_troubleshoot-cross-account-access)

## Je ne suis pas autorisé à effectuer une action dans DynamoDB
<a name="security_iam_troubleshoot-no-permissions"></a>

S'il vous AWS Management Console indique que vous n'êtes pas autorisé à effectuer une action, vous devez contacter votre administrateur pour obtenir de l'aide. Votre administrateur est la personne qui vous a fourni votre nom d’utilisateur et votre mot de passe.

L’exemple d’erreur suivant se produit quand l’utilisateur `mateojackson` tente d’utiliser la console pour afficher des informations détaillées sur une ressource `my-example-widget` fictive, mais ne dispose pas des autorisations `aws:GetWidget` fictives.

```
User: arn:aws:iam::123456789012:user/mateojackson is not authorized to perform: aws:GetWidget on resource: my-example-widget
```

Dans ce cas, Mateo demande à son administrateur de mettre à jour ses politiques pour lui permettre d’accéder à la ressource `my-example-widget` à l’aide de l’action `aws:GetWidget`.

## Je ne suis pas autorisé à effectuer iam : PassRole
<a name="security_iam_troubleshoot-passrole"></a>

Si vous recevez une erreur selon laquelle vous n’êtes pas autorisé à exécuter l’action, vos stratégies doivent être mises à jour afin de vous permettre de transmettre un rôle à DynamoDB.

Certains vous Services AWS permettent de transmettre un rôle existant à ce service au lieu de créer un nouveau rôle de service ou un rôle lié à un service. Pour ce faire, vous devez disposer des autorisations nécessaires pour transmettre le rôle au service.

L’exemple d’erreur suivant se produit lorsqu’un utilisateur IAM nommé `marymajor` essaie d’utiliser la console pour exécuter une action dans DynamoDB. Toutefois, l’action nécessite que le service ait des autorisations accordées par un rôle de service. Mary n'est pas autorisée à transmettre le rôle au service.

```
User: arn:aws:iam::123456789012:user/marymajor is not authorized to perform: iam:PassRole
```

Dans ce cas, les politiques de Mary doivent être mises à jour pour lui permettre d’exécuter l’action `iam:PassRole`.

Si vous avez besoin d'aide, contactez votre AWS administrateur. Votre administrateur vous a fourni vos informations d’identification de connexion.

## Je souhaite autoriser des personnes extérieures à moi Compte AWS à accéder à mes ressources DynamoDB
<a name="security_iam_troubleshoot-cross-account-access"></a>

Vous pouvez créer un rôle que les utilisateurs provenant d’autres comptes ou les personnes extérieures à votre organisation pourront utiliser pour accéder à vos ressources. Vous pouvez spécifier qui est autorisé à assumer le rôle. Pour les services qui prennent en charge les politiques basées sur les ressources ou les listes de contrôle d'accès (ACLs), vous pouvez utiliser ces politiques pour autoriser les utilisateurs à accéder à vos ressources.

Pour plus d’informations, consultez les éléments suivants :
+ Pour savoir si DynamoDB prend en charge ces fonctionnalités, consultez [Fonctionnement d’Amazon DynamoDB avec IAM](security_iam_service-with-iam.md).
+ Pour savoir comment fournir l'accès à vos ressources sur celles Comptes AWS que vous possédez, consultez la section [Fournir l'accès à un utilisateur IAM dans un autre utilisateur Compte AWS que vous possédez](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_common-scenarios_aws-accounts.html) dans le Guide de l'*utilisateur IAM*.
+ Pour savoir comment fournir l'accès à vos ressources à des tiers Comptes AWS, consultez la section [Fournir un accès à des ressources Comptes AWS détenues par des tiers](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_common-scenarios_third-party.html) dans le *guide de l'utilisateur IAM*.
+ Pour savoir comment fournir un accès par le biais de la fédération d’identité, consultez [Fournir un accès à des utilisateurs authentifiés en externe (fédération d’identité)](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_common-scenarios_federated-users.html) dans le *Guide de l’utilisateur IAM*.
+ Pour en savoir plus sur la différence entre l’utilisation des rôles et des politiques basées sur les ressources pour l’accès intercompte, consultez [Accès intercompte aux ressources dans IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies-cross-account-resource-access.html) dans le *Guide de l’utilisateur IAM*.

# Politique IAM pour empêcher l’achat de capacité réservée DynamoDB
<a name="iam-policy-prevent-purchase-reserved-capacity"></a>

Avec une capacité réservée Amazon DynamoDB, vous payez un droit initial unique, et vous engagez à payer pour un niveau d’utilisation minimal, avec à la clé la réalisation d’économies considérables au fil du temps. Vous pouvez utiliser le AWS Management Console pour consulter et acheter la capacité réservée. Cependant, il se peut que vous ne souhaitiez pas que tous les utilisateurs au sein de votre organisation puissent acheter de la capacité réservée. Pour plus d’informations sur la capacité réservée, consultez [Tarification Amazon DynamoDB](https://aws.amazon.com/dynamodb/pricing).

DynamoDB fournit les opérations d’API suivantes pour contrôler l’accès à la gestion de la capacité réservée :
+ `dynamodb:DescribeReservedCapacity` – Renvoie les achats de capacité réservée qui sont actuellement en vigueur.
+ `dynamodb:DescribeReservedCapacityOfferings` – Renvoie des détails sur les plans de capacité réservée actuellement proposés par AWS.
+ `dynamodb:PurchaseReservedCapacityOfferings` – Effectue un achat réel de capacité réservée.

Il AWS Management Console utilise ces actions d'API pour afficher les informations sur les capacités réservées et effectuer des achats. Vous ne pouvez pas appeler ces opérations à partir d’un programme d’application, car elles ne sont accessibles qu’à partir de la console. Cependant, vous pouvez autoriser ou rejeter l’accès à ces opérations dans une politique d’autorisations IAM.

La politique suivante permet aux utilisateurs de consulter les achats et les offres de capacité réservée en utilisant le AWS Management Console , mais les nouveaux achats sont refusés.

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "AllowReservedCapacityDescriptions",
            "Effect": "Allow",
            "Action": [
                "dynamodb:DescribeReservedCapacity",
                "dynamodb:DescribeReservedCapacityOfferings"
            ],
            "Resource": "arn:aws:dynamodb:us-west-2:123456789012:*"
        },
        {
            "Sid": "DenyReservedCapacityPurchases",
            "Effect": "Deny",
            "Action": "dynamodb:PurchaseReservedCapacityOfferings",
            "Resource": "arn:aws:dynamodb:us-west-2:123456789012:*"
        }
    ]
}
```

------

Notez que cette politique utilise le caractère générique (\$1) pour décrire les autorisations pour tous, et pour rejeter l’achat de capacité réservée DynamoDB pour tous.

# Utilisation de conditions de politique IAM pour un contrôle d’accès précis
<a name="specifying-conditions"></a>

Lorsque vous accordez des autorisations dans DynamoDB, vous pouvez spécifier des conditions pour déterminer comment une politique d’autorisation doit prendre effet. 

## Présentation de
<a name="FGAC_DDB.Overview"></a>

Dans DynamoDB, vous avez la possibilité de spécifier des conditions lorsque vous accordez des autorisations à l’aide d’une politique IAM (voir [Gestion des identités et des accès pour Amazon DynamoDB](security-iam.md)). Par exemple, vous pouvez effectuer les actions suivantes :
+ Accordez des autorisations pour permettre aux utilisateurs d’accéder en lecture seule à certains éléments et attributs dans une table ou un index secondaire.
+ Accordez des autorisations pour permettre aux utilisateurs d’accéder en écriture seule à certains attributs d’une table, en fonction de l’identité de cet utilisateur.

Dans DynamoDB, vous pouvez spécifier des conditions dans une politique IAM à l’aide de clés de condition, comme illustré dans le cas d’utilisation de la section suivante.

### Cas d’utilisation des autorisations
<a name="FGAC_DDB.OverviewUseCase"></a>

Outre le contrôle de l’accès aux actions d’API DynamoDB, vous pouvez contrôler l’accès à des éléments et attributs de données individuels. Par exemple, vous pouvez effectuer les opérations suivantes :
+ Accorder des autorisations sur une table, mais restreindre l’accès à des éléments spécifiques de cette table en fonction de certaines valeurs de clé primaire. A titre d’exemple, une application de réseau social pour les jeux, où les données de jeu enregistrées de tous les utilisateurs sont stockées dans une seule table, mais où aucun utilisateur ne peut accéder aux éléments de données qu’il ne possède pas, comme illustré ci-après :  
![\[Cas d’utilisation qui accorde un accès au niveau de la table à un utilisateur, mais restreint l’accès à des éléments de données spécifiques.\]](http://docs.aws.amazon.com/fr_fr/amazondynamodb/latest/developerguide/images/info-hiding-horizontal.png)
+ Masquer les informations afin que seul un sous-ensemble d’attributs soit visible de l’utilisateur. Un exemple peut être une application qui affiche les données de vol des aéroports proches, en fonction de l’emplacement de l’utilisateur. Les noms des compagnies aériennes, les heures d’arrivée et de départ, et les numéros de vol sont tous affichés. Cependant, les attributs tels que les noms des pilotes ou le nombre de passagers sont masqués, comme illustré ci-après :   
![\[Cas d’utilisation qui affiche uniquement un sous-ensemble de données aux utilisateurs, mais masque certains attributs des données.\]](http://docs.aws.amazon.com/fr_fr/amazondynamodb/latest/developerguide/images/info-hiding-vertical.png)

Pour mettre en place ce genre de contrôle précis des accès, vous écrivez une politique d’autorisations IAM qui spécifie les conditions d’accès aux informations d’identification de sécurité et aux autorisations associées. Vous appliquez la stratégie aux utilisateurs, groupes ou rôles que vous créez à l’aide de la console IAM. Votre politique IAM peut restreindre l’accès à des éléments individuels d’une table, aux attributs dans ces éléments, ou aux deux à la fois.

Le cas échéant, vous pouvez utiliser la fédération d’identité web pour contrôler l’accès par les utilisateurs authentifiés par Login with Amazon, Facebook ou Google. Pour de plus amples informations, veuillez consulter [Utilisation de la fédération d’identité web](WIF.md).

Vous utilisez l’élément IAM `Condition` pour mettre en place une politique de contrôle d’accès détaillée. En ajoutant un élément `Condition` à une politique d’autorisations, vous pouvez autoriser ou rejeter l’accès à des éléments et attributs dans des index et des tables DynamoDB, en fonction de vos besoins particuliers. 

La vidéo ci-dessous explique le contrôle des accès précis dans DynamoDB à l’aide des conditions de politique IAM.

[![AWS Videos](http://img.youtube.com/vi/https://www.youtube.com/embed/LbEmo_yulb0?si=VTSlNHVocAEYwhJi/0.jpg)](http://www.youtube.com/watch?v=https://www.youtube.com/embed/LbEmo_yulb0?si=VTSlNHVocAEYwhJi)


## Comprendre le contrôle d'accès détaillé dans DynamoDB
<a name="FGAC_DDB.UnderstandingFineGrainedAccess"></a>

Le contrôle d'accès détaillé dans DynamoDB vous permet de créer des limites d'autorisations précises à plusieurs niveaux :

1. **Contrôle d'accès au niveau des éléments :** limitez les utilisateurs à accéder uniquement aux éléments contenant des valeurs clés spécifiques, correspondant généralement à leur identité ou à l'étendue de leurs autorisations.

1. **Contrôle d'accès au niveau des attributs :** limitez les attributs (colonnes) que les utilisateurs peuvent afficher ou modifier, ce qui vous permet de protéger les informations sensibles tout en autorisant l'accès aux données non sensibles au sein des mêmes éléments.

1. **Contrôles spécifiques à l'opération :** appliquez différentes règles d'autorisation en fonction du type d'opération effectuée.

Ces contrôles sont mis en œuvre par le biais de politiques IAM à l'aide de clés de condition spécifiques à DynamoDB.

## Spécification de conditions : utilisation de clés de condition
<a name="FGAC_DDB.ConditionKeys"></a>

AWS fournit un ensemble de clés de condition prédéfinies (clés AWS de condition étendues) pour tous les AWS services qui prennent en charge le contrôle d'accès IAM. Par exemple, vous pouvez utiliser la clé de condition `aws:SourceIp` pour vérifier l’adresse IP du demandeur avant de permettre l’exécution d’une action. Pour plus d'informations et une liste des touches « wide », consultez la AWS section [Clés disponibles pour les conditions](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements.html#AvailableKeys) dans le guide de l'utilisateur IAM.

Les clés de condition spécifiques au service DynamoDB qui s'appliquent à DynamoDB sont les suivantes.

**`dynamodb:LeadingKeys`**  
Représente le premier attribut de clé d’une table, c’est-à-dire la clé de partition. Le nom de la clé `LeadingKeys` est pluriel, même si la clé est utilisée avec des actions à élément unique. En outre, vous devez utiliser le modificateur `ForAllValues` lorsque vous utilisez `LeadingKeys` dans une condition.

**`dynamodb:Select`**  
Représente le paramètre `Select` d’une demande. `Select` peut avoir l’une des valeurs suivantes :  
+ `ALL_ATTRIBUTES`
+ `ALL_PROJECTED_ATTRIBUTES`
+ `SPECIFIC_ATTRIBUTES`
+ `COUNT`
Bien qu'elle soit souvent associée aux opérations de requête et de numérisation, cette clé de condition s'applique à toutes les opérations DynamoDB qui renvoient des attributs d'élément et est essentielle pour contrôler l'accès aux attributs dans toutes les actions d'API. L'utilisation de contraintes StringEqualsIfExists ou similaires sur cette clé de condition appliquera des contraintes sur les opérations où cette clé de condition s'applique, tout en l'ignorant sur les opérations où elle ne s'applique pas.

**`dynamodb:Attributes`**  
Représente une liste des attributs *de niveau supérieur* auxquels une demande accède. Une demande accède à un attribut de niveau supérieur si celui-ci, ou tout attribut imbriqué qu'il contient, est spécifié dans les paramètres de la demande. Par exemple, dans le `GetItem` cas d'une demande spécifiant un `ProjectionExpression` de`"Name, Address.City"`, la `dynamodb:Attributes` liste inclurait « Nom » et « Adresse ». Si le `Attributes` paramètre est énuméré dans une politique de contrôle d'accès précise, envisagez également de le restreindre `ReturnValues` et de définir des `Select` paramètres afin de garantir un accès restreint aux attributs spécifiés dans le cadre de plusieurs actions d'API telles que `GetItem``Query`, et. `Scan`   
Cette condition est évaluée uniquement sur les attributs spécifiés dans la demande (comme dans a ProjectionExpression), et non sur les attributs de la réponse. Si non ProjectionExpression est fourni dans la demande, tous les attributs seront renvoyés, quelles que soient les restrictions d'attributs prévues dans la politique. Consultez la section « S'assurer que les restrictions basées sur les attributs sont appliquées » ci-dessous pour plus de détails sur la manière de sécuriser correctement l'accès aux attributs.

**`dynamodb:ReturnValues`**  
Représente le `ReturnValues` paramètre d'une demande. Selon l'action de l'API, il `ReturnValues` peut s'agir de l'une des valeurs suivantes :   
+ `ALL_OLD`
+ `UPDATED_OLD`
+ `ALL_NEW`
+ `UPDATED_NEW`
+ `NONE`

**`dynamodb:ReturnConsumedCapacity`**  
Représente le paramètre `ReturnConsumedCapacity` d’une demande. `ReturnConsumedCapacity` peut avoir l’une des valeurs suivantes :  
+ `TOTAL`
+ `NONE`

**`dynamodb:FirstPartitionKeyValues`**  
Représente le premier attribut clé d'une table, en d'autres termes, la première clé de partition. Le nom de la clé `FirstPartitionKeyValues` est pluriel, même si la clé est utilisée avec des actions à élément unique. En outre, vous devez utiliser le `ForAllValues` modificateur lorsque vous l'utilisez `FirstPartitionKeyValues` dans une condition. `FirstPartitionKeyValues`et `LeadingKeys` peut être utilisé comme échangeable.

**`dynamodb:SecondPartitionKeyValues`**  
Similaire à `dynamodb:FirstPartitionKeyValues`. Représente la deuxième clé de partition des ressources. Le nom de la clé `SecondPartitionKeyValues` est pluriel, même si la clé est utilisée avec des actions à élément unique.

**`dynamodb:ThirdPartitionKeyValues`**  
Similaire à `dynamodb:FirstPartitionKeyValues`. Représente la troisième clé de partition des ressources. Le nom de la clé `ThirdPartitionKeyValues` est pluriel, même si la clé est utilisée avec des actions à élément unique.

**`dynamodb:FourthPartitionKeyValues`**  
Similaire à `dynamodb:FirstPartitionKeyValues`. Représente la quatrième clé de partition des ressources. Le nom de la clé `FourthPartitionKeyValues` est pluriel, même si la clé est utilisée avec des actions à élément unique.

### Veiller à ce que les restrictions basées sur les attributs soient appliquées
<a name="FGAC_DDB.EnsuringAttributeRestrictions"></a>

Lorsque vous utilisez des conditions basées sur les attributs pour restreindre l'accès à des attributs spécifiques, il est important de comprendre comment ces conditions sont évaluées :
+ **Les conditions d'attribut sont évaluées uniquement sur les attributs spécifiés dans la demande**, et non sur les attributs de la réponse.
+ **Pour les opérations de lecture sans ProjectionExpression** (GetItem, Query, Scan, etc.), tous les attributs seront renvoyés quelles que soient les restrictions d'attributs de votre politique. Pour éviter cette exposition potentielle de données sensibles, implémentez à la fois des conditions d'attribut (`dynamodb:Attributes`) et une condition nécessitant des attributs spécifiques doit être demandée (`dynamodb:Select`).
+ **Pour les opérations d'écriture** (PutItem, UpdateItem, DeleteItem), le ReturnValues paramètre peut renvoyer des éléments complets, exposant potentiellement des attributs restreints même si l'opération d'écriture elle-même est conforme à votre politique. Pour éviter cette exposition, implémentez à la fois des conditions d'attribut (`dynamodb:Attributes`) et des restrictions sur ReturnValues (`dynamodb:ReturnValues`) dans votre politique.

### Limitation de l’accès utilisateur
<a name="FGAC_DDB.LimitingAccess"></a>

La plupart des politiques d’autorisation IAM permettent aux utilisateurs d’accéder uniquement aux éléments d’une table où la valeur de la clé de partition correspond à l’identifiant de l’utilisateur. Par exemple, l’application de jeu précédente limite l’accès de cette façon afin que les utilisateurs ne puissent accéder qu’aux données de jeu associées à leur ID utilisateur. Les variables de substitution IAM `${www.amazon.com:user_id}`, `${graph.facebook.com:id}` et `${accounts.google.com:sub}` contiennent des identifiants utilisateur pour Login with Amazon, Facebook et Google. Pour savoir comment une application se connecte à l’un de ces fournisseurs d’identité et obtient ces identificateurs, consultez [Utilisation de la fédération d’identité web](WIF.md).

**Important**  
Le contrôle d’accès précis n’est pas pris en charge pour restreindre la réplication des tables globales. L’application de conditions de politique pour un contrôle d’accès précis aux [principaux de service DynamoDB ou aux rôles liés à un service](globaltables-security.md) utilisés pour la réplication de tables globales peut interrompre la réplication au sein d’une table globale. 

**Note**  
Chacun des exemples de la section suivante définit la clause `Effect` sur `Allow` et spécifie uniquement les actions, ressources et paramètres autorisés. L’accès est autorisé uniquement à ce qui est explicitement indiqué dans la politique IAM.  
Dans certains cas, il est possible de réécrire ces politiques afin qu’elles soient basées sur le refus (autrement dit, définition de la clause `Effect` sur `Deny` et inversion de toute la logique de la politique). Cependant, nous vous recommandons d’éviter d’utiliser des politiques basées sur un rejet avec DynamoDB, car elles sont difficiles à écrire correctement en comparaison des politiques basées sur une autorisation. En outre, de futures modifications de l’API DynamoDB (ou des modifications apportées à des entrées d’API existantes) peuvent rendre une politique basée sur un rejet inefficace.

### Exemples de politique : utilisation de conditions pour un contrôle d’accès détaillé
<a name="FGAC_DDB.Examples"></a>

Cette section présente plusieurs politiques d’implémentation d’un contrôle précis des accès aux tables et index DynamoDB.

**Note**  
Tous les exemples utilisent la région us-west-2 et contiennent un compte fictif. IDs

#### Exemple 1. Contrôle d'accès de base basé sur des clés de partition avec restrictions d'attributs
<a name="FGAC_DDB.Examples.BasicPartitionKeyAccess"></a>

Par exemple, imaginons une application de jeux pour appareils mobiles à partir de laquelle les utilisateurs peuvent sélectionner une grande diversité de jeux. L'application utilise une table DynamoDB `GameScores` nommée pour suivre les meilleurs scores et les autres données utilisateur. Chaque élément de la table est identifié de façon unique par un ID d’utilisateur et le nom du jeu auquel l’utilisateur a joué. La table `GameScores` possède une clé primaire composée d’une clé de partition (`UserId`) et d’une clé de tri (`GameTitle`). Les utilisateurs ne peuvent accéder qu’aux données de jeu associées à leur ID utilisateur. Un utilisateur qui souhaite jouer une partie doit appartenir à un rôle IAM nommé `GameRole` auquel une politique de sécurité est attachée.

Pour gérer les autorisations utilisateur de cette application, vous pouvez écrire une politique d’autorisations telle que la suivante :

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

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement":[
      {
         "Sid":"AllowAccessToOnlyItemsMatchingUserID",
         "Effect":"Allow",
         "Action":[
            "dynamodb:GetItem",
            "dynamodb:BatchGetItem",
            "dynamodb:Query",
            "dynamodb:PutItem",
            "dynamodb:UpdateItem",
            "dynamodb:DeleteItem",
            "dynamodb:BatchWriteItem"
         ],
         "Resource":[
            "arn:aws:dynamodb:us-west-2:123456789012:table/GameScores"
         ],
         "Condition":{
            "ForAllValues:StringEquals":{
               "dynamodb:LeadingKeys":[
                  "${www.amazon.com:user_id}"
               ],
               "dynamodb:Attributes":[
                  "UserId",
                  "GameTitle",
                  "Wins",
                  "Losses",
                  "TopScore",
                  "TopScoreDateTime"
               ]
            },
            "StringEqualsIfExists":{
               "dynamodb:Select":"SPECIFIC_ATTRIBUTES"
            }
         }
      }
   ]
}
```

------

En plus de l’octroi d’autorisations pour des actions DynamoDB spécifiques (élément `Action`) sur la table `GameScores` (élément `Resource`), l’élément `Condition` utilise les clés de condition suivantes spécifiques de DynamoDB qui limitent les autorisations comme suit :
+ `dynamodb:LeadingKeys` – Cette clé de condition permet aux utilisateurs d’accéder uniquement aux éléments dans lesquels la valeur de clé de partition correspond à leur ID utilisateur. Cet ID, `${www.amazon.com:user_id}`, est une variable de substitution. Pour plus d’informations sur les variables de substitution, consultez [Utilisation de la fédération d’identité web](WIF.md).
+ `dynamodb:Attributes` – Cette clé de condition limite l’accès aux attributs spécifiés afin que seules les actions figurant dans la politique d’autorisations puissent renvoyer des valeurs pour ces attributs. En outre, la clause `StringEqualsIfExists` garantit que l’application fournisse toujours une liste d’attributs spécifiques sur lesquels agir et que l’application ne peut pas demander tous les attributs.

Quand une politique IAM est évaluée, le résultat est toujours true (accès autorisé) ou false (accès refusé). Si une partie d’un élément `Condition` a la valeur false, l’ensemble de la politique a la valeur false et l’accès est refusé.

**Important**  
Si vous utilisez `dynamodb:Attributes`, vous devez spécifier les noms de tous les attributs de clé primaire et de clé d’index de la table et tous les index secondaires répertoriés dans la politique. Sinon, DynamoDB ne peut pas utiliser ces attributs de clé pour exécuter l’action demandée.

Les documents de la politique IAM peuvent contenir uniquement les caractères Unicode suivants : tabulation horizontale (U\$10009), saut de ligne (U\$1000A), retour chariot (U\$1000D) et caractères de la plage U\$10020 à U\$100FF.

#### Exemple 2 : accorder des autorisations qui limitent l'accès aux éléments ayant une valeur de clé de partition spécifique
<a name="FGAC_DDB.Examples.PartitionKeyValue"></a>

La politique d’autorisation suivante accorde les autorisations qui permettent un ensemble d’actions DynamoDB sur la table `GamesScore`. Elle utilise la clé de condition `dynamodb:LeadingKeys` pour limiter les actions utilisateur uniquement sur les éléments dont la valeur de la clé de partition `UserID` correspond à la connexion avec l’ID utilisateur Login with Amazon unique pour cette application.

**Important**  
La liste des actions n’inclut pas les autorisations pour `Scan`, car `Scan` retourne tous les éléments, quelles que soient les clés principales.

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

****  

```
{
   "Version":"2012-10-17",		 	 	                    
   "Statement":[
      {
         "Sid":"FullAccessToUserItems",
         "Effect":"Allow",
         "Action":[
            "dynamodb:GetItem",
            "dynamodb:BatchGetItem",
            "dynamodb:Query",
            "dynamodb:PutItem",
            "dynamodb:UpdateItem",
            "dynamodb:DeleteItem",
            "dynamodb:BatchWriteItem"
         ],
         "Resource":[
            "arn:aws:dynamodb:us-west-2:123456789012:table/GameScores"
         ],
         "Condition":{
            "ForAllValues:StringEquals":{
               "dynamodb:LeadingKeys":[
                  "${www.amazon.com:user_id}"
               ]
            }
         }
      }
   ]
}
```

------

**Note**  
Lorsque vous utilisez des variables de stratégie, vous devez spécifier explicitement la version 2012-10-17 dans la politique. La version par défaut du langage d'access policy, 2008-10-17, ne prend pas en charge les variables de stratégie.

Pour implémenter l’accès en lecture seule, vous pouvez supprimer les actions susceptibles de modifier les données. Dans la politique suivante, seules les actions qui fournissent l’accès en lecture seule sont incluses dans la condition.

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

****  

```
{
   "Version":"2012-10-17",		 	 	                    
   "Statement":[
      {
         "Sid":"ReadOnlyAccessToUserItems",
         "Effect":"Allow",
         "Action":[
            "dynamodb:GetItem",
            "dynamodb:BatchGetItem",
            "dynamodb:Query"
         ],
         "Resource":[
            "arn:aws:dynamodb:us-west-2:123456789012:table/GameScores"
         ],
         "Condition":{
            "ForAllValues:StringEquals":{
               "dynamodb:LeadingKeys":[
                  "${www.amazon.com:user_id}"
               ]
            }
         }
      }
   ]
}
```

------

**Important**  
Si vous utilisez `dynamodb:Attributes`, vous devez spécifier les noms de tous les attributs de clé primaire et de clé d’index pour la table et tous les index secondaires répertoriés dans la politique. Sinon, DynamoDB ne peut pas utiliser ces attributs de clé pour exécuter l’action demandée.

#### Exemple 3 : accorder des autorisations qui limitent l'accès à des attributs spécifiques d'une table
<a name="FGAC_DDB.Examples.SpecificAttributes"></a>

La politique d’autorisation suivante n’autorise l’accès qu’à deux attributs spécifiques d’une table en ajoutant la clé de condition `dynamodb:Attributes`. Ces attributs peuvent être lus, écrits ou évalués dans une écriture conditionnelle ou un filtre d’analyse.

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

****  

```
{
   "Version":"2012-10-17",		 	 	                    
   "Statement":[
      {
         "Sid":"LimitAccessToSpecificAttributes",
         "Effect":"Allow",
         "Action":[
            "dynamodb:UpdateItem",
            "dynamodb:GetItem",
            "dynamodb:Query",
            "dynamodb:BatchGetItem",
            "dynamodb:Scan"
         ],
         "Resource":[
            "arn:aws:dynamodb:us-west-2:123456789012:table/GameScores"
         ],
         "Condition":{
            "ForAllValues:StringEquals":{
               "dynamodb:Attributes":[
                  "UserId",
                  "TopScore"
               ]
            },
            "StringEqualsIfExists":{
               "dynamodb:Select":"SPECIFIC_ATTRIBUTES",
               "dynamodb:ReturnValues":[
                  "NONE",
                  "UPDATED_OLD",
                  "UPDATED_NEW"
               ]
            }
         }
      }
   ]
}
```

------

**Note**  
La politique adopte une approche de liste d’autorisations (ou liste verte), qui autorise l’accès à un ensemble nommé d’attributs. Vous pouvez écrire une politique équivalente qui refuse à la place l’accès aux autres attributs. Nous ne recommandons pas cette approche de liste de rejet (ou liste rouge). Les utilisateurs peuvent déterminer le nom de ces attributs refusés en suivant le principe du moindre privilège, comme expliqué dans Wikipedia à l'adresse http://en.wikipedia. org/wiki/Principle\$1of\$1least\$1privilege, et utilisez une approche de liste d'autorisation pour énumérer toutes les valeurs autorisées, plutôt que de spécifier les attributs refusés.

Cette politique n’autorise pas `PutItem`, `DeleteItem` ou `BatchWriteItem`. Ces actions remplacent toujours la totalité de l’élément précédent, ce qui permet aux utilisateurs de supprimer les valeurs précédentes des attributs auxquels ils ne sont pas autorisés à accéder.

La clause `StringEqualsIfExists` de la politique d’autorisation garantit ce qui suit :
+ Si l’utilisateur spécifie le paramètre `Select`, sa valeur doit être `SPECIFIC_ATTRIBUTES`. Cette exigence empêche l’action d’API de retourner les attributs qui ne sont pas autorisés, par exemple à partir d’une projection d’index.
+ Si l’utilisateur spécifie le paramètre `ReturnValues`, sa valeur doit être `NONE`, `UPDATED_OLD` ou `UPDATED_NEW`. Cette action est obligatoire, car l’action `UpdateItem` effectue également des opérations de lecture implicites pour vérifier si un élément existe avant de le remplacer, et afin que les valeurs d’attribut précédentes puissent être retournées en cas de demande. Une telle restriction de `ReturnValues` garantit que les utilisateurs puissent uniquement lire ou écrire les attributs autorisés.
+ La clause `StringEqualsIfExists` garantit qu’un seul de ces paramètres, `Select` ou `ReturnValues`, peut être utilisé par demande dans le contexte des actions autorisées.

Voici quelques variations sur cette politique :
+ Pour autoriser uniquement les actions en lecture, vous pouvez supprimer `UpdateItem` de la liste des actions autorisées. Comme aucune des actions restantes n’accepte `ReturnValues`, vous pouvez supprimer `ReturnValues` de la condition. Vous pouvez également modifier `StringEqualsIfExists` en `StringEquals`, car le paramètre `Select` a toujours une valeur (`ALL_ATTRIBUTES`, sauf mention contraire).
+ Pour autoriser les actions d’écriture uniquement, vous pouvez supprimer tout sauf `UpdateItem` dans la liste des actions autorisées. Comme `UpdateItem` n’utilise pas le paramètre `Select`, vous pouvez supprimer `Select` de la condition. Vous pouvez également modifier `StringEqualsIfExists` en `StringEquals`, car le paramètre `ReturnValues` a toujours une valeur (`NONE`, sauf mention contraire).
+ Pour autoriser tous les attributs dont le nom correspond à un modèle, utilisez `StringLike` au lieu de `StringEquals` et utilisez un caractère générique de correspondance du modèle multi-caractère (\$1).

#### Exemple 4 : accorder des autorisations pour empêcher la mise à jour de certains attributs
<a name="FGAC_DDB.Examples.PreventUpdates"></a>

La politique d’autorisation suivante limite l’accès utilisateur à la seule mise à jour des attributs spécifiques identifiés par la clé de condition `dynamodb:Attributes`. La condition `StringNotLike` empêche qu’une application ne mette à jour les attributs spécifiés à l’aide de la clé de condition `dynamodb:Attributes`.

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

****  

```
{
   "Version":"2012-10-17",		 	 	                    
   "Statement":[
      {
         "Sid":"PreventUpdatesOnCertainAttributes",
         "Effect":"Allow",
         "Action":[
            "dynamodb:UpdateItem"
         ],
         "Resource":"arn:aws:dynamodb:us-west-2:123456789012:table/GameScores",
         "Condition":{
            "ForAllValues:StringNotLike":{
               "dynamodb:Attributes":[
                  "FreeGamesAvailable",
                  "BossLevelUnlocked"
               ]
            },
            "StringEqualsIfExists":{
               "dynamodb:Select":"SPECIFIC_ATTRIBUTES",
               "dynamodb:ReturnValues":[
                  "NONE",
                  "UPDATED_OLD",
                  "UPDATED_NEW"
               ]
            }
         }
      }
   ]
}
```

------

Notez ce qui suit :
+ L’action `UpdateItem`, comme les autres actions d’écriture, nécessite un accès en lecture aux éléments de façon à pouvoir retourner les valeurs avant et après la mise à jour. Dans la politique, vous limitez l’action à n’accéder qu’aux attributs qui sont autorisés à être mis à jour en spécifiant la clé de condition `dynamodb:ReturnValues`. La clé de condition limite `ReturnValues` dans la demande pour spécifier uniquement `NONE`, `UPDATED_OLD` ou `UPDATED_NEW` et n’inclut pas `ALL_OLD` ou `ALL_NEW`.
+ L'`StringEqualsIfExists`opérateur s'assure que si la demande `dynamodb:ReturnValues` est présente `dynamodb:Select` ou est présente, elle doit correspondre aux valeurs spécifiées. Cela empêche les opérations de renvoyer des articles complets.
+ Lorsque vous limitez les mises à jour d'attributs, vous devez également contrôler les données qui peuvent être renvoyées afin d'empêcher la divulgation d'informations sur les attributs protégés.
+ Les actions `PutItem` et `DeleteItem` remplacent un ensemble complet, ce qui permet aux applications de modifier n’importe quel attribut. Ainsi, lorsque vous limitez une application à la mise à jour d'attributs spécifiques uniquement, vous ne devez pas accorder d'autorisation pour ceux-ci APIs.

#### Exemple 5 : accorder des autorisations pour interroger uniquement les attributs projetés dans un index
<a name="FGAC_DDB.Examples.QueryProjectedAttributes"></a>

La politique d’autorisations suivante autorise les requêtes sur un index secondaire (`TopScoreDateTimeIndex`) à l’aide de la clé de condition `dynamodb:Attributes`. La politique limite aussi les requêtes à ne demander que les attributs spécifiques qui ont été projetés sur l’index.

Pour demander que l’application spécifie une liste d’attributs dans la requête, la politique spécifie également la clé de condition `dynamodb:Select` pour exiger que le paramètre `Select` de l’action DynamoDB `Query` soit `SPECIFIC_ATTRIBUTES`. La liste des attributs est limitée à une liste spécifique qui est fournie à l’aide de la clé de condition `dynamodb:Attributes`.

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

****  

```
{
   "Version":"2012-10-17",		 	 	                    
   "Statement":[
      {
         "Sid":"QueryOnlyProjectedIndexAttributes",
         "Effect":"Allow",
         "Action":[
            "dynamodb:Query"
         ],
         "Resource":[
            "arn:aws:dynamodb:us-west-2:123456789012:table/GameScores/index/TopScoreDateTimeIndex"
         ],
         "Condition":{
            "ForAllValues:StringEquals":{
               "dynamodb:Attributes":[
                  "TopScoreDateTime",
                  "GameTitle",
                  "Wins",
                  "Losses",
                  "Attempts"
               ]
            },
            "StringEquals":{
               "dynamodb:Select":"SPECIFIC_ATTRIBUTES"
            }
         }
      }
   ]
}
```

------

La politique d’autorisation suivante est similaire, mais la requête doit demander tous les attributs qui ont été projetés sur l’index.

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

****  

```
{
   "Version":"2012-10-17",		 	 	                    
   "Statement":[
      {
         "Sid":"QueryAllIndexAttributes",
         "Effect":"Allow",
         "Action":[
            "dynamodb:Query"
         ],
         "Resource":[
            "arn:aws:dynamodb:us-west-2:123456789012:table/GameScores/index/TopScoreDateTimeIndex"
         ],
         "Condition":{
            "StringEquals":{
               "dynamodb:Select":"ALL_PROJECTED_ATTRIBUTES"
            }
         }
      }
   ]
}
```

------

#### Exemple 6 : accorder des autorisations pour limiter l'accès à certains attributs et valeurs de clé de partition
<a name="FGAC_DDB.Examples.AttributesAndKeyValues"></a>

La politique d’autorisation suivante autorise des actions spécifiques de DynamoDB (spécifiées dans l’élément `Action`) sur une table et un index de table (spécifiés dans l’élément `Resource`). La politique utilise la clé de `dynamodb:LeadingKeys` condition pour restreindre les autorisations aux seuls éléments dont la valeur de clé de partition correspond à l'identifiant Facebook de l'utilisateur.

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

****  

```
{
   "Version":"2012-10-17",		 	 	                    
   "Statement":[
      {
         "Sid":"LimitAccessToCertainAttributesAndKeyValues",
         "Effect":"Allow",
         "Action":[
            "dynamodb:UpdateItem",
            "dynamodb:GetItem",
            "dynamodb:Query",
            "dynamodb:BatchGetItem"
         ],
         "Resource":[
            "arn:aws:dynamodb:us-west-2:123456789012:table/GameScores",
            "arn:aws:dynamodb:us-west-2:123456789012:table/GameScores/index/TopScoreDateTimeIndex"
         ],
         "Condition":{
            "ForAllValues:StringEquals":{
               "dynamodb:LeadingKeys":[
                  "${graph.facebook.com:id}"
               ],
               "dynamodb:Attributes":[
                  "attribute-A",
                  "attribute-B"
               ]
            },
            "StringEqualsIfExists":{
               "dynamodb:Select":"SPECIFIC_ATTRIBUTES",
               "dynamodb:ReturnValues":[
                  "NONE",
                  "UPDATED_OLD",
                  "UPDATED_NEW"
               ]
            }
         }
      }
   ]
}
```

------

Notez ce qui suit :
+ Les actions d'écriture autorisées par la politique (`UpdateItem`) ne peuvent modifier que l'attribut-A ou l'attribut-B.
+ Comme la politique autorise `UpdateItem`, une application peut insérer de nouveaux éléments et les attributs cachés ont la valeur null dans les nouveaux éléments. Si ces attributs sont projetés dans `TopScoreDateTimeIndex`, la politique présente l’avantage supplémentaire d’empêcher les requêtes qui génèrent des extractions de la table.
+ Les applications ne peuvent pas lire d’autres attributs que ceux listés dans `dynamodb:Attributes`. Avec cette politique en place, une application doit définir le paramètre `Select` sur `SPECIFIC_ATTRIBUTES` dans les demandes de lecture, et seuls des attributs figurant dans la liste verte peuvent être demandés. Pour les demandes d’écriture, l’application ne peut pas définir `ReturnValues` sur `ALL_OLD` ou `ALL_NEW`, et elle ne peut pas effectuer d’opérations d’écriture conditionnelle basées sur d’autres attributs.

#### Exemple 7 : Refuser les autorisations pour limiter l'accès à des attributs spécifiques d'une table
<a name="FGAC_DDB.Examples.DenySpecificAttributes"></a>

La politique suivante refuse l'accès aux attributs sensibles et garantit que cette restriction ne peut pas être contournée en omettant une expression de projection. Il permet un accès général à la `CustomerData` table tout en refusant explicitement l'accès aux `CreditCardNumber` attributs `SSN` et à ses attributs.

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

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement":[
      {
         "Effect":"Allow",
         "Action":[
            "dynamodb:GetItem",
            "dynamodb:Query",
            "dynamodb:Scan"
         ],
         "Resource":"arn:aws:dynamodb:us-west-2:123456789012:table/CustomerData"
      },
      {
         "Effect":"Deny",
         "Action":[
            "dynamodb:GetItem",
            "dynamodb:Query",
            "dynamodb:Scan"
         ],
         "Resource":"arn:aws:dynamodb:us-west-2:123456789012:table/CustomerData",
         "Condition":{
            "ForAnyValue:StringEquals":{
               "dynamodb:Attributes":[
                  "SSN",
                  "CreditCardNumber"
               ]
            }
         }
      },
      {
         "Effect":"Deny",
         "Action":[
            "dynamodb:GetItem",
            "dynamodb:Query",
            "dynamodb:Scan"
         ],
         "Resource":"arn:aws:dynamodb:us-west-2:123456789012:table/CustomerData",
         "Condition":{
            "StringNotEqualsIfExists":{
               "dynamodb:Select":"SPECIFIC_ATTRIBUTES"
            }
         }
      }
   ]
}
```

------

## Rubriques en relation
<a name="w2aac39c21c15c11"></a>
+  [Gestion des identités et des accès pour Amazon DynamoDB](security-iam.md) 
+ [Autorisations d’API DynamoDB : Référence des actions, ressources et conditions](api-permissions-reference.md)

# Utilisation de la fédération d’identité web
<a name="WIF"></a>

Si vous écrivez une application ciblée pour un grand nombre d’utilisateurs, vous pouvez, le cas échéant, utiliser la *fédération d’identité web* pour l’authentification et l’autorisation. La fédération d’identité web élimine le besoin de créer des utilisateurs individuels. Au lieu de cela, les utilisateurs peuvent se connecter à un fournisseur d'identité, puis obtenir des informations d'identification de sécurité temporaires auprès de AWS Security Token Service (AWS STS). L'application peut ensuite utiliser ces informations d'identification pour accéder aux AWS services.

La fédération d’identité Web prend en charge les fournisseurs d’identité suivants :
+ Login with Amazon
+ Facebook
+ Google

## Ressources supplémentaires pour la fédération d’identité web
<a name="WIF.AdditionalResources"></a>

Les ressources suivantes peuvent vous aider à en savoir plus sur la fédération d’identité web :
+ La publication [Web Identity Federation using the AWS SDK pour .NET](https://aws.amazon.com/blogs/developer/web-identity-federation-using-the-aws-sdk-for-net) sur le blog des développeurs AWS explique comment utiliser une fédération d’identité web avec Facebook. Il inclut des extraits de code en C\$1 qui montrent comment assumer un rôle IAM avec une identité Web et comment utiliser des informations d'identification de sécurité temporaires pour accéder à une ressource. AWS 
+ L’[Applications mobiles AWS SDK for iOS](https://aws.amazon.com/sdkforios/) et l’[AWS Mobile SDK pour Android](https://aws.amazon.com/sdkforandroid/) contiennent des exemples d’applications. Ces dernières incluent le code qui montre comment appeler les fournisseurs d’identité et comment utiliser les informations qu’ils fournissent pour obtenir et utiliser les informations d’identification de sécurité temporaires.
+ L'article [Fédération d'identité Web avec applications mobiles](https://aws.amazon.com/articles/4617974389850313) traite de la fédération d'identité Web et montre un exemple d'utilisation de la fédération d'identité Web pour accéder à une AWS ressource.

## Exemple de politique pour la fédération d’identité web
<a name="WIF.Example"></a>

Pour montrer comment utiliser la fédération d'identité Web avec DynamoDB, consultez *GameScores*le tableau introduit dans. [Utilisation de conditions de politique IAM pour un contrôle d’accès précis](specifying-conditions.md) Voici la clé primaire pour *GameScores*.


****  

| Nom de la table | Type de clé primaire | Type et nom de la clé de partition | Type et nom de la clé de tri | 
| --- | --- | --- | --- | 
| GameScores (UserId, GameTitle, ...) | Composite | Nom de l'attribut : UserId Type : Chaîne | Nom de l'attribut : GameTitle Type : Chaîne | 

Supposons maintenant qu’une application de jeu pour appareils mobiles utilise cette table et qu’elle doive prendre en charge des milliers, voire des millions, d’utilisateurs. À cette échelle, il devient très difficile de gérer les utilisateurs individuels des applications et de garantir que chaque utilisateur ne peut accéder qu'à ses propres données dans le *GameScores*tableau. Heureusement, comme la plupart des utilisateurs possèdent des comptes avec un fournisseur d’identité tiers, tel que Facebook, Google ou Login with Amazon. Il est donc logique de tirer parti de l’un de ces fournisseurs pour les tâches d’authentification.

Pour procéder ainsi avec la fédération d’identité web, le développeur d’application doit inscrire l’application auprès d’un fournisseur d’identité (Login with Amazon, par exemple) et obtenir un ID d’application unique. Ensuite, le développeur doit créer un rôle IAM. (Dans cet exemple, ce rôle est nommé *GameRole*.) Un document de politique IAM doit être joint au rôle, spécifiant les conditions dans lesquelles l'application peut accéder à la *GameScores*table.

Lorsqu’un utilisateur veut jouer à un jeu, il se connecte à son compte Login with Amazon depuis l’application de jeu. L'application appelle ensuite AWS Security Token Service (AWS STS), fournit l'identifiant de l'application Login with Amazon et demande d'adhésion *GameRole*. AWS STS renvoie des AWS informations d'identification temporaires à l'application et lui permet d'accéder au *GameScores*tableau, sous réserve du document *GameRole*de politique.

Le schéma suivant illustre comment ces éléments s’ajustent les uns aux autres.

![\[Le flux de travail d’une application de jeu. L'application utilise Amazon ID AWS STS pour obtenir des informations d'identification temporaires pour accéder à une table DynamoDB.\]](http://docs.aws.amazon.com/fr_fr/amazondynamodb/latest/developerguide/images/wif-overview.png)


**Présentation de la fédération d’identité web**

1. L’application appelle un fournisseur d’identité tiers pour authentifier l’utilisateur et l’application. Le fournisseur d’identité retourne un jeton d’identité web à l’application.

1. L'application appelle AWS STS et transmet le jeton d'identité Web en entrée. AWS STS autorise l'application et lui donne des identifiants d' AWS accès temporaires. L'application est autorisée à assumer un rôle IAM (*GameRole*) et à accéder aux AWS ressources conformément à la politique de sécurité du rôle.

1. L'application appelle DynamoDB pour accéder à la table. *GameScores* Parce qu'elle a assumé le *GameRole*, l'application est soumise à la politique de sécurité associée à ce rôle. Le document de politique empêche l’application d’accéder aux données qui n’appartiennent pas à l’utilisateur.

Encore une fois, voici la politique de sécurité *GameRole*qui a été présentée dans [Utilisation de conditions de politique IAM pour un contrôle d’accès précis](specifying-conditions.md) :

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

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement":[
      {
         "Sid":"AllowAccessToOnlyItemsMatchingUserID",
         "Effect":"Allow",
         "Action":[
            "dynamodb:GetItem",
            "dynamodb:BatchGetItem",
            "dynamodb:Query",
            "dynamodb:PutItem",
            "dynamodb:UpdateItem",
            "dynamodb:DeleteItem",
            "dynamodb:BatchWriteItem"
         ],
         "Resource":[
            "arn:aws:dynamodb:us-west-2:123456789012:table/GameScores"
         ],
         "Condition":{
            "ForAllValues:StringEquals":{
               "dynamodb:LeadingKeys":[
                  "${www.amazon.com:user_id}"
               ],
               "dynamodb:Attributes":[
                  "UserId",
                  "GameTitle",
                  "Wins",
                  "Losses",
                  "TopScore",
                  "TopScoreDateTime"
               ]
            },
            "StringEqualsIfExists":{
               "dynamodb:Select":"SPECIFIC_ATTRIBUTES"
            }
         }
      }
   ]
}
```

------

La `Condition` clause détermine quels éléments *GameScores*sont visibles par l'application. A cette fin, elle compare l’ID de Login with Amazon aux valeurs de clé de partition `UserId` dans `GameScores`. Seuls les éléments appartenant à l’utilisateur actuel peuvent être traités à l’aide de l’une des actions DynamoDB répertoriées dans cette politique. Il n’est pas possible d’accéder aux autres éléments de la table. En outre, seuls les attributs spécifiques répertoriés dans la politique sont accessibles.

# Préparation de l’utilisation de la fédération d’identité web
<a name="WIF.PreparingForUse"></a>

Si vous êtes un développeur d’applications et que vous souhaitez utiliser la fédération d’identité web pour votre application, procédez comme suit :

1. **Inscrivez-vous en tant que développeur avec un fournisseur d’identité tiers.** Les liens externes suivants fournissent des informations sur l’inscription avec les fournisseurs d’identité pris en charge :
   + [Login with Amazon Developer Center](http://login.amazon.com/)
   + [Inscription](https://business.facebook.com/business/loginpage) sur le site de Facebook
   + [Utilisation de la OAuth version 2.0 pour accéder à Google APIs](https://developers.google.com/accounts/docs/OAuth2) sur le site de Google

1. **Inscrivez votre application auprès du fournisseur d’identité.** Lorsque vous procédez ainsi, le fournisseur vous fournit un ID unique pour votre application. Si vous voulez que votre application fonctionne avec plusieurs fournisseurs d’identité, vous devez obtenir un ID d’application de chaque fournisseur.

1. **Créez un ou plusieurs rôles IAM.**Vous avez besoin d’un rôle pour chaque fournisseur d’identité de chaque application. Par exemple, vous pouvez créer un rôle qui peut être assumé par une application où l’utilisateur s’est connecté à l’aide de Login with Amazon, un deuxième rôle pour une même application où l’utilisateur s’est connecté à l’aide de Facebook et un troisième rôle pour l’application où les utilisateurs se connectent à l’aide de Google.

   Dans le cadre du processus de création de rôle, vous devez attacher une politique IAM au rôle. Votre document de politique doit définir les ressources DynamoDB que votre application requiert, ainsi que les autorisations d’accès à ces ressources.

Pour plus d’informations, consultez [À propos de la fédération d’identité web](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_providers_oidc.html) dans le *Guide de l’utilisateur IAM*. 

**Note**  
Au lieu de cela AWS Security Token Service, vous pouvez utiliser Amazon Cognito. Amazon Cognito est le service préféré pour la gestion des informations d’identification temporaires pour les applications mobiles. Pour plus d’informations, consultez [Obtention des informations d’identification](https://docs.aws.amazon.com/cognito/latest/developerguide/getting-credentials.html) dans le *Guide du développeur Amazon Cognito.* 

## Génération d’une politique IAM à l’aide de la console DynamoDB
<a name="WIF.PreparingForUse.DDBConsole"></a>

La console DynamoDB peut vous aider à créer une politique IAM à utiliser avec une fédération d’identité web. Pour ce faire, vous choisissez une table DynamoDB et spécifiez le fournisseur d’identité, les actions et les attributs à inclure dans la politique. La console DynamoDB génère ensuite une politique que vous pouvez attacher à un rôle IAM.

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, choisissez **Tables**. 

1.  Dans la liste des tables, sélectionnez la table pour laquelle vous souhaitez créer la politique IAM. 

1.  Sélectionnez le bouton **Actions**, puis choisissez **Créer une stratégie de contrôle d’accès**. 

1.  Sélectionnez le fournisseur d’identité, les actions et les attributs de la politique. 

    Lorsque les paramètres sont définis comme vous le souhaitez, choisissez **Générer une stratégie**. La politique générée s’affiche. 

1.  Choisissez **Consulter la documentation**, puis suivez les étapes nécessaires pour attacher la stratégie générée à un rôle IAM. 

# Écriture de votre application pour utiliser la fédération d’identité web
<a name="WIF.RunningYourApp"></a>

Pour utiliser une fédération d’identité web, votre application doit endosser le rôle IAM que vous avez créé. À partir de là, les applications satisfont la politique d’accès attachée au rôle.

Lors de l’exécution, si votre application utilise la fédération d’identité web, elle doit suivre cette procédure :

1. **S’authentifier auprès d’un fournisseur d’identité tiers.** Votre application doit appeler le fournisseur d’identité à l’aide d’une interface fournie. La façon exacte dont vous authentifiez l’utilisateur dépend du fournisseur et de la plateforme sur laquelle votre application s’exécute. Généralement, si l’utilisateur n’est pas déjà connecté, le fournisseur d’identité veille à afficher une page de connexion pour ce fournisseur.

   Une fois que le fournisseur d’identité a authentifié l’utilisateur, le fournisseur renvoie un jeton d’identité web à votre application. Le format de ce jeton dépend du fournisseur, mais il s’agit généralement d’une très longue chaîne de caractères.

1. **Obtenez des informations d'identification AWS de sécurité temporaires.** Pour ce faire, votre application envoie une demande `AssumeRoleWithWebIdentity` à AWS Security Token Service (AWS STS). Cette demande contient les éléments suivants :
   + Le jeton d’identité web de l’étape précédente
   + L’ID d’application du fournisseur d’identité
   + L’ARN (Amazon Resource Name) du rôle IAM que vous avez créé pour ce fournisseur d’identité pour cette application

   AWS STS renvoie un ensemble d'informations d'identification de AWS sécurité qui expirent après un certain temps (3 600 secondes, par défaut).

   Voici un exemple de demande et de réponse d’une action `AssumeRoleWithWebIdentity` dans AWS STS. Le jeton d’identité web a été obtenu depuis le fournisseur d’identité Login with Amazon.

   ```
   GET / HTTP/1.1
   Host: sts.amazonaws.com
   Content-Type: application/json; charset=utf-8
   URL: https://sts.amazonaws.com/?ProviderId=www.amazon.com
   &DurationSeconds=900&Action=AssumeRoleWithWebIdentity
   &Version=2011-06-15&RoleSessionName=web-identity-federation
   &RoleArn=arn:aws:iam::123456789012:role/GameRole
   &WebIdentityToken=Atza|IQEBLjAsAhQluyKqyBiYZ8-kclvGTYM81e...(remaining characters omitted)
   ```

   

   ```
   <AssumeRoleWithWebIdentityResponse
     xmlns="https://sts.amazonaws.com/doc/2011-06-15/">
     <AssumeRoleWithWebIdentityResult>
       <SubjectFromWebIdentityToken>amzn1.account.AGJZDKHJKAUUSW6C44CHPEXAMPLE</SubjectFromWebIdentityToken>
       <Credentials>
         <SessionToken>AQoDYXdzEMf//////////wEa8AP6nNDwcSLnf+cHupC...(remaining characters omitted)</SessionToken>
         <SecretAccessKey>8Jhi60+EWUUbbUShTEsjTxqQtM8UKvsM6XAjdA==</SecretAccessKey>
         <Expiration>2013-10-01T22:14:35Z</Expiration>
         <AccessKeyId>06198791C436IEXAMPLE</AccessKeyId>
       </Credentials>
       <AssumedRoleUser>
         <Arn>arn:aws:sts::123456789012:assumed-role/GameRole/web-identity-federation</Arn>
         <AssumedRoleId>AROAJU4SA2VW5SZRF2YMG:web-identity-federation</AssumedRoleId>
       </AssumedRoleUser>
     </AssumeRoleWithWebIdentityResult>
     <ResponseMetadata>
       <RequestId>c265ac8e-2ae4-11e3-8775-6969323a932d</RequestId>
     </ResponseMetadata>
   </AssumeRoleWithWebIdentityResponse>
   ```

1. **Accédez aux AWS ressources.** La réponse de AWS STS contient les informations que votre application requiert pour accéder aux ressources DynamoDB :
   + Les champs `AccessKeyID`, `SecretAccessKey` et `SessionToken` contiennent les informations d’identification de sécurité qui sont valides pour cet utilisateur et cette application uniquement. 
   + Le champ `Expiration` indique le délai des informations d’identification, au terme duquel elles ne sont plus valides.
   + Le champ `AssumedRoleId` contient le nom d’un rôle IAM spécifique de la session qui a été endossé par l’application. L’application respecte les contrôles d’accès décrits dans document de politique IAM pendant la durée de la session.
   + Le champ `SubjectFromWebIdentityToken` contient l’ID unique qui s’affiche dans une variable de politique IAM pour ce fournisseur d’identité particulier. Voici les variables de politique IAM pour les fournisseurs pris en charge, ainsi que quelques exemples de valeurs associées à ceux-ci :  
****    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/amazondynamodb/latest/developerguide/WIF.RunningYourApp.html)

Pour des exemples de politiques IAM où ces variables de politique sont utilisées, consultez [Exemples de politique : utilisation de conditions pour un contrôle d’accès détaillé](specifying-conditions.md#FGAC_DDB.Examples).

Pour plus d'informations sur le mode de génération des AWS STS informations d'identification d'accès temporaires, consultez la section [Demande d'informations d'identification de sécurité temporaires](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_request.html) dans le *guide de l'utilisateur IAM*.

# Autorisations d’API DynamoDB : Référence des actions, ressources et conditions
<a name="api-permissions-reference"></a>

Lorsque vous configurez [Gestion des identités et des accès pour Amazon DynamoDB](security-iam.md) et écrivez une politique d’autorisations que vous pouvez attacher à une identité IAM (politiques basées sur une identité), vous pouvez vous référer à la liste [Actions, resources, et clés de condition pour Amazon DynamoDB](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazondynamodb.html) dans le *Guide de l’utilisateur IAM*. La page répertorie chaque opération de l'API DynamoDB, les actions correspondantes pour lesquelles vous pouvez accorder des autorisations pour effectuer l'action, ainsi que AWS la ressource pour laquelle vous pouvez accorder les autorisations. Vous spécifiez les actions dans le champ `Action` de la politique ainsi que la valeur des ressources dans le champ `Resource` de la politique.

Vous pouvez utiliser des AWS clés de condition larges dans vos politiques DynamoDB pour exprimer des conditions. Pour obtenir la liste complète des clés AWS-wide, consultez la [référence aux éléments de politique IAM JSON](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements.html#AvailableKeys) dans le guide de l'*utilisateur IAM*.

Outre les clés de AWS condition générales, DynamoDB possède ses propres clés spécifiques que vous pouvez utiliser dans des conditions. Pour de plus amples informations, veuillez consulter [Utilisation de conditions de politique IAM pour un contrôle d’accès précis](specifying-conditions.md).

## Rubriques en relation
<a name="w2aac39c21c15c15b9"></a>
+  [Gestion des identités et des accès pour Amazon DynamoDB](security-iam.md)
+ [Utilisation de conditions de politique IAM pour un contrôle d’accès précis](specifying-conditions.md)

# Validation de la conformité par l’industrie pour DynamoDB
<a name="Compliance"></a>

Pour savoir si un [programme Services AWS de conformité Service AWS s'inscrit dans le champ d'application de programmes de conformité](https://aws.amazon.com/compliance/services-in-scope/) spécifiques, consultez Services AWS la section de conformité et sélectionnez le programme de conformité qui vous intéresse. Pour des informations générales, voir Programmes de [AWS conformité Programmes AWS](https://aws.amazon.com/compliance/programs/) de .

Vous pouvez télécharger des rapports d'audit tiers à l'aide de AWS Artifact. Pour plus d'informations, voir [Téléchargement de rapports dans AWS Artifact](https://docs.aws.amazon.com/artifact/latest/ug/downloading-documents.html) .

Votre responsabilité en matière de conformité lors de l'utilisation Services AWS est déterminée par la sensibilité de vos données, les objectifs de conformité de votre entreprise et les lois et réglementations applicables. Pour plus d'informations sur votre responsabilité en matière de conformité lors de l'utilisation Services AWS, consultez [AWS la documentation de sécurité](https://docs.aws.amazon.com/security/).

# Résilience et reprise après sinistre dans Amazon DynamoDB
<a name="disaster-recovery-resiliency"></a>

L'infrastructure AWS mondiale est construite autour des AWS régions et des zones de disponibilité. AWS Les régions fournissent plusieurs zones de disponibilité physiquement séparées et isolées, connectées par un réseau à faible latence, à haut débit et hautement redondant. Avec les zones de disponibilité, vous pouvez concevoir et exploiter des applications et des bases de données qui basculent automatiquement d’une zone de disponibilité à l’autre sans interruption. Les zones de disponibilité sont plus hautement disponibles, tolérantes aux pannes et évolutives que les infrastructures traditionnelles à un ou plusieurs centres de données. 

Si vous avez besoin de répliquer vos données ou applications sur des distances géographiques plus importantes, utilisez des régions locales AWS . Une région AWS locale est un centre de données unique conçu pour compléter une AWS région existante. Comme toutes les AWS régions, les régions AWS locales sont complètement isolées des autres AWS régions.

Pour plus d'informations sur AWS les régions et les zones de disponibilité, consultez la section [Infrastructure AWS globale](https://aws.amazon.com/about-aws/global-infrastructure/).

Amazon DynamoDB réplique automatiquement vos données sur trois zones de disponibilité d'une région, offrant ainsi une durabilité élevée intégrée et un SLA de disponibilité de 99,99 %. En outre, DynamoDB propose plusieurs fonctionnalités destinées à répondre à vos besoins en matière de résilience et de sauvegarde des données.

**Sauvegarde et restauration à la demande**  
DynamoDB fournit une capacité de sauvegarde à la demande. Il vous permet de créer des sauvegardes complètes de vos tables pour l’archivage et la conservation à long terme. Pour plus d’informations, consultez [Sauvegarde et restauration à la demande pour DynamoDB](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Backup-and-Restore.html).

**Point-in-time rétablissement**  
Point-in-time La restauration permet de protéger vos tables DynamoDB contre les opérations d'écriture ou de suppression accidentelles. Grâce à la restauration à un instant dans le passé, vous n’avez plus à vous soucier de la création, de la maintenance ou de la planification des sauvegardes à la demande. Pour plus d'informations, consultez la section [Point-in-time Restauration pour DynamoDB](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Point-in-time-recovery.html).

**Tables globales synchronisées entre les régions AWS **  
DynamoDB répartit automatiquement les données et le trafic de vos tables sur un nombre suffisant de serveurs afin de gérer les exigences de débit et de stockage, tout en assurant la cohérence et la rapidité des performances. Toutes vos données sont stockées sur des disques SSD (SSDs) et sont automatiquement répliquées dans plusieurs zones de disponibilité d'une AWS région, offrant ainsi une haute disponibilité et une durabilité des données intégrées. Vous pouvez utiliser des tables globales pour synchroniser les tables DynamoDB entre les régions. AWS 

# Sécurité de l’infrastructure dans Amazon DynamoDB
<a name="network-isolation"></a>

En tant que service géré, Amazon DynamoDB est protégé par les procédures de sécurité du réseau mondial décrites [dans AWS la section Protection de l'infrastructure](https://docs.aws.amazon.com/wellarchitected/latest/security-pillar/infrastructure-protection.html) du Well-Architected Framework. AWS 

Vous utilisez des appels d'API AWS publiés pour accéder à DynamoDB via le réseau. Les clients peuvent utiliser la version 1.2 ou 1.3 du protocole TLS (Transport Layer Security). Les clients doivent également prendre en charge les suites de chiffrement PFS (Perfect Forward Secrecy) comme Ephemeral Diffie-Hellman (DHE) ou Elliptic Curve Ephemeral Diffie-Hellman (ECDHE). La plupart des systèmes modernes tels que Java 7 et les versions ultérieures prennent en charge ces modes. En outre, les demandes doivent être signées à l’aide d’un ID de clé d’accès et d’une clé d’accès secrète associée à un principal IAM. Vous pouvez également utiliser [AWS Security Token Service](https://docs.aws.amazon.com/STS/latest/APIReference/Welcome.html) (AWS STS) pour générer des informations d’identification de sécurité temporaires et signer les demandes.

 Vous pouvez également utiliser un point de terminaison de cloud privé virtuel (Virtual Private Cloud, VPC) pour DynamoDB afin de permettre aux instances Amazon EC2 de votre VPC d’utiliser leurs adresses IP privées pour accéder à DynamoDB sans exposition à l’Internet public. Pour de plus amples informations, veuillez consulter [Utilisation de points de terminaison d’un VPC Amazon pour accéder à DynamoDB](#vpc-endpoints-dynamodb). 

## Utilisation de points de terminaison d’un VPC Amazon pour accéder à DynamoDB
<a name="vpc-endpoints-dynamodb"></a>

Pour des raisons de sécurité, de nombreux AWS clients exécutent leurs applications dans un environnement Amazon Virtual Private Cloud (Amazon VPC). Un VPC Amazon vous permet de lancer des instances Amazon EC2 dans un cloud privé virtuel qui est isolé logiquement des autres réseaux, dont l’Internet public. Avec un VPC Amazon, vous contrôlez sa plage d’adresses IP, ses sous-réseaux, ses tables de routage, ses passerelles réseau et ses paramètres de sécurité.

**Note**  
Si vous avez créé votre VPC Compte AWS après le 4 décembre 2013, vous avez déjà un VPC par défaut dans chacun d'eux. Région AWS Un VPC par défaut est prêt à l’emploi. Vous pouvez commencer à l’utiliser immédiatement sans avoir à le configurer.  
Pour plus d’informations, consultez [VPC par défaut et sous-réseaux par défaut](https://docs.aws.amazon.com/vpc/latest/userguide/default-vpc.html) dans le *Guide de l’utilisateur Amazon VPC*.

Pour accéder à l’Internet public, votre VPC doit disposer d’une passerelle Internet, c’est-à-dire un routeur virtuel qui connecte votre VPC à Internet. Cela permet aux applications s’exécutant sur Amazon EC2 dans votre VPC d’accéder à des ressources Internet telles qu’Amazon DynamoDB.

Par défaut, les communications à destination et en provenance de DynamoDB utilisent le protocole HTTPS, qui protège le trafic réseau en utilisant le chiffrement. SSL/TLS Le diagramme suivant montre une instance Amazon EC2 dans un VPC accédant à DynamoDB, en demandant à DynamoDB d’utiliser une passerelle Internet plutôt que des points de terminaison d’un VPC.

![\[Diagramme de flux montrant une instance Amazon EC2 accédant à DynamoDB via un routeur, une passerelle Internet et Internet.\]](http://docs.aws.amazon.com/fr_fr/amazondynamodb/latest/developerguide/images/ddb-no-vpc-endpoint.png)


De nombreux clients ont des préoccupations légitimes liées à la confidentialité et la sécurité lors de l’envoi et de la réception de données via le réseau Internet public. Vous pouvez balayer ces préoccupations en utilisant un réseau privé virtuel (virtual private network, VPN) pour acheminer tout le trafic réseau de DynamoDB via votre propre infrastructure réseau d’entreprise. Toutefois, cette approche peut engendrer des problèmes en matière de bande passante et de disponibilité.

Des points de terminaison de VPC pour DynamoDB peuvent atténuer ces problèmes. Un *point de terminaison de VPC* pour DynamoDB permet aux instances Amazon EC2 dans votre VPC d’utiliser leurs adresses IP privées pour accéder à DynamoDB sans exposition à l’Internet public. Vos instances EC2 ne requièrent pas d’adresses IP publiques, et vous n’avez pas besoin de passerelle Internet, de périphérique NAT ou de passerelle réseau privé virtuel dans votre VPC. Vous utilisez des politiques de point de terminaison pour contrôler l’accès à DynamoDB. Le trafic entre votre VPC et le AWS service ne quitte pas le réseau Amazon.

**Note**  
 Même lorsque vous utilisez des adresses IP publiques, toutes les communications VPC entre les instances et les services hébergés restent privées au sein du AWS réseau. AWS Les paquets provenant du AWS réseau avec une destination sur le réseau restent sur le AWS réseau AWS mondial, à l'exception du trafic à destination ou AWS en provenance des régions de Chine. 

Lorsque vous créez un point de terminaison de VPC pour DynamoDB, toutes les demandes envoyées à un point de terminaison DynamoDB au sein de la région (par exemple, *dynamodb.us-west-2.amazonaws.com*) sont acheminées vers un point de terminaison DynamoDB privé au sein du réseau Amazon. Vous n’avez pas besoin de modifier vos applications s’exécutant sur des instances EC2 dans votre VPC. Le nom du point de terminaison reste le même, mais la route vers DynamoDB reste entièrement dans le réseau Amazon et n’accède pas au réseau Internet public. 

Le diagramme suivant montre comment une instance EC2 dans un VPC peut utiliser un point de terminaison de VPC pour accéder à DynamoDB.

![\[Diagramme de flux montrant une instance EC2 accédant à DynamoDB via un routeur et un point de terminaison de VPC uniquement.\]](http://docs.aws.amazon.com/fr_fr/amazondynamodb/latest/developerguide/images/ddb-yes-vpc-endpoint.png)


Pour de plus amples informations, veuillez consulter [Didacticiel : Utilisation d’un point de terminaison d’un VPC pour DynamoDB](#vpc-endpoints-dynamodb-tutorial).

### Partage des points de terminaison Amazon VPC et de DynamoDB
<a name="vpc-endpoints-dynamodb-sharing"></a>

Pour permettre l’accès au service DynamoDB via le point de terminaison de passerelle d’un sous-réseau VPC, vous devez disposer des autorisations de compte propriétaire pour ce sous-réseau VPC.

 Une fois que le point de terminaison de passerelle du sous-réseau VPC a obtenu l’accès à DynamoDB, n’importe quel compte  AWS  ayant accès à ce sous-réseau peut utiliser DynamoDB. Cela signifie que tous les utilisateurs du compte au sein du sous-réseau VPC peuvent utiliser toutes les tables DynamoDB auxquelles ils ont accès. Cela inclut les tables DynamoDB associées à un compte différent de celui du sous-réseau VPC. Le propriétaire du sous-réseau VPC peut toujours empêcher un utilisateur particulier du sous-réseau d’utiliser le service DynamoDB via le point de terminaison de passerelle, à sa discrétion. 

### Didacticiel : Utilisation d’un point de terminaison d’un VPC pour DynamoDB
<a name="vpc-endpoints-dynamodb-tutorial"></a>

Cette section vous guide dans la configuration et l’utilisation d’un point de terminaison de VPC pour DynamoDB.

**Topics**
+ [Étape 1 : lancer une instance Amazon EC2](#vpc-endpoints-dynamodb-tutorial.launch-ec2-instance)
+ [Étape 2 : configurer votre instance Amazon EC2](#vpc-endpoints-dynamodb-tutorial.configure-ec2-instance)
+ [Étape 3 : créer un point de terminaison d’un VPC pour DynamoDB](#vpc-endpoints-dynamodb-tutorial.create-endpoint)
+ [Étape 4 : (Facultatif) nettoyer](#vpc-endpoints-dynamodb-tutorial.clean-up)

#### Étape 1 : lancer une instance Amazon EC2
<a name="vpc-endpoints-dynamodb-tutorial.launch-ec2-instance"></a>

Au cours de cette étape, vous allez lancer une instance Amazon EC2 dans votre VPC Amazon par défaut. Vous pouvez ensuite créer et utiliser un point de terminaison de VPC pour DynamoDB.

1. Ouvrez la console Amazon EC2 à l’adresse [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/).

1. Choisissez **Lancer une instance **, puis procédez comme suit :

   Étape 1 : Sélection d’une Amazon Machine Image (AMI)
   + En haut de la liste AMIs, accédez à **Amazon Linux AMI** et choisissez **Select**.

   Étape 2 : Choisir un type d’instance
   + En haut de la liste des types d’instance, choisissez **t2.micro**.
   + Sélectionnez **Next: Configure Instance Details**.

   Étape 3 : Configurer les détails de l’instance
   + Accédez à **Network** et choisissez votre VPC par défaut.

     Choisissez **Next: Add Storage** (Suivant : Ajouter le stockage).

   Étape 4 : Ajouter du stockage
   + Ignorez cette étape en choisissant **Next: Tag Instance**.

   Étape 5 : étiqueter l’instance
   + Ignorez cette étape en choisissant **Next: Configure Security Group**.

   Étape 6 : Configurer un groupe de sécurité
   + Choisissez **Select an existing security group**.
   + Dans la liste des groupes de sécurité, choisissez **default**. Il s’agit du groupe de sécurité par défaut pour votre VPC.
   + Choisissez **Next: Review and Launch**.

   Étape 7 : Examiner le lancement de l’instance
   + Choisissez **Lancer**.

1. Dans la fenêtre **Select an existing key pair or create a new key pair**, sélectionnez l’une des options suivantes :
   + Si vous n’avez pas de paire de clés Amazon EC2, choisissez **Create a new key pair (Créer une paire de clés)**, puis suivez les instructions. Vous êtes invité à télécharger un fichier de clé privée (fichier *.pem*) dont vous aurez besoin ultérieurement pour vous connecter à votre instance Amazon EC2.
   + Si vous possédez déjà une paire de clés Amazon EC2, accédez à **Select a key pair (Sélectionner une paire de clés)**, puis choisissez votre paire de clés dans la liste. Vous devez déjà posséder le fichier de clé privée (fichier *.pem*) pour pouvoir vous connecter à votre instance Amazon EC2.

1. Lorsque vous aurez configuré votre paire de clés, choisissez **Launch Instances**.

1. Revenez à la page d’accueil de la console Amazon EC2 et choisissez l’instance que vous avez lancée. Dans le volet inférieur, sous l’onglet **Description**, recherchez le **DNS public** de votre instance. Par exemple : `ec2-00-00-00-00.us-east-1.compute.amazonaws.com`.

   Notez le nom de ce DNS public, dont vous aurez besoin à l’étape suivante de ce tutoriel ([Étape 2 : configurer votre instance Amazon EC2](#vpc-endpoints-dynamodb-tutorial.configure-ec2-instance)).

**Note**  
Votre instance Amazon EC2 devient disponible en l’espace de quelques minutes. Avant de passer à l’étape suivante, assurez-vous que l’**Instance State (État de l’instance)** est `running` et que tous ses **Status Checks (Contrôles d’état)** ont réussi.

#### Étape 2 : configurer votre instance Amazon EC2
<a name="vpc-endpoints-dynamodb-tutorial.configure-ec2-instance"></a>

Une fois votre instance Amazon EC2 disponible, vous pouvez vous y connecter et la préparer en vue de sa première utilisation.

**Note**  
Les étapes suivantes partent du principe que vous vous connectez à votre instance Amazon EC2 à partir d’un ordinateur exécutant Linux. Pour découvrir d’autres modes de connexion, consultez [Connectez-vous à votre instance Linux](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/AccessingInstances.html) dans le Guide de l’utilisateur Amazon EC2.

1. Vous devez autoriser le trafic SSH entrant vers votre instance Amazon EC2. Pour ce faire, vous devez créer un groupe de sécurité EC2, puis affecter ce groupe de sécurité à votre instance EC2.

   1. Dans le panneau de navigation, choisissez **Groupes de sécurité**.

   1. Sélectionnez **Créer un groupe de sécurité**. Dans la fenêtre **Créer un groupe de sécurité**, procédez comme suit :
      + **Security group name (Nom du groupe de sécurité)** – Entrez un nom unique pour votre groupe de sécurité. Par exemple : `my-ssh-access`
      + **Description** – Entrez une brève description du groupe de sécurité.
      + **VPC** – Choisissez votre eVPC par défaut.
      + Dans la section **Security group rules (Règles du groupe de sécurité)**, choisissez **Add Rule (Ajouter une règle)**, puis procédez comme suit :
        + **Type** – Choisissez SSH.
        + **Source** – Choisissez Mon IP.

      Lorsque les paramètres vous conviennent, choisissez **Create**.

   1. Dans le panneau de navigation, choisissez **Instances**.

   1. Choisissez l’instance Amazon EC2 que vous avez lancée dans [Étape 1 : lancer une instance Amazon EC2](#vpc-endpoints-dynamodb-tutorial.launch-ec2-instance).

   1. Sélectionnez **Actions**, **Networking (Mise en réseau)**, **Change Security Groups (Changer les groupes de sécurité)**.

   1. Dans **Change Security Groups (Modifier les groupes de sécurité)**, sélectionnez le groupe de sécurité que vous avez créé précédemment dans cette procédure (par exemple, `my-ssh-access`). Le groupe de sécurité `default` existant doit également être sélectionné. Lorsque les paramètres vous conviennent, choisissez **Assign Security Groups (Affecter les groupes de sécurité)**.

1. Utilisez la commande `ssh` pour vous connecter à votre instance Amazon EC2, comme dans l’exemple suivant.

   ```
   ssh -i my-keypair.pem ec2-user@public-dns-name
   ```

   Vous devez spécifier votre fichier de clé privée (fichier *.perm*) et le nom DNS public de votre instance. (Consultez [Étape 1 : lancer une instance Amazon EC2](#vpc-endpoints-dynamodb-tutorial.launch-ec2-instance)). 

   L’ID de connexion est `ec2-user`. Aucun mot de passe n’est requis.

1. Configurez vos AWS informations d'identification comme indiqué dans l'exemple suivant. Saisissez vos ID de clé d’accès, clé secrète et nom de région par défaut AWS lorsque vous y êtes invité.

   ```
   aws configure
   ```

   ```
   AWS Access Key ID [None]: AKIAIOSFODNN7EXAMPLE
   AWS Secret Access Key [None]: wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
   Default region name [None]: us-east-1
   Default output format [None]:
   ```

Vous êtes maintenant prêt à créer un point de terminaison de VPC pour DynamoDB.

#### Étape 3 : créer un point de terminaison d’un VPC pour DynamoDB
<a name="vpc-endpoints-dynamodb-tutorial.create-endpoint"></a>

Au cours de cette étape, vous allez créer un point de terminaison de VPC pour DynamoDB et le tester pour vérifier qu’il fonctionne.

1. Avant de commencer, vérifiez que vous pouvez communiquer avec DynamoDB à l’aide de son point de terminaison public.

   ```
   aws dynamodb list-tables
   ```

   La sortie affiche la liste des tables DynamoDB que vous possédez actuellement (si vous n’avez aucune table, la liste est vide).

1. Vérifiez que DynamoDB est un service disponible pour créer des points de terminaison VPC dans la région actuelle. AWS (la commande est affichée en gras, suivie d’un exemple de sortie).

   ```
   aws ec2 describe-vpc-endpoint-services
   ```

   ```
   {
       "ServiceNames": [
           "com.amazonaws.us-east-1.s3",
           "com.amazonaws.us-east-1.dynamodb"
       ]
   }
   ```

   Dans l’exemple de sortie, DynamoDB est l’un des services disponibles. Vous pouvez donc continuer à créer un point de terminaison de VPC pour celui-ci.

1. Déterminez votre identifiant de VPC.

   ```
   aws ec2 describe-vpcs
   ```

   ```
   {
       "Vpcs": [
           {
               "VpcId": "vpc-0bbc736e", 
               "InstanceTenancy": "default", 
               "State": "available", 
               "DhcpOptionsId": "dopt-8454b7e1", 
               "CidrBlock": "172.31.0.0/16", 
               "IsDefault": true
           }
       ]
   }
   ```

   Dans l’exemple de sortie, l’ID de VPC est `vpc-0bbc736e`.

1. Créez le point de terminaison de VPC. Pour le paramètre `--vpc-id`, spécifiez l’ID de VPC de l’étape précédente. Utilisez le paramètre `--route-table-ids` pour associer le point de terminaison à vos tables de routage.

   ```
   aws ec2 create-vpc-endpoint --vpc-id vpc-0bbc736e --service-name com.amazonaws.us-east-1.dynamodb --route-table-ids rtb-11aa22bb
   ```

   ```
   {
       "VpcEndpoint": {
           "PolicyDocument": "{\"Version\":\"2008-10-17\",\"Statement\":[{\"Effect\":\"Allow\",\"Principal\":\"*\",\"Action\":\"*\",\"Resource\":\"*\"}]}", 
           "VpcId": "vpc-0bbc736e", 
           "State": "available", 
           "ServiceName": "com.amazonaws.us-east-1.dynamodb", 
           "RouteTableIds": [
               "rtb-11aa22bb"
           ],
           "VpcEndpointId": "vpce-9b15e2f2", 
           "CreationTimestamp": "2017-07-26T22:00:14Z"
       }
   }
   ```

1. Vérifiez que vous pouvez accéder à DynamoDB via le point de terminaison de VPC.

   ```
   aws dynamodb list-tables
   ```

   Si vous le souhaitez, vous pouvez essayer d'autres AWS CLI commandes pour DynamoDB. Pour plus d’informations, consultez la référence de la commande [AWS CLI](https://docs.aws.amazon.com/cli/latest/reference/).

#### Étape 4 : (Facultatif) nettoyer
<a name="vpc-endpoints-dynamodb-tutorial.clean-up"></a>

Si vous souhaitez supprimer les ressources que vous avez créées dans ce didacticiel, procédez comme suit :

**Pour supprimer votre point de terminaison de VPC pour DynamoDB**

1. Connectez-vous à votre instance Amazon EC2.

1. Déterminez l’ID du point de terminaison de VPC.

   ```
   aws ec2 describe-vpc-endpoints
   ```

   ```
   {
       "VpcEndpoint": {
           "PolicyDocument": "{\"Version\":\"2008-10-17\",\"Statement\":[{\"Effect\":\"Allow\",\"Principal\":\"*\",\"Action\":\"*\",\"Resource\":\"*\"}]}", 
           "VpcId": "vpc-0bbc736e", 
           "State": "available", 
           "ServiceName": "com.amazonaws.us-east-1.dynamodb", 
           "RouteTableIds": [], 
           "VpcEndpointId": "vpce-9b15e2f2", 
           "CreationTimestamp": "2017-07-26T22:00:14Z"
       }
   }
   ```

   Dans l’exemple de sortie, l’ID du point de terminaison de VPC est `vpce-9b15e2f2`.

1. Supprimez le point de terminaison de VPC.

   ```
   aws ec2 delete-vpc-endpoints --vpc-endpoint-ids vpce-9b15e2f2
   ```

   ```
   {
       "Unsuccessful": []
   }
   ```

   Le tableau vide `[]` indique le succès de l’opération (il n’y a pas eu de demande infructueuse).

**Pour résilier votre instance Amazon EC2**

1. Ouvrez la console Amazon EC2 à l’adresse [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/).

1. Dans le panneau de navigation, choisissez **Instances**.

1. Sélectionnez votre instance Amazon EC2.

1. Choisissez **Actions**, **Instance State** (État de l’instance), **Terminate** (Résilier).

1. Dans la fenêtre de confirmation, choisissez **Yes, Terminate (Oui, Résilier)**.

# AWS PrivateLink pour DynamoDB
<a name="privatelink-interface-endpoints"></a>

Avec AWS PrivateLink DynamoDB, vous pouvez provisionner des points de terminaison *Amazon VPC* (points de terminaison d'interface) dans votre cloud privé virtuel (Amazon VPC). Ces points de terminaison sont directement accessibles depuis des applications installées sur site via un VPN et/ou via un autre système de peering Région AWS via [Amazon VPC](https://docs.aws.amazon.com/vpc/latest/peering/what-is-vpc-peering.html). Direct Connect En utilisant AWS PrivateLink et les points de terminaison d’interface, vous pouvez simplifier la connectivité réseau privé entre vos applications et DynamoDB.

Les applications de votre VPC n’ont pas besoin d’adresses IP publiques pour communiquer avec DynamoDB à l’aide des points de terminaison d’interface VPC pour les opérations DynamoDB. Les points de terminaison d'interface sont représentés par une ou plusieurs interfaces réseau élastiques (ENIs) auxquelles des adresses IP privées sont attribuées à partir de sous-réseaux de votre Amazon VPC. Les demandes adressées à DynamoDB via les points de terminaison d’interface restent sur le réseau Amazon. Vous pouvez également accéder aux points de terminaison d'interface de votre Amazon VPC à partir d'applications sur site AWS Direct Connect via AWS Virtual Private Network ou ().Site-to-Site VPN Pour plus d’informations sur la façon de connecter votre VPC Amazon à votre réseau sur site, consultez le [Guide de l’utilisateur Direct Connect](https://docs.aws.amazon.com/directconnect/latest/UserGuide/Welcome.html) et le [Guide de l’utilisateur AWS Site-to-Site VPN](https://docs.aws.amazon.com/vpn/latest/s2svpn/VPC_VPN.html).

*Pour des informations générales sur les points de terminaison d'interface, consultez [Interface Amazon VPC endpoints AWS PrivateLink(](https://docs.aws.amazon.com/vpc/latest/privatelink/vpce-interface.html)) dans le Guide.AWS PrivateLink * AWS PrivateLink est également pris en charge pour les points de terminaison Amazon DynamoDB Streams. Pour de plus amples informations, veuillez consulter [AWS PrivateLink pour DynamoDB Streams](privatelink-streams.md).

**Topics**
+ [Types de points de terminaison d’un VPC Amazon pour Amazon DynamoDB](#types-of-vpc-endpoints-for-ddb)
+ [Considérations relatives à l'utilisation AWS PrivateLink d'Amazon DynamoDB](#privatelink-considerations)
+ [Création d’un point de terminaison Amazon VPC](#ddb-creating-vpc)
+ [Accès aux points de terminaison de l’interface Amazon DynamoDB](#accessing-ddb-interface-endpoints)
+ [Accès aux tables DynamoDB et opérations d’API de contrôle depuis les points de terminaison de l’interface DynamoDB](#accessing-tables-apis-from-interface-endpoints)
+ [Mise à jour d’une configuration DNS sur site](#updating-on-premises-dns-config)
+ [Création d’une politique de point de terminaison d’un VPC Amazon pour DynamoDB](#creating-vpc-endpoint-policy)
+ [Utilisation de points de terminaison DynamoDB avec accès privé AWS Management Console](#ddb-endpoints-private-access)
+ [AWS PrivateLink pour DynamoDB Streams](privatelink-streams.md)
+ [Utilisation AWS PrivateLink pour DynamoDB Accelerator (DAX)](dax-private-link.md)

## Types de points de terminaison d’un VPC Amazon pour Amazon DynamoDB
<a name="types-of-vpc-endpoints-for-ddb"></a>

*Vous pouvez utiliser deux types de points de terminaison Amazon VPC pour accéder à Amazon DynamoDB : les points de terminaison de *passerelle et les points de terminaison* d'interface (en utilisant).* AWS PrivateLink Un point de *terminaison* de passerelle est une passerelle que vous spécifiez dans votre table de routage pour accéder à DynamoDB depuis votre Amazon VPC via le réseau. AWS Les *points de terminaison d'interface* étendent les fonctionnalités des points de terminaison de passerelle en utilisant des adresses IP privées pour acheminer les demandes vers DynamoDB depuis votre Amazon VPC, sur site, ou depuis un Amazon VPC dans un autre en utilisant Amazon VPC peering ou. Région AWS AWS Transit Gateway Pour plus d’informations, consultez [What is Amazon VPC peering?](https://docs.aws.amazon.com/vpc/latest/peering/what-is-vpc-peering.html) et [Transit Gateway vs Amazon VPC peering](https://docs.aws.amazon.com/whitepapers/latest/building-scalable-secure-multi-vpc-network-infrastructure/transit-gateway-vs-vpc-peering.html).

Les points de terminaison d’interface sont compatibles avec les points de terminaison de passerelle. Si vous avez un point de terminaison de passerelle existant dans le VPC Amazon, vous pouvez utiliser les deux types de points de terminaison dans le même VPC Amazon.


|  Points de terminaison de passerelle pour DynamoDB  |  Points de terminaison d’interface pour DynamoDB  | 
| --- | --- | 
|  Dans les deux cas, votre trafic réseau reste sur le AWS réseau.  | 
|  Utiliser des adresses IP publiques Amazon DynamoDB  |  Utiliser des adresses IP privées depuis votre VPC Amazon pour accéder à Amazon DynamoDB  | 
|  N’autorise pas l’accès sur site  |  Autoriser l’accès depuis vos sites  | 
|  Ne pas autoriser l'accès depuis un autre Région AWS  |  Autorisez l'accès depuis un point de terminaison Amazon VPC à un autre en Région AWS utilisant Amazon VPC peering ou AWS Transit Gateway  | 
|  Non facturé  |  Facturé  | 

Pour plus d’informations sur les points de terminaison de passerelle, consultez [Gateway Amazon VPC endpoints](https://docs.aws.amazon.com//vpc/latest/privatelink/vpce-gateway.html) dans le *Guide AWS PrivateLink *.

## Considérations relatives à l'utilisation AWS PrivateLink d'Amazon DynamoDB
<a name="privatelink-considerations"></a>

Les considérations relatives à Amazon VPC s'appliquent à Amazon AWS PrivateLink DynamoDB. Pour plus d’informations, consultez [Considérations sur les points de terminaison d’interface](https://docs.aws.amazon.com/vpc/latest/privatelink/vpce-interface.html#vpce-interface-limitations) et [Quotas AWS PrivateLink](https://docs.aws.amazon.com/vpc/latest/privatelink/vpc-limits-endpoints.html) dans le *Guide AWS PrivateLink *. En outre, les restrictions suivantes s’appliquent.

AWS PrivateLink pour Amazon DynamoDB ne prend pas en charge les éléments suivants :
+ Protocole TLS (Transport Layer Security) 1.1
+ Services de système de nom de domaine (DNS) privé et hybride

**Important**  
Ne créez pas de zones hébergées privées pour remplacer les noms DNS des points de terminaison DynamoDB (`dynamodb.region.amazonaws.com`tels que `*.region.amazonaws.com` ou) afin d'acheminer le trafic vers les points de terminaison de votre interface. Les configurations DNS DynamoDB peuvent changer au fil du temps.   
 Les remplacements DNS personnalisés ne sont pas compatibles avec ces modifications et peuvent entraîner un routage inattendu des demandes via des adresses IP publiques au lieu des points de terminaison de votre interface.   
 Pour accéder à DynamoDB AWS PrivateLink via DynamoDB, configurez vos clients pour qu'ils utilisent directement l'URL du point de terminaison Amazon VPC (par exemple,). `https://vpce-1a2b3c4d-5e6f.dynamodb.region.vpce.amazonaws.com`

Vous pouvez envoyer jusqu'à 50 000 demandes par seconde pour chaque AWS PrivateLink point de terminaison que vous activez.

**Note**  
Les délais de connectivité réseau vers les AWS PrivateLink points de terminaison ne sont pas concernés par les réponses d'erreur DynamoDB et doivent être gérés de manière appropriée par les applications qui se connectent aux points de terminaison. PrivateLink 

## Création d’un point de terminaison Amazon VPC
<a name="ddb-creating-vpc"></a>

Pour créer un point de terminaison d’interface d’un VPC Amazon, consultez [Create an Amazon VPC endpoint](https://docs.aws.amazon.com/vpc/latest/privatelink/create-interface-endpoint.html#create-interface-endpoint-aws) dans le Guide AWS PrivateLink .

## Accès aux points de terminaison de l’interface Amazon DynamoDB
<a name="accessing-ddb-interface-endpoints"></a>

Lorsque vous créez un point de terminaison d’interface, DynamoDB génère deux types de noms DNS DynamoDB spécifiques au point de terminaison : des noms *régionaux* et des noms *zonaux*. 
+ Un nom DNS *régional* inclut un identifiant de point de terminaison Amazon VPC unique, un identifiant de service Région AWS, le et `vpce.amazonaws.com` dans son nom. Par exemple, pour l’ID de point de terminaison d’un VPC Amazon `vpce-1a2b3c4d`, le nom DNS généré peut être similaire à `vpce-1a2b3c4d-5e6f.dynamodb.us-east-1.vpce.amazonaws.com`.
+ Les noms DNS *zonaux* incluent la zone de disponibilité, par exemple, `vpce-1a2b3c4d-5e6f-us-east-1a.dynamodb.us-east-1.vpce.amazonaws.com`. Vous pouvez utiliser cette option si votre architecture isole les zones de disponibilité. Par exemple, vous pouvez l’utiliser pour contenir les pannes ou réduire les coûts de transfert de données Régionaux.

**Note**  
Pour obtenir une fiabilité optimale, nous vous recommandons de déployer votre service dans au moins trois zones de disponibilité.

## Accès aux tables DynamoDB et opérations d’API de contrôle depuis les points de terminaison de l’interface DynamoDB
<a name="accessing-tables-apis-from-interface-endpoints"></a>

Vous pouvez utiliser le AWS CLI ou AWS SDKs pour accéder aux tables DynamoDB et contrôler les opérations de l'API via les points de terminaison de l'interface DynamoDB.

### AWS CLI exemples
<a name="privatelink-ddb-aws-cli-examples"></a>

Pour accéder aux tables DynamoDB ou aux opérations de l'API de contrôle DynamoDB via les points de terminaison de l'interface DynamoDB dans les commandes, utilisez les paramètres et. AWS CLI `--region` `--endpoint-url`

**Exemple : création du point de terminaison d’un VPC**

```
aws ec2 create-vpc-endpoint \
--region us-east-1 \
--service-name com.amazonaws.us-east-1.dynamodb \
--vpc-id client-vpc-id \
--subnet-ids client-subnet-id \
--vpc-endpoint-type Interface \
--security-group-ids client-sg-id
```

**Exemple : modifier le point de terminaison d’un VPC**

```
aws ec2 modify-vpc-endpoint \
--region us-east-1 \
--vpc-endpoint-id client-vpc-endpoint-id \
--policy-document policy-document \ #example optional parameter
--add-security-group-ids security-group-ids \ #example optional parameter 
# any additional parameters needed, see Privatelink documentation for more details
```

**Exemple : lister les tables à l’aide d’une URL de point de terminaison**

Dans l’exemple suivant, remplacez la région `us-east-1` et le nom DNS de l’ID du point de terminaison d’un VPC `vpce-1a2b3c4d-5e6f.dynamodb.us-east-1.vpce.amazonaws.com` par vos propres informations.

```
aws dynamodb --region us-east-1 --endpoint https://vpce-1a2b3c4d-5e6f.dynamodb.us-east-1.vpce.amazonaws.com list-tables
```

### AWS Exemples de SDK
<a name="privatelink-ddb-aws-sdk-examples"></a>

Pour accéder aux tables DynamoDB ou aux opérations de l'API de contrôle DynamoDB via les points de terminaison de l'interface DynamoDB lorsque vous utilisez le, installez la dernière version. AWS SDKs SDKs Configurez ensuite vos clients pour qu’ils utilisent une URL de point de terminaison afin d’accéder à une table ou à une opération API de contrôle de DynamoDB via des points de terminaison d’interface DynamoDB.

------
#### [ SDK for Python (Boto3) ]

**Exemple : Utiliser une URL de point de terminaison pour accéder à une table DynamoDB**  
Dans l’exemple suivant, remplacez la région `us-east-1` et l’ID du point de terminaison d’un VPC `https://vpce-1a2b3c4d-5e6f.dynamodb.us-east-1.vpce.amazonaws.com` par vos propres informations.

```
ddb_client = session.client(
service_name='dynamodb',
region_name='us-east-1',
endpoint_url='https://vpce-1a2b3c4d-5e6f.dynamodb.us-east-1.vpce.amazonaws.com'
)
```

------
#### [ SDK for Java 1.x ]

**Exemple : Utiliser une URL de point de terminaison pour accéder à une table DynamoDB**  
Dans l’exemple suivant, remplacez la région `us-east-1` et l’ID du point de terminaison d’un VPC `https://vpce-1a2b3c4d-5e6f.dynamodb.us-east-1.vpce.amazonaws.com` par vos propres informations.

```
//client build with endpoint config  
final AmazonDynamoDB dynamodb = AmazonDynamoDBClientBuilder.standard().withEndpointConfiguration(
        new AwsClientBuilder.EndpointConfiguration(
                "https://vpce-1a2b3c4d-5e6f.dynamodb.us-east-1.vpce.amazonaws.com",
                Regions.DEFAULT_REGION.getName()
        )
).build();
```

------
#### [ SDK for Java 2.x ]

**Exemple : Utiliser une URL de point de terminaison pour accéder à une table DynamoDB**  
Dans l'exemple suivant, remplacez le Region us-east-1 et l'ID de point de terminaison https://vpce-1a2b3c4d-5e6f.dynamodb.us-east-1.vpce.amazonaws.com VPC par vos propres informations.

```
Region region = Region.US_EAST_1;
dynamoDbClient = DynamoDbClient.builder().region(region)
.endpointOverride(URI.create("https://vpce-1a2b3c4d-5e6f.dynamodb.us-east-1.vpce.amazonaws.com"))
.build()
```

------

## Mise à jour d’une configuration DNS sur site
<a name="updating-on-premises-dns-config"></a>

 Lorsque vous utilisez des noms DNS spécifiques aux points de terminaison pour accéder aux points de terminaison d’interface pour DynamoDB, vous n’avez pas besoin de mettre à jour votre résolveur DNS sur site. Vous pouvez résoudre le nom DNS spécifique au point de terminaison avec l’adresse IP privée du point de terminaison d’interface depuis le domaine DNS public DynamoDB. 

### Utilisation de points de terminaison d’interface pour accéder à DynamoDB sans point de terminaison de passerelle ou passerelle Internet dans le VPC Amazon
<a name="using-interface-endpoints"></a>

Les points de terminaison d’interface de votre VPC Amazon peuvent acheminer les applications de VPC Amazon et les applications sur site vers DynamoDB via le réseau Amazon, comme illustré dans le diagramme suivant.

![\[Le diagramme de flux de données montre l’accès à DynamoDB à partir d’applications sur site et dans le VPC en utilisant un point de terminaison d’interface et AWS PrivateLink.\]](http://docs.aws.amazon.com/fr_fr/amazondynamodb/latest/developerguide/images/PrivateLink-interfaceEndpoints.png)


Le diagramme illustre les éléments suivants : 
+ Votre réseau sur site utilise Direct Connect ou Site-to-Site VPN pour se connecter à Amazon VPC A.
+ Vos applications sur site et dans le VPC Amazon A utilisent des noms DNS spécifiques aux points de terminaison pour accéder à DynamoDB via le point de terminaison d’interface DynamoDB.
+ Les applications sur site envoient des données au point de terminaison de l'interface dans l'Amazon VPC Direct Connect via (ou) Site-to-Site VPN. AWS PrivateLink déplace les données du point de terminaison de l'interface vers DynamoDB via le réseau. AWS 
+ Les applications VPC d'Amazon envoient également du trafic vers le point de terminaison de l'interface. AWS PrivateLink déplace les données du point de terminaison de l'interface vers DynamoDB via le réseau. AWS 

### Utilisation conjointe de points de terminaison de passerelle et de points de terminaison d’interface dans le même VPC Amazon pour accéder à DynamoDB
<a name="using-gateway-and-interface-endpoints"></a>

Vous pouvez créer des points de terminaison d’interface et conserver le point de terminaison de passerelle existant dans le même VPC Amazon, comme le montre le diagramme suivant. En adoptant cette approche, vous autorisez les applications internes au VPC Amazon à continuer d’accéder à DynamoDB via le point de terminaison de la passerelle, ce qui n’est pas facturé. Ensuite, seules vos applications sur site utilisent des points de terminaison d’interface pour accéder à DynamoDB. Pour accéder à DynamoDB de cette façon, vous devez mettre à jour vos applications sur site afin d’utiliser des noms DNS spécifiques du point de terminaison pour DynamoDB.

![\[Le diagramme de flux de données montre l’accès à DynamoDB grâce à l’utilisation conjointe de points de terminaison de passerelle et de points de terminaison d’interface.\]](http://docs.aws.amazon.com/fr_fr/amazondynamodb/latest/developerguide/images/PL-Image2-InterfaceAndGatewayEP.png)


Le diagramme illustre les éléments suivants : 
+ Les applications sur site utilisent des noms DNS spécifiques au point de terminaison pour envoyer des données au point de terminaison de l'interface au sein d'Amazon VPC via (ou). Direct Connect Site-to-Site VPN AWS PrivateLink déplace les données du point de terminaison de l'interface vers DynamoDB via le réseau. AWS 
+ À l'aide des noms DynamoDB régionaux par défaut, les applications VPC intégrées à Amazon envoient des données au point de terminaison de la passerelle qui se connecte à DynamoDB via le réseau. AWS 

Pour plus d’informations sur les points de terminaison de passerelle, consultez [Points de terminaison de VPC Amazon de passerelle](https://docs.aws.amazon.com/vpc/latest/privatelink/vpce-gateway.html) dans le *Guide d’utilisateur Amazon VPC*. 

## Création d’une politique de point de terminaison d’un VPC Amazon pour DynamoDB
<a name="creating-vpc-endpoint-policy"></a>

Vous pouvez attacher une politique de point de terminaison à votre point de terminaison d’un VPC Amazon qui contrôle l’accès à DynamoDB. La politique spécifie les informations suivantes : 
+ Le principal Gestion des identités et des accès AWS (IAM) qui peut effectuer des actions 
+ Les actions qui peuvent être effectuées. 
+ Les ressources sur lesquelles les actions peuvent être exécutées. 

**Topics**
+ [Exemple : restriction de l’accès à une table depuis le point de terminaison d’un VPC Amazon](#privatelink-example-restrict-access-to-bucket)

### Exemple : restriction de l’accès à une table depuis le point de terminaison d’un VPC Amazon
<a name="privatelink-example-restrict-access-to-bucket"></a>

Vous pouvez créer une politique de point de terminaison qui restreint l’accès uniquement à des tables DynamoDB spécifiques. Ce type de politique est utile si d'autres politiques Services AWS de votre Amazon VPC utilisent des tables. La politique de table suivante restreint l’accès à `DOC-EXAMPLE-TABLE` uniquement. Pour utiliser cette politique de point de terminaison, remplacez `DOC-EXAMPLE-TABLE` par le nom de votre table.

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

****  

```
{
"Version":"2012-10-17",		 	 	 
  "Id": "Policy1216114807515",
  "Statement": [
    { "Sid": "Access-to-specific-table-only",
      "Principal": "*",
      "Action": [
        "dynamodb:GetItem",
        "dynamodb:PutItem"
      ],
      "Effect": "Allow",
      "Resource": ["arn:aws:dynamodb:us-east-1:111122223333:table/DOC-EXAMPLE-TABLE",
                   "arn:aws:dynamodb:us-east-1:111122223333:table/DOC-EXAMPLE-TABLE/*"]
    }
  ]
}
```

------

## Utilisation de points de terminaison DynamoDB avec accès privé AWS Management Console
<a name="ddb-endpoints-private-access"></a>

Vous devez paramétrer la configuration DNS pour DynamoDB et DynamoDB Streams lorsque vous utilisez des points de terminaison d’un VPC avec la [console DynamoDB](https://console.aws.amazon.com/dynamodb) dans [AWS Management Console Private Access](https://docs.aws.amazon.com/awsconsolehelpdocs/latest/gsg/console-private-access.html).

Pour configurer DynamoDB afin qu'il soit accessible AWS Management Console dans Private Access, vous devez créer les deux points de terminaison VPC suivants :
+ `com.amazonaws.<region>.dynamodb`
+ `com.amazonaws.<region>.dynamodb-streams`

Lorsque vous créez les points de terminaison d’un VPC, accédez à la console Route53 et créez une zone hébergée privée pour DynamoDB à l’aide du point de terminaison régional `dynamodb.us-east-1.amazonaws.com`.

Créez les deux enregistrements d’alias suivants dans la zone hébergée privée :
+ `dynamodb.<region>.amazonaws.com` qui achemine le trafic vers le point de terminaison d’un VPC `com.amazonaws.<region>.dynamodb`.
+ `streams.dynamodb.<region>.amazonaws.com` qui achemine le trafic vers le point de terminaison d’un VPC `com.amazonaws.<region>.dynamodb-streams`.

# AWS PrivateLink pour DynamoDB Streams
<a name="privatelink-streams"></a>

Avec AWS PrivateLink Amazon DynamoDB Streams, vous pouvez provisionner des points de terminaison Amazon VPC (points de terminaison d'interface) dans votre cloud privé virtuel (Amazon VPC). Ces points de terminaison sont directement accessibles depuis des applications installées sur site via un VPN et/ou via un autre système de peering Région AWS via Amazon VPC. Direct ConnectÀ l'aide de points de terminaison AWS PrivateLink et d'interface, vous pouvez simplifier la connectivité au réseau privé entre vos applications et DynamoDB Streams.

Les applications de votre VPC Amazon n’ont pas besoin d’adresses IP publiques pour communiquer avec DynamoDB Streams à l’aide des points de terminaison de l’interface Amazon VPC pour les opérations DynamoDB Streams. Les points de terminaison d'interface sont représentés par une ou plusieurs interfaces réseau élastiques (ENIs) auxquelles des adresses IP privées sont attribuées à partir de sous-réseaux de votre Amazon VPC. Les demandes adressées à DynamoDB Streams via les points de terminaison d’interface restent sur le réseau Amazon. Vous pouvez également accéder aux points de terminaison d'interface de votre Amazon VPC à partir d'applications sur site Direct Connect via AWS Virtual Private Network ou AWS (VPN). Pour plus d'informations sur la façon de vous connecter AWS Virtual Private Network à votre réseau local, consultez le guide de l'[https://docs.aws.amazon.com/directconnect/latest/UserGuide/Welcome.html](https://docs.aws.amazon.com/directconnect/latest/UserGuide/Welcome.html) de l'[https://docs.aws.amazon.com/vpn/latest/s2svpn/VPC_VPN.html](https://docs.aws.amazon.com/vpn/latest/s2svpn/VPC_VPN.html). 

Pour des informations générales sur les points de terminaison d’interface, consultez [Interface de points de terminaison d’un réseau Amazon VPC](https://docs.aws.amazon.com/vpc/latest/privatelink/create-interface-endpoint.html) (AWS PrivateLink).

**Note**  
Seuls les points de terminaison d’interface sont pris en charge pour DynamoDB Streams. Les points de terminaison de passerelle ne sont pas pris en charge.

**Topics**
+ [Considérations relatives à l'utilisation AWS PrivateLink pour Amazon DynamoDB Streams](#privatelink-streams-considerations)
+ [Création d’un point de terminaison Amazon VPC](#privatelink-streams-vpc-endpoint)
+ [Accès aux points de terminaison de l’interface Amazon DynamoDB Streams](#privatelink-streams-accessing-ddb-interface-endpoints)
+ [Accès aux opérations d’API DynamoDB Streams depuis les points de terminaison de l’interface DynamoDB Streams](#privatelink-streams-accessing-api-operations-from-interface-endpoints)
+ [AWS Exemples de SDK](#privatelink-streams-aws-sdk-examples)
+ [Création d’une politique de point de terminaison d’un VPC Amazon pour DynamoDB Streams](#privatelink-streams-creating-vpc-endpoint-policy)
+ [Utilisation de points de terminaison DynamoDB avec accès privé AWS Management Console](#ddb-streams-endpoints-private-access)

## Considérations relatives à l'utilisation AWS PrivateLink pour Amazon DynamoDB Streams
<a name="privatelink-streams-considerations"></a>

Les considérations relatives à Amazon VPC s'appliquent à AWS PrivateLink Amazon DynamoDB Streams. Pour plus d’informations, consultez [interface endpoint considerations](https://docs.aws.amazon.com/vpc/latest/privatelink/create-interface-endpoint.html) et [Quotas AWS PrivateLink](https://docs.aws.amazon.com/vpc/latest/privatelink/vpc-limits-endpoints.html). Les restrictions suivantes s’appliquent.

AWS PrivateLink pour Amazon DynamoDB Streams ne prend pas en charge les éléments suivants : 
+ Protocole TLS (Transport Layer Security) 1.1
+ Services de système de nom de domaine (DNS) privé et hybride

**Important**  
Ne créez pas de zones hébergées privées pour remplacer les noms DNS des points de terminaison DynamoDB Streams afin d'acheminer le trafic vers les points de terminaison de votre interface. Les configurations DNS DynamoDB peuvent changer au fil du temps et les remplacements DNS personnalisés peuvent entraîner un routage inattendu des demandes via des adresses IP publiques plutôt que via les points de terminaison de votre interface.   
 Pour accéder à DynamoDB Streams via DynamoDB Streams AWS PrivateLink, configurez vos clients pour qu'ils utilisent directement l'URL du point de terminaison Amazon VPC (par exemple,). `https://vpce-1a2b3c4d-5e6f.streams.dynamodb.region.vpce.amazonaws.com`

**Note**  
Les délais de connectivité réseau vers les AWS PrivateLink points de terminaison ne sont pas concernés par les réponses d'erreur de DynamoDB Streams et doivent être gérés de manière appropriée par les applications qui se connectent aux points de terminaison. AWS PrivateLink 

## Création d’un point de terminaison Amazon VPC
<a name="privatelink-streams-vpc-endpoint"></a>

Pour créer un point de terminaison d’interface d’un VPC Amazon, consultez [Create an Amazon VPC endpoint](https://docs.aws.amazon.com/vpc/latest/privatelink/create-interface-endpoint.html#create-interface-endpoint-aws) dans le Guide AWS PrivateLink .

## Accès aux points de terminaison de l’interface Amazon DynamoDB Streams
<a name="privatelink-streams-accessing-ddb-interface-endpoints"></a>

Lorsque vous créez un point de terminaison d’interface, DynamoDB génère deux types de noms DNS DynamoDB Streams spécifiques au point de terminaison : des noms *régionaux* et des noms *zonaux*. 
+ Un nom DNS *régional* inclut un identifiant de point de terminaison Amazon VPC unique, un identifiant de service Région AWS, le et `vpce.amazonaws.com` dans son nom. Par exemple, pour l’ID de point de terminaison d’un VPC Amazon `vpce-1a2b3c4d`, le nom DNS généré peut être similaire à `vpce-1a2b3c4d-5e6f.streams.dynamodb.us-east-1.vpce.amazonaws.com`.
+ Les noms DNS *zonaux* incluent la zone de disponibilité, par exemple, `vpce-1a2b3c4d-5e6f-us-east-1a.streams.dynamodb.us-east-1.vpce.amazonaws.com`. Vous pouvez utiliser cette option si votre architecture isole les zones de disponibilité. Par exemple, vous pouvez l’utiliser pour contenir les pannes ou réduire les coûts de transfert de données Régionaux.

## Accès aux opérations d’API DynamoDB Streams depuis les points de terminaison de l’interface DynamoDB Streams
<a name="privatelink-streams-accessing-api-operations-from-interface-endpoints"></a>

Vous pouvez utiliser le AWS CLI ou AWS SDKs pour accéder aux opérations de l'API DynamoDB Streams via les points de terminaison de l'interface DynamoDB Streams.

### AWS CLI exemples
<a name="privatelink-streams-aws-cli-examples"></a>

Pour accéder aux flux DynamoDB ou aux opérations d'API via les points de terminaison de l'interface DynamoDB Streams dans les commandes, utilisez les paramètres et. AWS CLI `--region` `--endpoint-url`

**Exemple : création du point de terminaison d’un VPC**

```
aws ec2 create-vpc-endpoint \
--region us-east-1 \
--service-name com.amazonaws.us-east-1.dynamodb-streams \
--vpc-id client-vpc-id \
--subnet-ids client-subnet-id \
--vpc-endpoint-type Interface \
--security-group-ids client-sg-id
```

**Exemple : modifier le point de terminaison d’un VPC**

```
aws ec2 modify-vpc-endpoint \
--region us-east-1 \
--vpc-endpoint-id client-vpc-endpoint-id \
--policy-document policy-document \ #example optional parameter
--add-security-group-ids security-group-ids \ #example optional parameter 
# any additional parameters needed, see Privatelink documentation for more details
```

**Exemple : lister les flux à l’aide d’une URL de point de terminaison**

Dans l’exemple suivant, remplacez la région `us-east-1` et le nom DNS de l’ID du point de terminaison d’un VPC `vpce-1a2b3c4d-5e6f.streams.dynamodb.us-east-1.vpce.amazonaws.com` par vos propres informations.

```
aws dynamodbstreams --region us-east-1 —endpoint https://vpce-1a2b3c4d-5e6f.streams.dynamodb.us-east-1.vpce.amazonaws.com list-streams
```

## AWS Exemples de SDK
<a name="privatelink-streams-aws-sdk-examples"></a>

Pour accéder aux opérations de l'API Amazon DynamoDB Streams via les points de terminaison de l'interface DynamoDB Streams lorsque vous utilisez le, installez la dernière version. AWS SDKs SDKs Configurez ensuite vos clients pour qu’ils utilisent une URL de point de terminaison pour une opération d’API DynamoDB Streams via des points de terminaison d’interface DynamoDB Streams.

------
#### [ SDK for Python (Boto3) ]

**Exemple : utiliser une URL de point de terminaison pour accéder à un flux DynamoDB**  
Dans l’exemple suivant, remplacez la région `us-east-1` et l’ID du point de terminaison d’un VPC `https://vpce-1a2b3c4d-5e6f.streams.dynamodb.us-east-1.vpce.amazonaws.com` par vos propres informations.

```
ddb_streams_client = session.client(
service_name='dynamodbstreams',
region_name='us-east-1',
endpoint_url='https://vpce-1a2b3c4d-5e6f.streams.dynamodb.us-east-1.vpce.amazonaws.com'
)
```

------
#### [ SDK for Java 1.x ]

**Exemple : utiliser une URL de point de terminaison pour accéder à un flux DynamoDB**  
Dans l’exemple suivant, remplacez la région `us-east-1` et l’ID du point de terminaison d’un VPC `https://vpce-1a2b3c4d-5e6f.streams.dynamodb.us-east-1.vpce.amazonaws.com` par vos propres informations.

```
//client build with endpoint config  
final AmazonDynamoDBStreams dynamodbstreams = AmazonDynamoDBStreamsClientBuilder.standard().withEndpointConfiguration(
        new AwsClientBuilder.EndpointConfiguration(
                "https://vpce-1a2b3c4d-5e6f.streams.dynamodb.us-east-1.vpce.amazonaws.com",
                Regions.DEFAULT_REGION.getName()
        )
).build();
```

------
#### [ SDK for Java 2.x ]

**Exemple : utiliser une URL de point de terminaison pour accéder à un flux DynamoDB**  
Dans l’exemple suivant, remplacez la région `us-east-1` et l’ID du point de terminaison d’un VPC `https://vpce-1a2b3c4d-5e6f.streams.dynamodb.us-east-1.vpce.amazonaws.com` par vos propres informations.

```
Region region = Region.US_EAST_1;
dynamoDbStreamsClient = DynamoDbStreamsClient.builder().region(region)
.endpointOverride(URI.create("https://vpce-1a2b3c4d-5e6f.streams.dynamodb.us-east-1.vpce.amazonaws.com"))
.build()
```

------

## Création d’une politique de point de terminaison d’un VPC Amazon pour DynamoDB Streams
<a name="privatelink-streams-creating-vpc-endpoint-policy"></a>

Vous pouvez attacher une politique de point de terminaison à votre point de terminaison Amazon VPC qui contrôle l’accès à DynamoDB Streams. La politique spécifie les informations suivantes : 
+ Le principal Gestion des identités et des accès AWS (IAM) qui peut effectuer des actions 
+ Les actions qui peuvent être effectuées. 
+ Les ressources sur lesquelles les actions peuvent être exécutées. 

**Topics**
+ [Exemple : restriction de l’accès à un flux spécifique depuis le point de terminaison d’un VPC Amazon](#privatelink-streams-example-restrict-access-to-bucket)

### Exemple : restriction de l’accès à un flux spécifique depuis le point de terminaison d’un VPC Amazon
<a name="privatelink-streams-example-restrict-access-to-bucket"></a>

Vous pouvez créer une politique de point de terminaison qui restreint l’accès uniquement à des DynamoDB Streams spécifiques. Ce type de politique est utile si d'autres Services AWS politiques de votre Amazon VPC utilisent DynamoDB Streams. La politique de diffusion suivante restreint l’accès au flux `2025-02-20T11:22:33.444` attaché à `DOC-EXAMPLE-TABLE`. Pour utiliser cette politique de point de terminaison, remplacez `DOC-EXAMPLE-TABLE` par le nom de votre table et `2025-02-20T11:22:33.444` par l’étiquette de flux.

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

****  

```
{
"Version":"2012-10-17",		 	 	 
  "Id": "Policy1216114807515",
  "Statement": [
    { "Sid": "Access-to-specific-stream-only",
      "Principal": "*",
      "Action": [
        "dynamodb:DescribeStream",
        "dynamodb:GetRecords"
      ],
      "Effect": "Allow",
      "Resource": ["arn:aws:dynamodb:us-east-1:111122223333:table/table-name/stream/2025-02-20T11:22:33.444"]
    }
  ]
}
```

------

**Note**  
Les points de terminaison de passerelle ne sont pas pris en charge dans DynamoDB Streams.

## Utilisation de points de terminaison DynamoDB avec accès privé AWS Management Console
<a name="ddb-streams-endpoints-private-access"></a>

Vous devez paramétrer la configuration DNS pour DynamoDB et DynamoDB Streams lorsque vous utilisez des points de terminaison d’un VPC avec la [console DynamoDB](https://console.aws.amazon.com/dynamodb) dans [AWS Management Console Private Access](https://docs.aws.amazon.com/awsconsolehelpdocs/latest/gsg/console-private-access.html).

Pour configurer DynamoDB afin qu'il soit accessible AWS Management Console dans Private Access, vous devez créer les deux points de terminaison VPC suivants :
+ `com.amazonaws.<region>.dynamodb`
+ `com.amazonaws.<region>.dynamodb-streams`

Lorsque vous créez les points de terminaison d’un VPC, accédez à la console Route53 et créez une zone hébergée privée pour DynamoDB à l’aide du point de terminaison régional `dynamodb.us-east-1.amazonaws.com`.

Créez les deux enregistrements d’alias suivants dans la zone hébergée privée :
+ `dynamodb.<region>.amazonaws.com` qui achemine le trafic vers le point de terminaison d’un VPC `com.amazonaws.<region>.dynamodb`.
+ `streams.dynamodb.<region>.amazonaws.com` qui achemine le trafic vers le point de terminaison d’un VPC `com.amazonaws.<region>.dynamodb-streams`.

# Utilisation AWS PrivateLink pour DynamoDB Accelerator (DAX)
<a name="dax-private-link"></a>

AWS PrivateLink pour DynamoDB Accelerator (DAX) vous permet d'accéder en toute sécurité à la APIs gestion DAX, par exemple `CreateCluster``DescribeClusters`, `DeleteCluster` et via des adresses IP privées au sein de votre cloud privé virtuel (VPC). Cette fonctionnalité vous permet d'accéder aux services DAX de manière privée à partir de vos applications sans exposer le trafic à l'Internet public.

Le DAX PrivateLink prend en charge les points de terminaison à double pile (`dax.{region}.api.aws`), ce qui permet à la fois la connectivité IPv4 . IPv6 Avec AWS PrivateLink for DAX, les clients peuvent accéder au service en utilisant des noms DNS privés. La prise en charge des terminaux à double pile garantit une connectivité transparente tout en préservant la confidentialité du réseau. Cela vous permet d'accéder à DAX via Internet public et des points de terminaison VPC sans apporter de modifications à la configuration de votre SDK.

## Considérations relatives à l'utilisation AWS PrivateLink de DynamoDB Accelerator (DAX)
<a name="dax-privatelink-considerations"></a>

Lors de l'implémentation AWS PrivateLink pour DynamoDB Accelerator (DAX), plusieurs considérations importantes doivent être prises en compte.

Avant de configurer un point de terminaison d'interface pour DAX, tenez compte des points suivants :
+ Les points de terminaison de l'interface DAX ne prennent en charge que l'accès à la gestion DAX APIs au sein de celle-ci. Région AWS Vous ne pouvez pas utiliser un point de terminaison d'interface pour accéder à la gestion DAX APIs dans d'autres régions.
+ Pour accéder au mode AWS Management Console privé à des fins de gestion DAX, vous devrez peut-être créer des points de terminaison VPC supplémentaires pour des services `com.amazonaws.region.console` tels que les services connexes.
+ La création et l'utilisation d'un point de terminaison d'interface pour DAX vous sont facturées. Pour en savoir plus sur la tarification, consultez [Tarification AWS PrivateLink](https://aws.amazon.com/vpc/pricing/).

## Comment AWS PrivateLink fonctionne avec DAX
<a name="dax-privatelink-how-it-works"></a>

Lorsque vous créez un point de terminaison d'interface pour DAX :

1. AWS crée une interface réseau de point de terminaison dans chaque sous-réseau que vous activez pour le point de terminaison de l'interface.

1. Il s'agit d'interfaces réseau gérées par les demandeurs qui servent de points d'entrée pour le trafic destiné au DAX.

1. Vous pouvez ensuite accéder au DAX via des adresses IP privées au sein de votre VPC.

1. Cette architecture vous permet d'utiliser des groupes de sécurité VPC pour gérer l'accès aux points de terminaison.

1. Les applications peuvent accéder à DynamoDB et DAX via leurs points de terminaison d'interface respectifs au sein d'un VPC, tout en permettant aux applications locales de se connecter via Direct Connect ou VPN.

1. Cela fournit un modèle de connectivité cohérent pour les deux services, simplifie l'architecture et améliore la sécurité en maintenant le trafic au sein du AWS réseau.

## Création de points de terminaison d'interface pour DAX
<a name="dax-privatelink-creating-endpoints"></a>

Vous pouvez créer un point de terminaison d'interface pour vous connecter à DAX à l'aide du AWS Management Console AWS SDK ou de l' AWS API. CloudFormation

**Pour créer un point de terminaison d'interface pour DAX à l'aide de la console**

1. Accédez à la console Amazon VPC à l'adresse. [https://console.aws.amazon.com/vpc/](https://console.aws.amazon.com/vpc/)

1. Dans le panneau de navigation, choisissez **Points de terminaison**.

1. Choisissez **Create Endpoint** (Créer un point de terminaison).

1. Pour **la catégorie de service**, choisissez **Services AWS**et pour **le nom du service**, recherchez et sélectionnez`com.amazonaws.region.dax`.

1. Pour le **VPC**, sélectionnez le VPC à partir duquel vous souhaitez accéder au DAX et pour les **sous-réseaux, sélectionnez les sous-réseaux** dans lesquels AWS seront créées les interfaces réseau des points de terminaison.

1. Pour les **groupes de sécurité**, sélectionnez ou créez des groupes de sécurité à associer aux interfaces réseau des terminaux.

1. Pour **Policy**, conservez l'**accès complet** par défaut ou personnalisez-le selon vos besoins.

1. Sélectionnez **Activer le nom DNS** pour activer le DNS privé pour le point de terminaison. Maintenez le nom DNS privé activé pour empêcher toute modification de la configuration du SDK. Lorsque cette option est activée, vos applications peuvent continuer à utiliser le nom DNS du service standard (exemple :`dax.region.amazonaws.com`). AWS crée une zone hébergée privée dans votre VPC qui convertit ce nom en adresse IP privée de votre point de terminaison.
**Note**  
Utilisez des noms DNS régionaux si nécessaire. L'utilisation de noms DNS zonaux n'est pas recommandée. Sélectionnez également des sous-réseaux parmi 3 ou plus AZs pour garantir une disponibilité maximale. PrivateLink

1. Choisissez **Créer un point de terminaison**.

**Pour créer un point de terminaison d'interface pour DAX à l'aide du AWS CLI**  
Utilisez la `create-vpc-endpoint` commande avec le `vpc-endpoint-type` paramètre défini sur `Interface` et le `service-name` paramètre défini sur`com.amazonaws.region.dax`.

```
aws ec2 create-vpc-endpoint \
    --vpc-id vpc-ec43eb89 \
    --vpc-endpoint-type Interface \
    --service-name com.amazonaws.us-east-1.dax \
    --subnet-ids subnet-abcd1234 subnet-1a2b3c4d \
    --security-group-ids sg-1a2b3c4d \
    --private-dns-enabled
```

## Ressources supplémentaires
<a name="dax-privatelink-resources"></a>

Pour plus d'informations sur AWS PrivateLink les points de terminaison VPC, consultez les ressources suivantes :
+ [AWS PrivateLink pour DynamoDB](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/privatelink-interface-endpoints.html)
+ [AWS PrivateLink pour DynamoDB Streams](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/privatelink-streams.html)
+ [Connectez votre VPC aux services à l'aide de AWS PrivateLink](https://docs.aws.amazon.com/vpc/latest/userguide/endpoint-services-overview.html)
+ [Simplifiez la connectivité privée à DynamoDB avec AWS PrivateLink](https://aws.amazon.com/blogs//database/simplify-private-connectivity-to-amazon-dynamodb-with-aws-privatelink)
+ [AWS PrivateLink Livre blanc](https://docs.aws.amazon.com/whitepapers/latest/aws-vpc-connectivity-options/aws-privatelink.html)

# Configuration et analyse des vulnérabilités dans Amazon DynamoDB
<a name="configuration-vulnerability"></a>

AWS gère les tâches de sécurité de base telles que l'application de correctifs au système d'exploitation client (OS) et aux bases de données, la configuration du pare-feu et la reprise après sinistre. Ces procédures ont été vérifiées et certifiées par les tiers appropriés. Pour plus de détails, consultez les ressources suivantes :
+ [Validation de conformité pour Amazon DynamoDB](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Compliance.html)
+ [Modèle de responsabilité partagée](https://aws.amazon.com/compliance/shared-responsibility-model/)
+ [Amazon Web Services : présentation des procédures de sécurité](https://d0.awsstatic.com/whitepapers/Security/AWS_Security_Whitepaper.pdf) (livre blanc)

Les bonnes pratiques de sécurité suivantes s'appliquent également à la configuration et à l'analyse des vulnérabilités dans Amazon DynamoDB :
+ [Surveillez la conformité de DynamoDB avec AWS Config Rules](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/best-practices-security-detective.html#rules)
+ [Surveillez la configuration DynamoDB avec AWS Config](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/best-practices-security-detective.html#config)

# Bonnes pratiques de sécurité pour Amazon DynamoDB
<a name="best-practices-security"></a>

Amazon DynamoDB fournit différentes fonctions de sécurité à prendre en compte lorsque vous développez et implémentez vos propres politiques de sécurité. Les bonnes pratiques suivantes doivent être considérées comme des instructions générales et ne représentent pas une solution de sécurité complète. Étant donné que ces bonnes pratiques peuvent ne pas être appropriées ou suffisantes pour votre environnement, considérez-les comme des remarques utiles plutôt que comme des recommandations.

**Topics**
+ [Bonnes pratiques de sécurité préventive pour DynamoDB](best-practices-security-preventative.md)
+ [Bonnes pratiques de sécurité de détection pour DynamoDB](best-practices-security-detective.md)

# Bonnes pratiques de sécurité préventive pour DynamoDB
<a name="best-practices-security-preventative"></a>

Les bonnes pratiques suivantes peuvent vous aider à anticiper et à prévenir les incidents de sécurité dans Amazon DynamoDB.

**Chiffrement au repos**  
DynamoDB chiffre au repos toutes les données utilisateur stockées dans des tables, index, flux et sauvegardes à l’aide de clés de chiffrement stockées dans [AWS Key Management Service (AWS KMS)](https://aws.amazon.com/kms/). Cela fournit une couche supplémentaire de protection des données en sécurisant vos données contre tout accès non autorisé au stockage sous-jacent.  
Vous pouvez spécifier si DynamoDB doit utiliser Clé détenue par AWS une (type de chiffrement par défaut), une clé gérée par le client ou Clé gérée par AWS une clé gérée par le client pour chiffrer les données utilisateur. Pour en savoir plus, consultez [Chiffrement au repos Amazon DynamoDB](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/EncryptionAtRest.html).

**Utiliser Des rôles IAM pour authentifier l’accès à DynamoDB**  
Pour que les utilisateurs, les applications et les autres AWS services puissent accéder à DynamoDB, ils doivent inclure des informations d'identification AWS valides dans AWS leurs demandes d'API. Vous ne devez pas stocker les AWS informations d'identification directement dans l'application ou l'instance EC2. Il s’agit d’informations d’identification à long terme qui ne font pas l’objet d’une rotation automatique, et dont la compromission pourrait avoir un impact considérable sur l’activité. Un rôle IAM vous permet d'obtenir des clés d'accès temporaires qui peuvent être utilisées pour accéder aux AWS services et aux ressources.  
Pour de plus amples informations, veuillez consulter [Gestion des identités et des accès pour Amazon DynamoDB](security-iam.md).

**Utiliser les politiques IAM pour l’autorisation de base de DynamoDB**  
Lorsque vous accordez des autorisations, vous décidez qui les obtient, pour quel APIs DynamoDB ils obtiennent des autorisations et les actions spécifiques que vous souhaitez autoriser sur ces ressources. L’implémentation d’un privilège minimum est la clé de la réduction des risques de sécurité et de l’impact potentiel d’erreurs ou d’actes de malveillance.  
Attachez des politiques d’autorisation à des identités IAM (c’est-à-dire des utilisateurs, des groupes et des rôles) et accordez ainsi des autorisations pour exécuter des opérations sur des ressources DynamoDB.  
Pour ce faire, utilisez les ressources suivantes :  
+ [AWS Politiques gérées (prédéfinies)](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/using-identity-based-policies.html#access-policy-examples-aws-managed)
+ [Politiques gérées par le client](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/using-identity-based-policies.html#access-policy-examples-for-sdk-cli)

**Utiliser des conditions de politique IAM pour un contrôle d’accès précis**  
Lorsque vous accordez des autorisations dans DynamoDB, vous pouvez spécifier des conditions pour déterminer comment une politique d’autorisation doit prendre effet. L’implémentation d’un privilège minimum est la clé de la réduction des risques de sécurité et de l’impact potentiel d’erreurs ou d’actes de malveillance.  
Vous pouvez spécifier des conditions lors de l’octroi d’autorisations à l’aide d’une politique IAM. Par exemple, vous pouvez effectuer les opérations suivantes :  
+ Accordez des autorisations pour permettre aux utilisateurs d’accéder en lecture seule à certains éléments et attributs d’une table ou d’un index secondaire.
+ Accordez des autorisations pour permettre aux utilisateurs d’accéder en écriture seule à certains attributs d’une table, en fonction de l’identité de cet utilisateur.
 Pour plus d’informations, consultez [Utilisation de conditions de politique IAM pour un contrôle d’accès précis](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/specifying-conditions.html).

**Utiliser un point de terminaison et des politiques de VPC pour accéder à DynamoDB**  
Si vous n’avez besoin d’accéder à DynamoDB qu’à partir d’un cloud privé virtuel (VPC), vous devez utiliser un point de terminaison de VPC pour limiter l’accès uniquement à partir du VPC requis. Cela empêche ce trafic de passer par l’Internet ouvert et d’être sujet à cet environnement.  
L’utilisation d’un point de terminaison de VPC pour DynamoDB vous permet de contrôler et de limiter l’accès à l’aide des ressources suivantes :  
+ Politiques de point de terminaison de VPC – Ces politiques sont appliquées sur le point de terminaison de VPC DynamoDB. Elles vous permettent de contrôler et de limiter l’accès d’API à la table DynamoDB.
+ Politiques IAM – En utilisant la condition `aws:sourceVpce` sur des politiques attachées à des utilisateurs, groupes ou rôles, vous pouvez imposer que tout accès à la table DynamoDB se fasse via le point de terminaison de VPC spécifié.
 Pour plus d’informations, consultez [Points de terminaison pour Amazon DynamoDB](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-endpoints-ddb.html).

**Envisager un chiffrement côté client**  
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. Le chiffrement de vos données sensibles en transit et au repos contribue à garantir que vos données en texte brut ne sont pas accessibles à un tiers.   
 Le [kit SDK de chiffrement de bases de données AWS pour DynamoDB](https://docs.aws.amazon.com/dynamodb-encryption-client/latest/devguide/what-is-ddb-encrypt.html) est une bibliothèque logicielle qui vous aide à protéger vos données de table avant de les envoyer à DynamoDB. Il chiffre, signe, vérifie et déchiffre les éléments de votre table DynamoDB. Vous contrôlez les attributs qui sont chiffrés et signés.

**Considérations relatives aux clés primaires**  
N’utilisez pas de noms sensibles ni de données sensibles en texte brut dans votre [clé primaire](HowItWorks.Partitions.md) pour votre table et vos index secondaires globaux. Les noms des clés apparaîtront dans la définition de votre table. Par exemple, les noms des clés primaires sont accessibles à toute personne autorisée à appeler [DescribeTable](WorkingWithTables.Basics.md#WorkingWithTables.Basics.DescribeTable). Les valeurs clés peuvent apparaître dans votre journal [AWS CloudTrail](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-user-guide.html)et dans d'autres journaux. En outre, DynamoDB utilise les valeurs clés pour distribuer les données et acheminer les demandes AWS . Les administrateurs peuvent observer ces valeurs afin de préserver l'intégrité du service.  
Si vous devez utiliser des données sensibles dans votre table ou des valeurs de clé GSI, nous vous recommandons d'utiliser end-to-end le chiffrement client. Cela vous permet d’effectuer des références clé-valeur à vos données tout en vous assurant qu’elles n’apparaissent jamais non chiffrées dans vos journaux liés à DynamoDB. Pour ce faire, vous pouvez utiliser le [kit AWS SDK de chiffrement de base de données pour DynamoDB](https://docs.aws.amazon.com/database-encryption-sdk/latest/devguide/client-server-side.html), mais cela n’est pas obligatoire. Si vous utilisez votre propre solution, nous devons toujours utiliser un algorithme de chiffrement suffisamment sécurisé. Vous ne devez pas utiliser d’options non cryptographiques telles que le hachage, car elles ne sont pas considérées comme suffisamment sûres dans la plupart des cas.  
Si les noms de vos clés primaires sont sensibles, nous vous recommandons d’utiliser plutôt ``pk`` et ``sk``. Il s’agit d’une bonne pratique générale qui vous offre de la flexibilité dans la conception de votre clé de partition.   
Consultez toujours vos experts en sécurité ou votre équipe chargée de votre AWS compte si vous vous demandez quel serait le bon choix. 

# Bonnes pratiques de sécurité de détection pour DynamoDB
<a name="best-practices-security-detective"></a>

Les bonnes pratiques suivantes pour Amazon DynamoDB peuvent vous aider à détecter des vulnérabilités de sécurité potentielles et autres incidents.

** AWS CloudTrail À utiliser pour surveiller l'utilisation des clés KMS AWS gérées**  
Si vous utilisez un [Clé gérée par AWS](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#aws-managed-cmk)pour le chiffrement au repos, l'utilisation de cette clé est connectée AWS CloudTrail. CloudTrail fournit une visibilité sur l'activité des utilisateurs en enregistrant les actions effectuées sur votre compte. CloudTrail enregistre des informations importantes sur chaque action, notamment l'auteur de la demande, les services utilisés, les actions effectuées, les paramètres des actions et les éléments de réponse renvoyés par le AWS service. Ces informations vous aident à suivre les modifications apportées à vos AWS ressources et à résoudre les problèmes opérationnels. CloudTrail permet de garantir plus facilement le respect des politiques internes et des normes réglementaires.  
Vous pouvez l'utiliser CloudTrail pour auditer l'utilisation des clés. CloudTrail crée des fichiers journaux contenant l'historique des appels d' AWS API et des événements associés à votre compte. Ces fichiers journaux incluent toutes les demandes d' AWS KMS API effectuées à l' AWS Management Console aide des outils de ligne de commande, en plus de celles effectuées via les AWS services intégrés. AWS SDKs Vous pouvez utiliser ces fichiers journaux pour obtenir des informations sur l’utilisation de la clé KMS, sur l’opération qui a été demandée, sur l’identité du demandeur, sur l’adresse IP à partir de laquelle la demande provenait, etc. Pour plus d’informations, consultez [Journalisation des appels d’API AWS KMS avec AWS CloudTrail](https://docs.aws.amazon.com/kms/latest/developerguide/logging-using-cloudtrail.html) dans le [Guide de l’utilisateur AWS CloudTrail](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/).

**Surveillez les opérations DynamoDB à l'aide de CloudTrail**  
CloudTrail peut surveiller à la fois les événements du plan de contrôle et les événements du plan de données. Les opérations de plan de contrôle vous permettent de créer et gérer des tables DynamoDB. Elles vous permettent également d’utiliser les index, les flux et autres objets qui dépendent des tables. Les opérations de plan de données vous permettent d’exécuter des opérations de création, de lecture, de mise à jour et de suppression (également appelées actions *CRUD*) sur les données d’une table. Certaines opérations de plan de données vous permettent également de lire les données d’un index secondaire. Pour activer la journalisation des événements du plan de données dans CloudTrail, vous devez activer la journalisation de l'activité de l'API du plan de données dans CloudTrail. Pour plus d’informations, consultez [Consignation d’événements de données pour les journaux d’activité](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/logging-data-events-with-cloudtrail.html).  
Lorsqu'une activité se produit dans DynamoDB, cette activité est enregistrée dans CloudTrail un événement avec d' AWS autres événements de service dans l'historique des événements. Pour plus d’informations, consultez [Journalisation des opérations DynamoDB à l’aide d’ AWS CloudTrail](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/logging-using-cloudtrail.html). Vous pouvez consulter, rechercher et télécharger les événements récents dans votre AWS compte. Pour plus d'informations, consultez la section [Affichage des événements avec l'historique des CloudTrail événements](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/view-cloudtrail-events.html) dans le *guide de AWS CloudTrail l'utilisateur*.  
[Pour un enregistrement continu des événements de votre AWS compte, y compris des événements pour DynamoDB, créez une trace.](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-create-and-update-a-trail.html) Un suivi permet CloudTrail de transférer des fichiers journaux vers un compartiment Amazon Simple Storage Service (Amazon S3). Par défaut, lorsque vous créez un parcours sur la console, celui-ci s'applique à toutes les AWS régions. Le journal d’activité consigne les événements de toutes les régions dans la partition AWS et livre les fichiers journaux dans le compartiment S3 de votre choix. En outre, vous pouvez configurer d'autres AWS services pour analyser plus en détail les données d'événements collectées dans les CloudTrail journaux et agir en conséquence.

**Utiliser DynamoDB Streams pour surveiller des opérations de plan de données**  
DynamoDB est intégré afin que vous puissiez créer AWS Lambda des déclencheurs, des éléments de code qui répondent automatiquement aux événements dans DynamoDB Streams. Avec des déclencheurs, vous pouvez créer des applications qui réagissent à des modifications de données dans des tables DynamoDB.  
Si vous activez DynamoDB Streams sur une table, vous pouvez associer l’ARN (Amazon Resource Name) de flux avec une fonction Lambda que vous écrivez. Immédiatement après la modification d'un élément de la table, un nouvel enregistrement apparaît dans le flux de la table. AWS Lambda interroge le flux et appelle votre fonction Lambda de manière synchrone lorsqu'elle détecte de nouveaux enregistrements de flux. La fonction Lambda peut effectuer toute action que vous spécifiez, comme envoyer une notification ou initier un flux de travail.  
Pour voir un exemple, consultez [Didacticiel : Utilisation d’ AWS Lambda avec Amazon DynamoDB Streams](https://docs.aws.amazon.com/lambda/latest/dg/with-ddb-example.html). Cet exemple reçoit une entrée d'événement DynamoDB, traite les messages qu'elle contient et écrit certaines des données d'événement entrantes dans Amazon Logs. CloudWatch 

**Surveillez la configuration DynamoDB avec AWS Config**  
[AWS Config](https://docs.aws.amazon.com/config/latest/developerguide/WhatIsConfig.html) vous permet de surveiller et d’enregistrer en permanence les changements de configuration de vos ressources AWS . Vous pouvez également l'utiliser AWS Config pour inventorier vos AWS ressources. Lors de la détection d’un changement par rapport à un état précédent, une notification Amazon Simple Notification Service (Amazon SNS) peut vous être envoyée pour vous permettre de vérifier et de réagir. Suivez les instructions de la section [Configuration AWS Config avec la console](https://docs.aws.amazon.com/config/latest/developerguide/gs-console.html), en vous assurant que les types de ressources DynamoDB sont inclus.  
Vous pouvez configurer AWS Config pour diffuser les modifications de configuration et les notifications sur une rubrique Amazon SNS. Par exemple, lorsqu’une ressource est mise à jour, une notification peut être envoyée à votre adresse e-mail pour que vous puissiez consulter les modifications. Vous pouvez également être averti lors de l' AWS Config évaluation de vos règles personnalisées ou gérées par rapport à vos ressources.  
Par exemple, consultez la rubrique [Notifications AWS Config envoyées à un Amazon SNS dans le manuel](https://docs.aws.amazon.com/config/latest/developerguide/notifications-for-AWS-Config.html) du *AWS Config développeur*.

**Surveiller la conformité de DynamoDB aux règles AWS Config **  
AWS Config suit en permanence les modifications de configuration qui se produisent parmi vos ressources. Il vérifie si ces changements ne vont pas à l’encontre de vos règles. Si une ressource enfreint une règle, AWS Config marque la ressource et la règle comme non conformes.  
En utilisant AWS Config pour évaluer vos configurations de ressources, vous pouvez évaluer dans quelle mesure vos configurations de ressources sont conformes aux pratiques internes, aux directives du secteur et aux réglementations. AWS Config fournit des [règles AWS gérées](https://docs.aws.amazon.com/config/latest/developerguide/managed-rules-by-aws-config.html), qui sont des règles prédéfinies et personnalisables AWS Config utilisées pour évaluer si vos AWS ressources sont conformes aux meilleures pratiques courantes.

**Etiqueter vos ressources DynamoDB pour l’identification et l’automatisation**  
Vous pouvez attribuer des métadonnées à vos AWS ressources sous forme de balises. Chaque étiquette est un libellé composé d’une clé définie par le client et d’une valeur facultative qui peut faciliter la gestion, la recherche et le filtrage de ressources.   
L’étiquetage permet l’implémentation de contrôles groupés. Bien qu’il n’existe pas de types intrinsèques d’étiquettes, celles-ci vous permettent de catégoriser des ressources par objectif, par propriétaire, par environnement ou selon d’autres critères. Voici quelques exemples :  
+ Sécurité : utilisée pour déterminer des exigences telles que le chiffrement.
+ Confidentialité – Identifiant pour le niveau spécifique de confidentialité des données qu’une ressource prend en charge.
+ Environnement – Utilisé pour différencier les infrastructures de développement, de test et de production.
Pour plus d’informations, consultez [Politiques d’étiquetage AWS](https://aws.amazon.com/answers/account-management/aws-tagging-strategies/) et [Étiquetage pour DynamoDB](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Tagging.html).

**Surveillez votre utilisation d'Amazon DynamoDB en ce qui concerne les meilleures pratiques de sécurité en utilisant. AWS Security Hub CSPM**  
Security Hub CSPM utilise des contrôles de sécurité pour évaluer les configurations des ressources et les normes de sécurité afin de vous aider à vous conformer aux différents cadres de conformité.  
[https://docs.aws.amazon.com/securityhub/latest/userguide/dynamodb-controls.html](https://docs.aws.amazon.com/securityhub/latest/userguide/dynamodb-controls.html)