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 étant des tables DynamoDB, vous utilisez les mêmes méthodes pour contrôler l'accès aux répliques que pour les tables à région unique, Gestion des identités et des accès AWS y compris les politiques d'identité (IAM) et les politiques basées sur les ressources. Cette rubrique explique comment sécuriser les tables globales multicomptes DynamoDB à l'aide des autorisations IAM et du chiffrement (). AWS Key Management Service AWS KMS 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 l'auto-scaling, ainsi que les autorisations IAM nécessaires pour créer, mettre à jour et supprimer des tables globales, pour des tables de cohérence finale multirégionales (MREC). Vous découvrirez également les clés de AWS KMS chiffrement permettant de 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 une réplication de tables entre comptes et entre régions. La compréhension de ce modèle de sécurité est essentielle pour les clients qui ont besoin de mettre en œuvre des solutions sécurisées de réplication de données entre comptes.

Autorisation principale du 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. Cela se fait à l'aide du 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 accordant des autorisations qui peuvent être limitées à des répliques spécifiques en fonction des conditions du contexte source sur des clés telles que aws:SourceAccountaws:SourceArn, etc. — voir les clés de condition AWS 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 en particulier.

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

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

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

  • dynamodb:ReplicateSettingspermet de synchroniser les paramètres des tables entre les répliques, fournissant ainsi une configuration cohérente entre toutes les tables participantes.

Chaque réplique doit accorder les autorisations ci-dessus à toutes les autres répliques et à elle-même, c'est-à-dire que les conditions du contexte source doivent inclure l'ensemble complet des répliques composant la table globale. Ces autorisations sont vérifiées pour chaque nouvelle réplique lorsqu'elle est ajoutée à 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.

Rôles liés à un service pour les tables globales multi-comptes

Les tables globales multicomptes DynamoDB répliquent les paramètres de toutes les répliques afin que chaque réplique soit configurée de manière identique avec un débit constant et offre une expérience de basculement fluide. La réplication des paramètres est contrôlée par l'ReplicateSettingsautorisation accordée au principal du service, mais nous nous appuyons également sur les rôles liés au service (SLRs) pour gérer certaines fonctionnalités de réplication entre comptes et entre régions et d'auto-scaling. Ces rôles ne sont définis qu'une seule fois par AWS compte. Une fois créés, les mêmes rôles sont utilisés pour toutes les tables globales de votre compte. Pour plus d'informations sur les rôles liés à un service, consultez la section Utilisation des rôles liés à un service dans le guide de l'utilisateur IAM.

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

Amazon DynamoDB crée automatiquement le rôle lié AWSService RoleForDynamo DBGlobal TableSettingsManagement au 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 des paramètres entre comptes et entre régions.

Lorsque vous appliquez des politiques basées sur les ressources aux répliques, assurez-vous de ne refuser aucune des autorisations définies dans le AWSServiceRoleForDynamoDBGlobalTableSettingsManagement SLR principal, car cela pourrait interférer avec la gestion des paramètres et entraver la réplication si le débit ne correspond pas entre les répliques ou. GSIs Si vous refusez les autorisations SLR requises, la réplication vers et depuis les répliques concernées peut s'arrêter et le statut de la table de répliques passera à. REPLICATION_NOT_AUTHORIZED Pour les tables globales multicomptes, si une réplique reste dans l'REPLICATION_NOT_AUTHORIZEDétat pendant plus de 20 heures, elle est convertie de manière irréversible en table DynamoDB à région unique. Le SLR 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 capacité allouée, le dimensionnement automatique doit être configuré pour la table globale. DynamoDB Auto Scaling AWS utilise le service Application Auto Scaling pour ajuster dynamiquement la capacité de débit allouée sur vos répliques de tables globales. Le service Application Auto Scaling crée un rôle lié au service (SLR) nommé. AWSServiceRoleForApplicationAutoScaling_DynamoDBTable Ce rôle lié à un service est automatiquement créé dans votre AWS compte lorsque vous configurez pour la première fois le dimensionnement automatique pour une table DynamoDB. Il permet à Application Auto Scaling de gérer la capacité des tables provisionnées et de créer des 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 la AWSApplicationAutoscalingDynamoDBTablepolitique au principal Application Auto Scaling SLR, car cela interromprait la fonctionnalité d'auto-scaling.

