Segurança de tabelas globais do DynamoDB
As réplicas de tabelas globais são tabelas do DynamoDB, então você usa os mesmos métodos para controlar o acesso às réplicas que usa para tabelas de região única, incluindo políticas de identidade e políticas baseadas em recursos do AWS Identity and Access Management (IAM).
Este tópico aborda como proteger tabelas globais do DynamoDB usando permissões do IAM e criptografia AWS Key Management Service (AWS KMS). Você vai saber mais sobre os perfis vinculados a serviços (SLR) que permitem a replicação e o ajuste de escala automático entre regiões, as permissões do IAM necessárias para criar, atualizar e excluir tabelas globais e as diferenças entre as tabelas de consistência eventual em várias regiões (MREC) e de consistência forte em várias regiões (MRSC). Você também vai saber mais sobre chaves de criptografia do AWS KMSpara gerenciar a replicação entre regiões com segurança.
Perfis vinculados a serviços para tabelas globais
As tabelas globais do DynamoDB dependem de perfis vinculados a serviços (SLRs) para gerenciar a replicação entre regiões e os recursos de ajuste de escala automático.
Você precisa configurar esses perfis somente uma vez por conta da AWS. Depois de criados, os mesmos perfis atendem a todas as tabelas globais da sua conta. Para obter mais informações sobre funções vinculadas a serviços, consulte Usando funções vinculadas a serviços no Guia do Usuário do IAM.
Função vinculada ao serviço de replicação
O Amazon DynamoDB cria automaticamente o perfil vinculado a serviços AWSServiceRoleForDynamoDBReplication (SLR) quando você cria sua primeira tabela global. Esse perfil gerencia a replicação entre regiões para você.
Ao aplicar políticas baseadas em recursos às réplicas, não negue nenhuma das permissões definidas em AWSServiceRoleForDynamoDBReplicationPolicy à entidade principal SLR, pois isso interromperá a replicação. Se você negar as permissões SLR necessárias, a replicação de e para as réplicas afetadas será interrompida e o status da tabela de réplicas mudará para REPLICATION_NOT_AUTHORIZED.
-
No caso de tabelas globais de consistência eventual multirregional (MREC), se uma réplica permanecer no estado
REPLICATION_NOT_AUTHORIZEDpor mais de 20 horas, ela será convertida irreversivelmente em uma tabela do DynamoDB de região única. -
Para tabelas globais de consistência forte multirregional (MRSC), negar as permissões necessárias gera
AccessDeniedExceptionem operações de gravação e leitura altamente consistente. Se uma réplica permanecer no estadoREPLICATION_NOT_AUTHORIZEDpor mais de sete dias, a réplica ficará permanentemente inacessível e as operações de gravação e leitura altamente consistentes continuarão falhando com um erro. Algumas operações de gerenciamento, como a exclusão de réplicas, serão bem-sucedidas.
Função vinculada a serviço do IAM para ajuste de escala automático
Quando você configura uma tabela global para o modo de capacidade provisionada, também deve configurar o ajuste de escala automático para ela. O ajuste de escala automático do DynamoDB usa o serviço AWS Application Auto Scaling para ajustar dinamicamente a capacidade de throughput em suas réplicas de tabela global. O serviço Application Auto Scaling cria um perfil vinculado a serviços (SLR) chamado AWSServiceRoleForApplicationAutoScaling_DynamoDBTable. Esse perfil vinculado a serviços é criado automaticamente em sua conta da AWS quando você configura o ajuste de escala automático para uma tabela do DynamoDB. Ele permite que o Application Auto Scaling gerencie a capacidade provisionada da tabela e crie alarmes do CloudWatch.
Quando você aplicar políticas baseadas em recursos às réplicas, não negue nenhuma das permissões definidas em AWSApplicationAutoscalingDynamoDBTablePolicy à entidade principal de SLR do Application Auto Scaling, pois isso interromperá a funcionalidade de ajuste de escala automático.
Exemplo de políticas do IAM para perfis vinculados a serviços
Uma política do IAM com a condição a seguir não afeta as permissões necessárias para a SLR de replicação e a SLR de ajuste de escala automático da AWS do DynamoDB. Essa condição pode ser adicionada a políticas amplamente restritivas para evitar a interrupção involuntária da replicação ou do ajuste de escala automático:
O exemplo a seguir mostra como excluir as entidades principais do perfil vinculado a serviços das instruções de negação:
"Condition": { "StringNotEquals": { "aws:PrincipalArn": [ "arn:aws::iam::111122223333:role/aws-service-role/replication.dynamodb.amazonaws.com/AWSServiceRoleForDynamoDBReplication", "arn:aws::iam::111122223333:role/aws-service-role/dynamodb.application-autoscaling.amazonaws.com/AWSServiceRoleForApplicationAutoScaling_DynamoDBTable" ] } }
Como as tabelas globais usam o IAM da AWS
As seções a seguir descrevem as permissões necessárias para diferentes operações de tabela global e fornecem exemplos de políticas para ajudar você a configurar o acesso apropriado para seus usuários e aplicações.
nota
Todas as permissões descritas devem ser aplicadas ao ARN do recurso de tabela específico nas regiões afetadas. O ARN do recurso de tabela segue o formato arn:aws:dynamodb:region:account-id:table/table-name, no qual você precisa especificar seus valores reais de região, ID da conta e nome da tabela.
Tópicos
Criar tabelas globais e adicionar réplicas
As tabelas globais do DynamoDB comportam dois modos de consistência: consistência eventual multirregional (MREC) e consistência forte multirregional (MRSC). As tabelas globais MREC podem ter várias réplicas em qualquer número de regiões e fornecer consistência eventual. As tabelas globais MRSC exigem exatamente três regiões (três réplicas ou duas réplicas e uma testemunha) e fornecem consistência forte com objetivo de ponto de recuperação (RPO) zero.
As permissões necessárias para criar tabelas globais dependem de você criar uma tabela global com ou sem uma testemunha.
Permissões para criar tabelas globais
As permissões a seguir são necessárias tanto para a criação de tabelas globais iniciais quanto para adicionar réplicas posteriormente. Essas permissões se aplicam às tabelas globais de consistência final multirregional (MREC) e consistência forte multirregional (MRSC).
-
As tabelas globais exigem replicação entre regiões, que o DynamoDB gerencia por meio do perfil vinculado a serviços (SLR) AWSServiceRoleForDynamoDBReplication. A permissão a seguir permite que o DynamoDB crie esse perfil automaticamente quando você cria uma tabela global pela primeira vez:
-
iam:CreateServiceLinkedRole
-
-
Para criar uma tabela global ou adicionar uma réplica usando a API
UpdateTable, é necessário ter a seguinte permissão no recurso da tabela de origem:-
dynamodb:UpdateTable
-
-
É necessário ter as seguintes permissões no recurso de tabela nas regiões para que as réplicas sejam adicionadas:
-
dynamodb:CreateTable -
dynamodb:CreateTableReplica -
dynamodb:Query -
dynamodb:Scan -
dynamodb:UpdateItem -
dynamodb:PutItem -
dynamodb:GetItem -
dynamodb:DeleteItem -
dynamodb:BatchWriteItem
-
Permissões adicionais para tabelas globais MRSC usando uma testemunha
Ao criar uma tabela global de consistência forte multirregional (MRSC) com uma região testemunha, você deve ter a seguinte permissão no recurso de tabela em todas as regiões participantes (incluindo as regiões de réplica e a região testemunha):
-
dynamodb:CreateGlobalTableWitness
Exemplos de política do IAM para criar tabelas globais
A política baseada em identidade a seguir permite que você crie uma tabela global MREC ou MRSC chamada “usuários” em três regiões, incluindo a criação do perfil vinculado a serviços de replicação do DynamoDB necessário.
A política baseada em identidade a seguir permite criar réplicas de tabelas globais do DynamoDB em regiões específicas usando a chave de condição aws:RequestedRegion, incluindo a criação do perfil vinculado a serviços de replicação do DynamoDB necessário.
A política baseada em identidade a seguir permite que você crie uma tabela global do DynamoDB MRSC chamada “users” com réplicas em us-east-1 e us-east-2 e uma testemunha em us-west-2, incluindo a criação do perfil vinculado a serviços de replicação do DynamoDB necessário.
A política baseada em identidade permite criar uma tabela global MRSC com réplicas restrita a regiões específicas usando a chave de condição aws:RequestedRegion e criação de testemunhas sem restrições em todas as regiões, incluindo a criação do perfil vinculado a serviços de replicação do DynamoDB necessário.
Atualizar tabelas globais
Para modificar as configurações de réplica de uma tabela global existente usando a API UpdateTable, você precisa da seguinte permissão no recurso de tabela na região em que está fazendo a chamada da API:
-
dynamodb:UpdateTable
Além disso, você pode atualizar outras configurações da tabela global, como políticas de ajuste de escala automático e configurações de tempo de vida. As seguintes permissões são necessárias para essas operações adicionais de atualização:
-
Para atualizar uma política de ajuste de escala automático da réplica com a API
UpdateTableReplicaAutoScaling, é necessário ter as seguintes permissões no recurso de tabela em todas as regiões que contêm réplicas:-
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
-
-
Para atualizar as configurações de tempo de vida com a API
UpdateTimeToLive, você deve ter a seguinte permissão no recurso de tabela em todas as regiões que contêm réplicas:-
dynamodb:UpdateTimeToLive
Observe que o tempo de vida (TTL) é aceito em tabelas globais configuradas com consistência eventual multirregional (MREC). Para acessar mais informações sobre como tabelas globais funcionam com TTL, consulte Como funcionam as tabelas globais do DynamoDB.
-
Excluir tabelas globais e remover réplicas
Para excluir uma tabela global, você deve remover todas as réplicas. As permissões necessárias para essa operação variam dependendo se você está excluindo uma tabela global com ou sem uma região testemunha.
Permissões para excluir tabelas globais e remover réplicas
As permissões a seguir são necessárias tanto para remover réplicas individuais quanto para excluir completamente as tabelas globais. A exclusão de uma configuração de tabela global só remove o relacionamento de replicação entre tabelas em diferentes regiões. Ela não exclui a tabela subjacente do DynamoDB na última região restante. A tabela na última região continua existindo como uma tabela padrão do DynamoDB com os mesmos dados e configurações. Essas permissões se aplicam às tabelas globais de consistência final multirregional (MREC) e consistência forte multirregional (MRSC).
-
Para remover réplicas de uma tabela global usando a API
UpdateTable, você precisa da seguinte permissão no recurso de tabela na região em que está fazendo a chamada de API:-
dynamodb:UpdateTable
-
-
Você precisa das seguintes permissões no recurso de tabela em cada região em que você está removendo uma réplica:
-
dynamodb:DeleteTable -
dynamodb:DeleteTableReplica
-
Permissões adicionais para tabelas globais MRSC usando uma testemunha
Ao excluir uma tabela global de consistência forte multirregional (MRSC) com uma testemunha, você deve ter a seguinte permissão no recurso de tabela em todas as regiões participantes (incluindo as regiões de réplica e a região testemunha):
-
dynamodb:DeleteGlobalTableWitness
Exemplos de política do IAM para excluir réplicas de uma tabela global
Essa política baseada em identidade permite que você exclua uma tabela global do DynamoDB chamada “users” e suas réplicas em três regiões:
Essa política baseada em identidade permite que você exclua a réplica e a testemunha de uma tabela global MRSC chamada “users”:
Como as tabelas globais usam AWS KMS
Como todas as tabelas do DynamoDB, as réplicas de tabelas globais sempre criptografam dados em repouso usando chaves de criptografia armazenadas no AWS Key Management Service (AWS KMS).
Todas as réplicas em uma tabela global devem ser configuradas com o mesmo tipo de chave KMS (chave própria da AWS, chave gerenciada da AWS ou chave gerenciada pelo cliente).
Importante
O DynamoDB exige acesso à chave de criptografia da réplica para excluir uma réplica. Se você quiser desativar ou excluir uma chave gerenciada pelo cliente usada para criptografar uma réplica porque você está excluindo a réplica, primeiro exclua a réplica, aguarde até que o status da tabela em uma das réplicas restantes mude para ACTIVE, então desative ou exclua a chave.
Para uma tabela global configurada para consistência final multirregional (MREC), se você desativar ou revogar o acesso do DynamoDB a uma chave gerenciada pelo cliente usada para criptografar uma réplica, a replicação de e para a réplica será interrompida e o status da réplica mudará para INACCESSIBLE_ENCRYPTION_CREDENTIALS. Se uma réplica em uma tabela global do MREC permanecer no estado INACCESSIBLE_ENCRYPTION_CREDENTIALS por mais de 20 horas, a réplica será convertida irreversivelmente em uma tabela do DynamoDB de região única.
Para uma tabela global configurada para consistência forte multirregional (MRSC), se você desativar ou revogar o acesso do DynamoDB a uma chave gerenciada pelo cliente usada para criptografar uma réplica, a replicação de e para a réplica será interrompida, as tentativas de realizar gravações ou leituras altamente consistentes na réplica retornarão um erro, e o status da réplica mudará para INACCESSIBLE_ENCRYPTION_CREDENTIALS. Se uma réplica em uma tabela global do MRSC permanecer no estado INACCESSIBLE_ENCRYPTION_CREDENTIALS por mais de sete dias, dependendo das permissões específicas revogadas, a réplica será arquivada ou ficará permanentemente inacessível.