View a markdown version of this page

Sécurité des tables globales DynamoDB - Amazon DynamoDB

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é des tables globales DynamoDB

Les répliques de tables globales sont des tables DynamoDB. Vous utilisez donc les mêmes méthodes pour contrôler l'accès aux répliques que pour les tables à région unique, notamment Gestion des identités et des accès AWS politiques d'identité (IAM) et politiques basées sur les ressources. Cette rubrique explique comment sécuriser les tables globales multicomptes DynamoDB à l'aide des autorisations IAM et AWS Key Management Service (AWS KMS) cryptage. Vous découvrirez les politiques basées sur les ressources et les rôles liés aux services (SLR) qui permettent la réplication entre comptes entre régions et la mise à l'échelle automatique, ainsi que les autorisations IAM nécessaires pour créer, mettre à jour et supprimer des tables globales, pour une éventuelle cohérence multirégionale (MREC). Vous en apprendrez également plus sur AWS KMS clés de chiffrement pour gérer la réplication entre régions en toute sécurité.

Il fournit des informations détaillées sur les politiques basées sur les ressources et les autorisations requises pour établir la réplication de tables entre comptes et entre régions. Comprendre ce modèle de sécurité est essentiel pour les clients qui ont besoin de mettre en œuvre des solutions sécurisées de réplication de données entre comptes.

Autorisation du principal de service pour la réplication

Les tables globales multicomptes de DynamoDB utilisent une approche d'autorisation distincte car la réplication s'effectue au-delà des limites des comptes. Pour ce faire, utilisez le principal du service de réplication de DynamoDB : replication.dynamodb.amazonaws.com. Chaque compte participant doit explicitement autoriser ce principal dans la politique de ressources de la table de répliques, en lui donnant des autorisations qui peuvent être limitées à des répliques spécifiques par des conditions de contexte source sur des clés telles que aws:SourceAccount, aws:SourceArn, etc. — voir AWS clés de condition globales pour plus de détails. Les autorisations sont bidirectionnelles, ce qui signifie que toutes les répliques doivent s'accorder explicitement des autorisations les unes aux autres avant que la réplication puisse être établie sur une paire de répliques donnée.

Les autorisations principales de service suivantes sont essentielles pour la réplication entre comptes :

  • dynamodb:ReadDataForReplication permet de lire les données à des fins de réplication. Cette autorisation permet de lire les modifications apportées à un réplica et de les propager à d'autres répliques.

  • dynamodb:WriteDataForReplication permet l'écriture de données répliquées dans des tables de destination. Cette autorisation permet de synchroniser les modifications entre toutes les répliques de la table globale.

  • dynamodb:ReplicateSettings permet la synchronisation des paramètres des tables entre les répliques, fournissant ainsi une configuration cohérente pour toutes les tables participantes.

Chaque réplica doit accorder les autorisations ci-dessus à toutes les autres répliques et à lui-même, c'est-à-dire que les conditions du contexte source doivent inclure l'ensemble complet des répliques qui composent la table globale. Ces autorisations sont vérifiées pour chaque nouveau réplica lorsqu'il est ajouté à une table globale multi-comptes. Cela permet de vérifier que les opérations de réplication sont effectuées uniquement par le service DynamoDB autorisé et uniquement entre les tables prévues.

Service-linked rôles pour les tables globales multicomptes

Les tables globales multicomptes DynamoDB répliquent les paramètres de toutes les répliques afin que chaque réplica soit configurée de manière identique avec un débit constant et offrent une expérience de basculement fluide. La réplication des paramètres est contrôlée par le ReplicateSettings autorisation sur le principal du service, mais DynamoDB s'appuie également sur des rôles liés aux services (SLR) pour gérer certaines fonctionnalités de réplication interrégionale et de dimensionnement automatique entre comptes. Ces rôles ne sont configurés qu'une seule fois par AWS compte. Une fois créés, les mêmes rôles sont utilisés dans toutes les tables globales de votre compte. Pour plus d'informations sur les rôles liés aux services, consultez Utilisation de rôles liés à des services dans le guide de l'utilisateur IAM.

Rôle lié au service de gestion des paramètres

Amazon DynamoDB crée automatiquement le AWSServiceRoleForDynamoDBGlobalTableSettingsManagement rôle lié à un service (SLR) lorsque vous créez votre première réplique de table globale multi-comptes dans le compte. Ce rôle gère pour vous la réplication interrégionale des paramètres entre comptes.

