Usar o IAM com tabelas globais
Importante
Esta documentação, destinada à versão 2017.11.29 (herdada) de tabelas globais, deve ser evitada para novas tabelas globais. Os clientes devem usar Global Tables versão 2019.11.21 (atual) sempre que possível, pois ela oferece maior flexibilidade e eficiência, além de consumir menor capacidade de gravação que a 2017.11.29 (herdada).
Para determinar qual versão você está usando, consulte Determinar a versão da tabela global do DynamoDB que você está usando. Para atualizar tabelas globais existentes da versão 2017.11.29 (herdada) para a versão 2019.11.21 (atual), consulte Atualizar as tabelas globais.
Na primeira vez que você cria uma tabela global, o Amazon DynamoDB cria automaticamente para você uma função vinculada ao serviço do AWS Identity and Access Management (IAM). Essa função é chamada AWSServiceRoleForDynamoDBReplication
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.
Para criar e manter tabelas globais no DynamoDB, é preciso ter permissão dynamodb:CreateGlobalTable
para acessar cada um dos itens a seguir:
-
A tabela-réplica que você deseja adicionar.
-
Toda réplica existente que já faça parte da tabela global.
-
A própria tabela global.
Para atualizar as configurações (UpdateGlobalTableSettings
) para uma tabela global no DynamoDB, você deve ter as permissões dynamodb:UpdateGlobalTable
, dynamodb:DescribeLimits
, application-autoscaling:DeleteScalingPolicy
e application-autoscaling:DeregisterScalableTarget
.
As permissões application-autoscaling:DeleteScalingPolicy
e application-autoscaling:DeregisterScalableTarget
são necessárias ao atualizar uma política de dimensionamento existente. Isso ocorre para que o serviço de tabelas globais possa remover a política de dimensionamento antiga antes de anexar a nova política à tabela ou ao índice secundário.
Se você usar uma política do IAM para gerenciar o acesso a uma tabela-réplica, deverá aplicar uma política idêntica a todas as outras réplicas dentro da tabela global. Esse procedimento ajuda você a manter um modelo de permissões consistente em todas as tabelas-réplica.
Ao usar políticas idênticas do IAM em todas as réplicas em uma tabela global, você também pode evitar a concessão não intencional de acesso de leitura e gravação a seus dados na tabela global. Por exemplo, considere um usuário que tem acesso a uma única réplica em uma tabela global. Se esse usuário puder gravar nessa réplica, o DynamoDB propagará a gravação para todas as outras tabelas-réplica. Na verdade, o usuário poderá gravar (indiretamente) em todas as outras réplicas na tabela global. Essa situação pode ser evitada usando políticas consistentes do IAM em todas as tabelas-réplica.
Exemplo: permitir a ação CreateGlobalTable
Para adicionar uma réplica a uma tabela global, você precisa ter a permissão dynamodb:CreateGlobalTable
para a tabela global e para cada uma de suas tabelas-réplica.
A política do IAM a seguir concede permissões para a ação CreateGlobalTable
em todas as tabelas.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": ["dynamodb:CreateGlobalTable"], "Resource": "*" } ] }
Exemplo: permitir as ações UpdateGlobalTable, DescribeLimits, application-autoscaling:DeleteScalingPolicy e application-autoscaling:DeregisterScalableTarget
Para atualizar as configurações (UpdateGlobalTableSettings
) para uma tabela global no DynamoDB, você deve ter as permissões dynamodb:UpdateGlobalTable
, dynamodb:DescribeLimits
, application-autoscaling:DeleteScalingPolicy
e application-autoscaling:DeregisterScalableTarget
.
A política do IAM a seguir concede permissões para a ação UpdateGlobalTableSettings
em todas as tabelas.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "dynamodb:UpdateGlobalTable", "dynamodb:DescribeLimits", "application-autoscaling:DeleteScalingPolicy", "application-autoscaling:DeregisterScalableTarget" ], "Resource": "*" } ] }
Exemplo: permitir a ação CreateGlobalTable para um nome de tabela global específico com réplicas permitidas somente em determinadas regiões
A política do IAM a seguir concede permissões para permitir que a ação CreateGlobalTable
crie uma tabela global chamada Customers
com réplicas em duas regiões.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "dynamodb:CreateGlobalTable", "Resource": [ "arn:aws:dynamodb::123456789012:global-table/Customers", "arn:aws:dynamodb:us-east-1:123456789012:table/Customers", "arn:aws:dynamodb:us-west-1:123456789012:table/Customers" ] } ] }