Usar o IAM com tabelas globais - Amazon DynamoDB

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 e permite que o DynamoDB gerencie a replicação em tabelas globais entre regiões em seu nome. Não exclua essa função vinculada ao serviço. Se fizer isso, todas as suas tabelas globais não funcionarão mais.

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" ] } ] }