Lorsque vous appliquez des politiques basées sur les ressources à des répliques, vérifiez que vous ne refusez aucune des autorisations définies dans AWSServiceRoleForDynamoDBGlobalTableSettingsManagement au principal du SLR, car cela pourrait interférer avec la gestion des paramètres et nuire à la réplication si le débit ne correspond pas entre les répliques ou les GSI. Si vous refusez les autorisations requises pour le reflex, la réplication depuis et vers les répliques concernées peut s'arrêter et l'état de la table de répliques passe à REPLICATION_NOT_AUTHORIZED. Pour les tables globales multicomptes, si une réplique reste dans le REPLICATION_NOT_AUTHORIZED état pendant plus de 20 heures, la réplique est convertie de manière irréversible en une table DynamoDB à région unique. Le reflex dispose des autorisations suivantes :

  • application-autoscaling:DeleteScalingPolicy

  • application-autoscaling:DescribeScalableTargets

  • application-autoscaling:DescribeScalingPolicies

  • application-autoscaling:DeregisterScalableTarget

  • application-autoscaling:PutScalingPolicy

  • application-autoscaling:RegisterScalableTarget

Rôle lié à un service pour l’autoscaling

Lors de la configuration d'une table globale pour le mode de capacité provisionnée, la mise à l'échelle automatique doit être configurée pour la table globale. La mise à l'échelle automatique de DynamoDB utilise AWS Service Application Auto Scaling pour ajuster dynamiquement la capacité de débit provisionnée sur vos répliques de tables globales. Le service Application Auto Scaling crée un rôle lié à un service (SLR) nommé AWSServiceRoleForApplicationAutoScalingTableau _DynamoDB. Ce rôle lié à un service est automatiquement créé dans votre AWS compte lorsque vous configurez pour la première fois la mise à l'échelle automatique pour une table DynamoDB. Il permet à Application Auto Scaling de gérer la capacité des tables provisionnées et de créer CloudWatch alarmes.

Lorsque vous appliquez des politiques basées sur les ressources à des répliques, vérifiez que vous ne refusez aucune autorisation définie dans AWSApplicationAutoscalingDynamoDBTablePolicy au principal de l'application Auto Scaling SLR, car cela interromprait la fonctionnalité de mise à l'échelle automatique.

Utilisation des tables globales AWS IAM

Les sections suivantes décrivent les autorisations requises pour différentes opérations sur les tables globales et fournissent des exemples de politiques pour vous aider à configurer l'accès approprié pour vos utilisateurs et applications.

Note

Toutes les autorisations décrites doivent être appliquées à l'ARN de ressource de table spécifique dans la ou les régions concernées. L'ARN de la ressource de table suit le format arn:aws:dynamodb:region:account-id:table/table-name, où vous devez spécifier les valeurs réelles de votre région, de votre identifiant de compte et de votre nom de table.

Les sections suivantes couvrent ces sujets étape par étape :

  • Création de tables globales multicomptes et ajout de répliques

  • Mettre à jour une table globale multicomptes

  • Dissocier une réplique pour conserver sa table régionale

  • Suppression de tables globales et suppression de répliques

Création de tables globales et ajout de répliques

Autorisations pour créer des tables globales

Lorsqu'un nouveau réplica est ajouté à une table régionale pour former une table globale multi-comptes ou à une table globale multi-comptes existante, le principal IAM effectuant l'action doit être autorisé par tous les membres existants. Tous les membres existants doivent accorder l'autorisation suivante dans leur politique de table pour que l'ajout de répliques réussisse :

  • dynamodb:AssociateTableReplica - Cette autorisation permet de joindre des tables dans une configuration de table globale. Il s'agit de l'autorisation fondamentale qui permet l'établissement initial de la relation de réplication.

Ce contrôle précis permet uniquement aux comptes autorisés de participer à la configuration globale de la table.

Exemples de politiques IAM pour la création de tables globales

La configuration des tables globales multicomptes suit un flux d'autorisation spécifique qui assure une réplication sécurisée. Examinons comment cela fonctionne dans la pratique en présentant un scénario pratique dans lequel un client souhaite établir une table globale avec deux répliques. Le premier réplica (RepliCaa) se trouve sur le compte A dans la région ap-east-1, tandis que le second réplica (RepliCab) se trouve sur le compte B dans la région eu-south-1.

  • Dans le compte source (compte A), le processus commence par la création de la table de répliques principale. L'administrateur du compte doit joindre à ce tableau une politique basée sur les ressources qui accorde explicitement les autorisations nécessaires au compte de destination (compte B) pour effectuer l'association. Cette politique autorise également le service de réplication DynamoDB à effectuer les actions de réplication essentielles.

  • Le compte de destination (compte B) suit un processus similaire en joignant une politique basée sur les ressources correspondante lors de la création du réplica et en référençant l'ARN de la table source à utiliser pour créer le réplica. Cette politique reflète les autorisations accordées par le compte A, créant ainsi une relation bidirectionnelle de confiance. Avant d'établir la réplication, DynamoDB valide ces autorisations entre comptes pour vérifier que les autorisations appropriées sont en place.

