

# Usar o IAM com backup e restauração do DynamoDB
<a name="backuprestore_IAM"></a>

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](security_iam_service-with-iam.md#security_iam_service-with-iam-id-based-policies). 

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
<a name="access-policy-example1"></a>

Esta política do IAM concede permissões para execução das ações `CreateBackup` e `RestoreTableFromBackup` do DynamoDB em todas as tabelas:

------
#### [ JSON ]

****  

```
{
    "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
<a name="access-policy-example2"></a>

Esta política do IAM concede permissões para a ação `CreateBackup` e nega a ação `RestoreTableFromBackup`:

------
#### [ JSON ]

****  

```
{
    "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
<a name="access-policy-example3"></a>

Esta política do IAM concede permissões para a ação `ListBackups` e recusa as ações `CreateBackup` e `RestoreTableFromBackup`:

------
#### [ JSON ]

****  

```
{
    "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
<a name="access-policy-example4"></a>

Esta política do IAM concede permissões para a ação `ListBackups` e nega a ação `DeleteBackup`:

------
#### [ JSON ]

****  

```
{
    "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
<a name="access-policy-example5"></a>

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:

------
#### [ JSON ]

****  

```
{
    "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
<a name="access-policy-example6"></a>

Esta política do IAM concede permissões para a ação `CreateBackup` somente na tabela `Movies`:

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": ["dynamodb:CreateBackup"],
            "Resource": [
                "arn:aws:dynamodb:us-east-1:123456789012:table/Movies"
            ]
        }
    ]
}
```

------

## Exemplo 7: permitir ListBackups
<a name="access-policy-example7"></a>

Esta política do IAM concede permissões para a ação `ListBackups`:

------
#### [ JSON ]

****  

```
{
    "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
<a name="access-policy-example8"></a>

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](encryption.usagenotes.html#dynamodb-kms-authz). 

------
#### [ JSON ]

****  

```
{
    "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:111122223333:table/Books"
        },
        {
            "Sid": "AllowRestoreFromAwsBackup",
            "Effect": "Allow",
            "Action": [
                "dynamodb:RestoreTableFromAwsBackup"
            ],
            "Resource": "*"
        }
    ]
}
```

------

## Exemplo 9: negar RestoreTableToPointInTime para uma tabela de origem específica
<a name="access-policy-example9"></a>

A seguinte política do IAM nega permissões para a ação `RestoreTableToPointInTime` a uma tabela de origem específica: 

------
#### [ JSON ]

****  

```
{
    "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 name="access-policy-example10"></a>

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: 

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Deny",
            "Action": [
                "dynamodb:RestoreTableFromBackup"
            ],
            "Resource": "arn:aws:dynamodb:us-east-1:123456789012:table/Music/backup/*"
        }
    ]
}
```

------