Usar o IAM com backup e restauração do DynamoDB
Você pode usar o AWS Identity and Access Management (IAM) para restringir as ações de backup e restauração do Amazon DynamoDB a alguns recursos. As APIs CreateBackup
e RestoreTableFromBackup
operam por tabela.
Para obter mais informações sobre como usar as políticas do IAM no DynamoDB, consulte Políticas baseadas em identidade para o DynamoDB.
Veja a seguir exemplos de políticas do IAM que você pode usar para configurar funcionalidades específicas de backup e restauração no DynamoDB.
Exemplo 1: permitir ações CreateBackup e RestoreTableFromBackup
Esta política do IAM concede permissões para execução das ações CreateBackup
e RestoreTableFromBackup
do DynamoDB em todas as tabelas:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "dynamodb:CreateBackup", "dynamodb:RestoreTableFromBackup", "dynamodb:PutItem", "dynamodb:UpdateItem", "dynamodb:DeleteItem", "dynamodb:GetItem", "dynamodb:Query", "dynamodb:Scan", "dynamodb:BatchWriteItem" ], "Resource": "*" } ] }
Importante
As permissões RestoreTableFromBackup do DynamoDB são necessárias no backup de origem, e as de leitura e gravação do DynamoDB na tabela de destino são necessárias para a funcionalidade de restauração.
As permissões RestoreTableToPointInTime do DynamoDB são necessárias no backup de origem, e as de leitura e gravação do DynamoDB na tabela de destino são necessárias para a funcionalidade de restauração.
Exemplo 2: permitir CreateBackup e negar RestoreTableFromBackup
Esta política do IAM concede permissões para a ação CreateBackup
e nega a ação RestoreTableFromBackup
:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": ["dynamodb:CreateBackup"], "Resource": "*" }, { "Effect": "Deny", "Action": ["dynamodb:RestoreTableFromBackup"], "Resource": "*" } ] }
Exemplo 3: permitir ListBackups e negar CreateBackup e RestoreTableFromBackup
Esta política do IAM concede permissões para a ação ListBackups
e recusa as ações CreateBackup
e RestoreTableFromBackup
:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": ["dynamodb:ListBackups"], "Resource": "*" }, { "Effect": "Deny", "Action": [ "dynamodb:CreateBackup", "dynamodb:RestoreTableFromBackup" ], "Resource": "*" } ] }
Exemplo 4: permitir ListBackups e negar DeleteBackup
Esta política do IAM concede permissões para a ação ListBackups
e nega a ação DeleteBackup
:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": ["dynamodb:ListBackups"], "Resource": "*" }, { "Effect": "Deny", "Action": ["dynamodb:DeleteBackup"], "Resource": "*" } ] }
Exemplo 5: permitir RestoreTableFromBackup e DescribeBackup para todos os recursos e recusar DeleteBackup para um backup específico
Esta política do IAM concede permissões para as ações RestoreTableFromBackup
e DescribeBackup
e nega a ação DeleteBackup
para um recurso de backup específico:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "dynamodb:DescribeBackup", "dynamodb:RestoreTableFromBackup", ], "Resource": "arn:aws:dynamodb:us-east-1:123456789012:table/Music/backup/01489173575360-b308cd7d" }, { "Effect": "Allow", "Action": [ "dynamodb:PutItem", "dynamodb:UpdateItem", "dynamodb:DeleteItem", "dynamodb:GetItem", "dynamodb:Query", "dynamodb:Scan", "dynamodb:BatchWriteItem" ], "Resource": "*" }, { "Effect": "Deny", "Action": [ "dynamodb:DeleteBackup" ], "Resource": "arn:aws:dynamodb:us-east-1:123456789012:table/Music/backup/01489173575360-b308cd7d" } ] }
Importante
As permissões RestoreTableFromBackup do DynamoDB são necessárias no backup de origem, e as de leitura e gravação do DynamoDB na tabela de destino são necessárias para a funcionalidade de restauração.
As permissões RestoreTableToPointInTime do DynamoDB são necessárias no backup de origem, e as de leitura e gravação do DynamoDB na tabela de destino são necessárias para a funcionalidade de restauração.
Exemplo 6: permitir CreateBackup para uma tabela específica
Esta política do IAM concede permissões para a ação CreateBackup
somente na tabela Movies
:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": ["dynamodb:CreateBackup"], "Resource": [ "arn:aws:dynamodb:us-east-1:123456789012:table/Movies" ] } ] }
Exemplo 7: permitir ListBackups
Esta política do IAM concede permissões para a ação ListBackups
:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": ["dynamodb:ListBackups"], "Resource": "*" } ] } }
Importante
Não é possível conceder permissões para a ação ListBackups
em uma tabela específica.
Exemplo 8: permitir acesso a características do AWS Backup
Você precisará de permissões de API para a ação StartAwsBackupJob
para obter um backup bem-sucedido com recursos avançados, e a ação dynamodb:RestoreTableFromAwsBackup
para restaurar esse backup com êxito.
A seguinte política do IAM concede ao AWS Backup as permissões para acionar backups com recursos avançados e restaurações. Observe também que, se as tabelas forem criptografadas, a política precisará de acesso à chave do KMS da AWS.
{ "Version": "2012-10-17", "Statement": [ { "Sid": "DescribeQueryScanBooksTable", "Effect": "Allow", "Action": [ "dynamodb:StartAwsBackupJob", "dynamodb:DescribeTable", "dynamodb:Query", "dynamodb:Scan" ], "Resource": "arn:aws:dynamodb:us-west-2:account-id:table/Books" }, { "Sid": "AllowRestoreFromAwsBackup", "Effect": "Allow", "Action": ["dynamodb:RestoreTableFromAwsBackup"], "Resource": "*" }, ] }
Exemplo 9: negar RestoreTableToPointInTime para uma tabela de origem específica
A seguinte política do IAM nega permissões para a ação RestoreTableToPointInTime
a uma tabela de origem específica:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Deny", "Action": [ "dynamodb:RestoreTableToPointInTime" ], "Resource": "arn:aws:dynamodb:us-east-1:123456789012:table/Music" } ] }
Exemplo 10: negar RestoreTableFromBackup para uma tabela de origem específica
A seguinte política do IAM nega permissões para a ação RestoreTableToPointInTime
a todos os backups de uma tabela de origem específica:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Deny", "Action": [ "dynamodb:RestoreTableFromBackup" ], "Resource": "arn:aws:dynamodb:us-east-1:123456789012:table/Music/backup/*" } ] }