Pour établir cette configuration :

  • L'administrateur du compte A doit d'abord associer la politique basée sur les ressources à ReplicAA. Cette politique accorde explicitement les autorisations nécessaires au compte B et au service de réplication DynamoDB.

  • De même, l'administrateur du compte B doit associer une politique correspondante à RepliLab, les références de compte étant inversées pour accorder les autorisations correspondantes au compte A, lors de l'appel de création de table pour créer un réplica B en faisant référence au réplica A comme table source.

JSON
{ "Version":"2012-10-17", "Statement": [ { "Sid": "DynamoDBActionsNeededForSteadyStateReplication", "Effect": "Allow", "Action": [ "dynamodb:ReadDataForReplication", "dynamodb:WriteDataForReplication", "dynamodb:ReplicateSettings" ], "Resource": "arn:aws:dynamodb:ap-east-1:111122223333:table/ReplicaA", "Principal": {"Service": ["replication.dynamodb.amazonaws.com"]}, "Condition": { "StringEquals": { "aws:SourceAccount": [ "111122223333", "444455556666" ], "aws:SourceArn": [ "arn:aws:dynamodb:ap-east-1:111122223333:table/ReplicaA", "arn:aws:dynamodb:eu-south-1:444455556666:table/ReplicaB" ] } } }, { "Sid": "AllowTrustedAccountsToJoinThisGlobalTable", "Effect": "Allow", "Action": [ "dynamodb:AssociateTableReplica" ], "Resource": "arn:aws:dynamodb:ap-east-1:111122223333:table/ReplicaA", "Principal": {"AWS": ["444455556666"]} } ] }
JSON
{ "Version":"2012-10-17", "Statement": [ { "Sid": "DynamoDBActionsNeededForSteadyStateReplication", "Effect": "Allow", "Action": [ "dynamodb:ReadDataForReplication", "dynamodb:WriteDataForReplication", "dynamodb:ReplicateSettings" ], "Resource": "arn:aws:dynamodb:eu-south-1:444455556666:table/ReplicaB", "Principal": {"Service": ["replication.dynamodb.amazonaws.com"]}, "Condition": { "StringEquals": { "aws:SourceAccount": [ "111122223333", "444455556666" ], "aws:SourceArn": [ "arn:aws:dynamodb:ap-east-1:111122223333:table/ReplicaA", "arn:aws:dynamodb:eu-south-1:444455556666:table/ReplicaB" ] } } } ] }

Dans cette configuration, il existe 3 répliques ReplicAA, ReplicAB et ReplicaC dans le compte A, le compte B et le compte C, respectivement. Le réplica A est le premier réplica, qui commence par une table régionale, puis Replicab et ReplicaC y sont ajoutés.

  • L'administrateur du compte A doit d'abord associer la politique basée sur les ressources à ReplicAA afin de permettre la réplication avec tous les membres et de permettre aux responsables IAM des comptes B et C d'ajouter des répliques.

JSON
{ "Version":"2012-10-17", "Statement": [ { "Sid": "DynamoDBActionsNeededForSteadyStateReplication", "Effect": "Allow", "Action": [ "dynamodb:ReadDataForReplication", "dynamodb:WriteDataForReplication", "dynamodb:ReplicateSettings" ], "Resource": "arn:aws:dynamodb:ap-east-1:111122223333:table/ReplicaA", "Principal": {"Service": ["replication.dynamodb.amazonaws.com"]}, "Condition": { "StringEquals": { "aws:SourceAccount": [ "111122223333", "444455556666", "123456789012" ], "aws:SourceArn": [ "arn:aws:dynamodb:ap-east-1:111122223333:table/ReplicaA", "arn:aws:dynamodb:eu-south-1:444455556666:table/ReplicaB", "arn:aws:dynamodb:us-east-1:123456789012:table/ReplicaC" ] } } }, { "Sid": "AllowTrustedAccountsToJoinThisGlobalTable", "Effect": "Allow", "Action": [ "dynamodb:AssociateTableReplica" ], "Resource": "arn:aws:dynamodb:ap-east-1:111122223333:table/ReplicaA", "Principal": { "AWS": [ "444455556666", "123456789012" ] } } ] }
  • L'administrateur du compte B doit ajouter un réplica (réplica B) pointant vers ReplicAA comme source. Le réplica B applique la politique suivante, qui autorise la réplication entre tous les membres et autorise le compte C à ajouter un réplica :

