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 Identity and Access Management (IAM) da AWS.
Como as tabelas globais usam o IAM da AWS
Função vinculada ao serviço de replicação
Na primeira vez que você cria uma tabela global, o Amazon DynamoDB cria automaticamente para você uma função vinculada ao serviço de Identity and Access Management (IAM) da AWS. O SLR é chamado de AWSServiceRoleForDynamoDBReplication
Ao aplicar políticas baseadas em recursos às réplicas, não negue nenhuma das permissões definidas na política AWSServiceRoleForDynamoDBReplication
à entidade principal da 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
.
-
Se uma réplica em uma tabela global configurada para consistência final multirregional (MREC) permanecer no estado
REPLICATION_NOT_AUTHORIZED
por mais de 20 horas, a réplica será convertida irreversivelmente em uma tabela do DynamoDB de região única. -
Réplicas de tabelas globais configuradas para consistência forte multirregional (MRSC) retornam um
AccessDeniedException
para operações de gravação e leitura altamente consistentes. Se uma réplica em uma tabela global do MRSC permanecer no estadoREPLICATION_NOT_AUTHORIZED
por 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
Ao configurar uma tabela global para o modo de capacidade provisionada, você também deve configurar o ajuste de escala automático para a tabela global. O ajuste de escala automático do Amazon DynamoDB usa o serviço de ajuste de escala automático de aplicativo da AWS para ajustar dinamicamente a capacidade de throughput em suas réplicas de tabela global. O serviço de ajuste de escala automático cria uma função vinculada ao serviço (SLR) chamada de AWSServiceRoleForApplicationAutoScaling_DynamoDBTable
para gerenciar a capacidade da tabela provisionada e criar alarmes do CloudWatch. Ao aplicar políticas baseadas em recursos às réplicas, não negue nenhuma das permissões definidas na política AWSServiceRoleForApplicationAutoScaling_DynamoDBTable
à entidade principal do serviço SLR de ajuste automático do aplicativo, pois isso interromperá a funcionalidade de ajuste de escala automático.
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.
Permissões obrigatórias para tabelas globais
Para criar uma réplica, você deve ter a seguinte permissão na tabela ou réplica à qual você está adicionando novas réplicas:
-
dynamodb:UpdateTable
Para criar uma réplica, você deve ter as seguintes permissões em cada região onde uma nova réplica será criada:
-
dynamodb:CreateTable
-
dynamodb:CreateTableReplica
Para criar uma testemunha, você deve ter a seguinte permissão na região em que uma nova testemunha será criada:
-
dynamodb:CreateGlobalTableWitness
Para excluir uma réplica, é necessário ter as permissões a seguir na réplica:
-
dynamodb:DeleteTable
-
dynamodb:DeleteTableReplica
Para excluir uma testemunha, você precisa ter as seguintes permissões na testemunha:
-
dynamodb:DeleteGlobalTableWitness
Para atualizar a política de ajuste de escala automático da réplica usando a API UpdateTableReplicaAutoScaling
, é necessário ter as permissões a seguir em todas as regiões que contenham 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 Time to Live com a UpdateTimeToLive
API, você deve ter a seguinte permissão em todas as réplicas:
-
dynamodb:UpdateTimeToLive
Políticas de exemplo do IAM
Exemplo: gerenciar uma tabela global
A política do IAM a seguir concede permissões para criar e excluir réplicas e testemunhas de tabelas globais para a tabela “usuários” em três regiões:
Exemplo: excluir as permissões SLR necessárias das políticas de negação de caracteres curinga
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:
"Condition": { "StringNotEquals": { "aws:PrincipalArn": [ "arn:aws:iam::
YOUR_ACCOUNT_ID
:role/aws-service-role/replication.dynamodb.amazonaws.com/AWSServiceRoleForDynamoDBReplication
", "arn:aws:iam::YOUR_ACCOUNT_ID
:role/aws-service-role/dynamodb.application-autoscaling.amazonaws.com/AWSServiceRoleForApplicationAutoScaling_DynamoDBTable
" ] } }
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.