Comment les tables globales utilisent AWS IAM

Les sections suivantes décrivent les autorisations requises pour les 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 la 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 dans lequel vous devez spécifier les valeurs réelles de votre région, de votre identifiant de compte et du nom de la table.

Les step-by-step sujets que nous abordons dans les sections ci-dessous sont les suivants :

  • Création de tables globales multi-comptes et ajout de répliques

  • Mettre à jour un tableau global multi-comptes

  • Supprimer des tables globales et supprimer des répliques

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

Autorisations pour créer des tables globales

Lorsqu'une nouvelle réplique est ajoutée à une table régionale pour former une table globale multi-comptes ou à une table globale multi-comptes existante, le principal IAM qui exécute l'action doit être autorisé par tous les membres existants. Tous les membres existants doivent donner 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 du tableau.

Exemples de politiques IAM pour créer des tables globales

La configuration des tables globales multi-comptes suit un flux d'autorisation spécifique qui assure une réplication sécurisée. Voyons comment cela fonctionne dans la pratique en passant en revue un scénario pratique dans lequel un client souhaite établir une table globale avec deux répliques. La première réplique (réplicAA) se trouve dans le compte A dans la région ap-east-1, tandis que la seconde réplique (réplicAB) se trouve dans 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éplication principale. L'administrateur du compte doit associer à 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 des 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 de la réplique et en référençant l'ARN de la table source à utiliser pour créer la réplique. 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 afin de vérifier que les autorisations appropriées sont en place.

Pour établir cette configuration, procédez comme suit :

  • 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 à Replicab, avec des références de compte inversées pour accorder les autorisations correspondantes au compte A, lors de l'appel de création de table pour créer une réplique B référençant la réplique A comme table source.

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

Dans cette configuration, nous avons 3 répliques Replica A, Replicab et ReplicAC dans le compte A, le compte B et le compte C, respectivement. La réplique A est la première réplique, qui commence sous la forme d'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 pour permettre la réplication avec tous les membres et autoriser les principaux IAM du compte B et du compte C à ajouter des répliques.

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

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

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

Mettre à jour un tableau global multi-comptes

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

Vous pouvez également mettre à jour d'autres configurations de table 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 avec l'UpdateTimeToLiveAPI, 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 une politique de dimensionnement automatique des répliques avec l'UpdateTableReplicaAutoScalingAPI, 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 des dynamodb:ReplicateSettings autorisations pour toutes les régions et tous les comptes de réplication pour que la table de mise à jour réussisse. Si aucune réplique ne fournit l'autorisation de répliquer les paramètres vers une réplique de la table globale multicompte, toutes les opérations de mise à jour sur toutes les répliques échoueront AccessDeniedException jusqu'à ce que les autorisations soient corrigées.

Supprimer des tables globales et supprimer des répliques

Pour supprimer une table globale, vous devez supprimer toutes les répliques. Contrairement à la table globale de même compte, vous ne pouvez pas l'utiliser UpdateTable pour supprimer une réplique de table dans une région distante et chaque réplique doit être supprimée via l'DeleteTableAPI 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. Cela 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 dans laquelle 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 AWS dans Key Management Service ().AWS KMS

Note

Contrairement à une table globale à comptes identiques, les différentes répliques d'une table globale à comptes multiples peuvent être configurées avec un type de AWS KMS clé différent (cléAWS détenue ou clé gérée par le client). Les tables globales multicomptes ne prennent pas en charge les clés AWS gérées.

Les tables globales multicomptes utilisées CMKs nécessitent que la politique des clés de chaque réplique donne au principal du service de réplication DynamoDB replication.dynamodb.amazonaws.com () l'autorisation d'accéder à la clé pour la réplication et la 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 une réplique, la réplication vers et depuis la réplique s'arrête et le statut de la réplique passe à. INACCESSIBLE_ENCRYPTION_CREDENTIALS Si un réplica reste dans INACCESSIBLE_ENCRYPTION_CREDENTIALS cet état pendant plus de 20 heures, il est converti de manière irréversible en une table DynamoDB à région unique.

Exemple AWS KMS de politique

La AWS KMS politique permet à DynamoDB d'accéder aux AWS KMS deux clés pour la réplication entre les répliques A et B. Les clés associées à AWS KMS la réplique DynamoDB dans chaque compte doivent être mises à jour conformément à la politique suivante :

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