JSON
{ "Version":"2012-10-17", "Statement": [ { "Sid": "DynamoDBActionsNeededForSteadyStateReplication", "Effect": "Allow", "Action": [ "dynamodb:ReadDataForReplication", "dynamodb:WriteDataForReplication", "dynamodb:ReplicateSettings" ], "Resource": "arn:aws:dynamodb:eu-south-1:444455556666:table/ReplicaB", "Principal": {"Service": ["replication.dynamodb.amazonaws.com"]}, "Condition": { "StringEquals": { "aws:SourceAccount": [ "111122223333", "444455556666", "123456789012" ], "aws:SourceArn": [ "arn:aws:dynamodb:ap-east-1:111122223333:table/ReplicaA", "arn:aws:dynamodb:eu-south-1:444455556666:table/ReplicaB", "arn:aws:dynamodb:us-east-1:123456789012:table/ReplicaC" ] } } }, { "Sid": "AllowTrustedAccountsToJoinThisGlobalTable", "Effect": "Allow", "Action": [ "dynamodb:AssociateTableReplica" ], "Resource": "arn:aws:dynamodb:eu-south-1:444455556666:table/ReplicaB", "Principal": { "AWS": [ "123456789012" ] } } ] }
  • Enfin, l'administrateur du compte C crée une réplique avec la politique suivante qui autorise les autorisations de réplication entre tous les membres. La politique n'autorise pas l'ajout de répliques supplémentaires.

JSON
{ "Version":"2012-10-17", "Statement": [ { "Sid": "DynamoDBActionsNeededForSteadyStateReplication", "Effect": "Allow", "Action": [ "dynamodb:ReadDataForReplication", "dynamodb:WriteDataForReplication", "dynamodb:ReplicateSettings" ], "Resource": "arn:aws:dynamodb:us-east-1:123456789012:table/ReplicaC", "Principal": {"Service": ["replication.dynamodb.amazonaws.com"]}, "Condition": { "StringEquals": { "aws:SourceAccount": [ "111122223333", "444455556666" ], "aws:SourceArn": [ "arn:aws:dynamodb:ap-east-1:111122223333:table/ReplicaA", "arn:aws:dynamodb:eu-south-1:444455556666:table/ReplicaB" ] } } } ] }

Mettre à jour une table globale multicomptes

Pour modifier les paramètres de réplication d'une table globale existante à l'aide du UpdateTable API, vous avez besoin de l'autorisation suivante sur la ressource de table dans la région où vous effectuez l'appel d'API : dynamodb:UpdateTable

Vous pouvez également mettre à jour d'autres configurations de tables globales, telles que les politiques de dimensionnement automatique et les paramètres Time to Live. Les autorisations suivantes sont requises pour ces opérations de mise à jour supplémentaires :

Pour mettre à jour les paramètres Time to Live à l'aide du UpdateTimeToLive API, vous devez disposer de l'autorisation suivante sur la ressource de table dans toutes les régions contenant des répliques : dynamodb:UpdateTimeToLive

Pour mettre à jour la politique de dimensionnement automatique d'une réplique avec UpdateTableReplicaAutoScaling API, vous devez disposer des autorisations suivantes sur la ressource de table dans toutes les régions contenant des répliques :

  • application-autoscaling:DeleteScalingPolicy

  • application-autoscaling:DeleteScheduledAction

  • application-autoscaling:DeregisterScalableTarget

  • application-autoscaling:DescribeScalableTargets

  • application-autoscaling:DescribeScalingActivities

  • application-autoscaling:DescribeScalingPolicies

  • application-autoscaling:DescribeScheduledActions

  • application-autoscaling:PutScalingPolicy

  • application-autoscaling:PutScheduledAction

  • application-autoscaling:RegisterScalableTarget

Note

Vous devez fournir dynamodb:ReplicateSettings autorisations sur toutes les régions de réplica et tous les comptes pour que la table de mise à jour réussisse. Si un réplica ne fournit pas les autorisations nécessaires pour répliquer les paramètres sur un réplica de la table globale multi-comptes, toutes les opérations de mise à jour sur tous les répliques échoueront avec AccessDeniedException jusqu'à ce que les autorisations soient corrigées.

Dissocier une réplique

Pour dissocier votre réplique, vous devez disposer des deux dynamodb:UpdateTable et dynamodb:DisassociateTableReplica Autorisations IAM sur l'ARN de la table du réplica. Disassociation conserve sa table et ses données régionales. Pour modifier la protection contre la dissociation, vous devez disposer du dynamodb:UpdateTable Autorisation IAM.

Envoyez les deux demandes depuis le propre compte de la réplique à sa région. L'adhésion à une table globale n'autorise pas à dissocier une réplique appartenant à un autre compte.

Pour un exemple de politique, les prérequis et les instructions, voir Dissociation d'une réplique de table globale.

Suppression de tables globales et suppression de répliques

Pour supprimer une table globale, vous devez supprimer toutes les répliques. Contrairement à Global Table pour un même compte, vous ne pouvez pas utiliser UpdateTable pour supprimer une table de répliques dans une région distante et chaque réplique doit être supprimée via DeleteTable API depuis le compte qui la contrôle.

Autorisations pour supprimer des tables globales et supprimer des répliques

Les autorisations suivantes sont requises à la fois pour supprimer des répliques individuelles et pour supprimer complètement des tables globales. La suppression d'une configuration de table globale supprime uniquement la relation de réplication entre les tables de différentes régions. Elle ne supprime pas la table DynamoDB sous-jacente dans la dernière région restante. La table de la dernière région continue d'exister en tant que table DynamoDB standard avec les mêmes données et paramètres.

Vous devez disposer des autorisations suivantes sur la ressource de table dans chaque région où vous supprimez une réplique :

  • dynamodb:DeleteTable

  • dynamodb:DeleteTableReplica

Utilisation des tables globales AWS KMS

Comme toutes les tables DynamoDB, les répliques de tables globales chiffrent toujours les données au repos à l'aide de clés de chiffrement stockées dans AWS Service de gestion des clés (AWS KMS).

Note

Contrairement à une table globale pour un même compte, différentes répliques d'une table globale multi-comptes peuvent être configurées avec le type différent de AWS KMS clé (AWS clé détenue ou clé gérée par le client). Multi-account les tables globales ne sont pas prises en charge AWS Clés gérées.

Multi-account les tables globales qui utilisent des CMK nécessitent la politique de clés de chaque réplica pour accorder des autorisations au principal du service de réplication DynamoDB (replication.dynamodb.amazonaws.com) pour accéder à la clé de réplication et de gestion des paramètres. Les autorisations suivantes sont requises :

  • kms:Decrypt

  • kms:ReEncrypt*

  • kms:GenerateDataKey*

  • kms:DescribeKey

Important

DynamoDB a besoin d’accéder à la clé de chiffrement du réplica pour supprimer un réplica. Si vous souhaitez désactiver ou supprimer une clé gérée par le client utilisée pour chiffrer une réplique parce que vous supprimez la réplique, vous devez d'abord supprimer la réplique, attendre que la table soit supprimée du groupe de réplication en appelant describe dans l'une des autres répliques, puis désactiver ou supprimer la clé.

Si vous désactivez ou révoquez l'accès de DynamoDB à une clé gérée par le client utilisée pour chiffrer un réplica, la réplication depuis et vers le réplica s'arrête et le statut du réplica passe à INACCESSIBLE_ENCRYPTION_CREDENTIALS. Si une réplique reste dans le INACCESSIBLE_ENCRYPTION_CREDENTIALS état pendant plus de 20 heures, la réplique est convertie de manière irréversible en une table DynamoDB à région unique.

Exemple AWS KMS policy

Le AWS KMS la politique permet à DynamoDB d'accéder à la fois AWS KMS clés de réplication entre les répliques A et B. Les AWS KMS les clés associées au réplica DynamoDB de chaque compte doivent être mises à jour conformément à la politique suivante :

JSON
{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "replication.dynamodb.amazonaws.com" }, "Action": [ "kms:Decrypt", "kms:ReEncrypt*", "kms:GenerateDataKey*", "kms:DescribeKey" ], "Resource": "*", "Condition": { "StringEquals": { "aws:SourceAccount": [ "111122223333", "444455556666" ], "aws:SourceArn": [ "arn:aws:dynamodb:ap-east-1:111122223333:table/ReplicaA", "arn:aws:dynamodb:eu-south-1:444455556666:table/ReplicaB" ] } } } ] }