

# DynamoDB バックアップおよび復元での IAM の使用
<a name="backuprestore_IAM"></a>

AWS Identity and Access Management (IAM) を使用すれば、一部リソースの Amazon DynamoDB バックアップアクションと復元アクションを制限することができます。`CreateBackup` および `RestoreTableFromBackup` API はテーブルごとにオペレーションを行います。

 DynamoDB での IAM ポリシーの詳細な使用については、「[DynamoDB のアイデンティティベースのポリシー](security_iam_service-with-iam.md#security_iam_service-with-iam-id-based-policies)」を参照してください。

次に、DynamoDB で特定のバックアップ機能と復元機能を設定するために使用できる IAM ポリシーの例を示します。

## 例 1: CreateBackup および RestoreTableFromBackup アクションを許可する
<a name="access-policy-example1"></a>

以下の IAM ポリシーは、すべてのテーブルで `CreateBackup` および `RestoreTableFromBackup` DynamoDB アクションを適用する許可を付与します。

------
#### [ 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": "*"
        }
    ]
}
```

------

**重要**  
 DynamoDB RestoreTableFromBackup アクセス許可はソースバックアップに必要であり、復元機能にはターゲットテーブルに対する DynamoDB の読み取りおよび書き込みアクセス許可が必要です。  
 RestoreTableToPointInTime アクセス許可はソーステーブルに必要であり、復元機能にはターゲットテーブルに対する DynamoDB の読み取りおよび書き込みアクセス許可が必要です。

## 例 2: CreateBackup アクションを許可し、RestoreTableFromBackup アクションを拒否する
<a name="access-policy-example2"></a>

以下の IAM ポリシーは、`CreateBackup` アクションの許可を付与し、`RestoreTableFromBackup` アクションを拒否します。

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": ["dynamodb:CreateBackup"],
            "Resource": "*"
        },
        {
            "Effect": "Deny",
            "Action": ["dynamodb:RestoreTableFromBackup"],
            "Resource": "*"
        }
        
    ]
}
```

------

## 例 3: ListBackups アクションを許可し、CreateBackup および RestoreTableFromBackup アクションを拒否する
<a name="access-policy-example3"></a>

以下の IAM ポリシーは、`ListBackups` アクションの許可を付与し、`CreateBackup` アクションおよび `RestoreTableFromBackup` アクションを拒否します。

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": ["dynamodb:ListBackups"],
            "Resource": "*"
        },
        {
            "Effect": "Deny",
            "Action": [
                "dynamodb:CreateBackup",
                "dynamodb:RestoreTableFromBackup"
            ],
            "Resource": "*"
        }
        
    ]
}
```

------

## 例 4: ListBackups を許可し、DeleteBackup を拒否する
<a name="access-policy-example4"></a>

以下の IAM ポリシーは、`ListBackups` アクションの許可を付与し、`DeleteBackup` アクションを拒否します。

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": ["dynamodb:ListBackups"],
            "Resource": "*"
        },
        {
            "Effect": "Deny",
            "Action": ["dynamodb:DeleteBackup"],
            "Resource": "*"
        }
        
    ]
}
```

------

## 例 5: すべてのリソースに対する RestoreTableFromBackup および DescribeBackup を許可し、特定のバックアップに対する DeleteBackup を拒否する
<a name="access-policy-example5"></a>

以下の IAM ポリシーは、`RestoreTableFromBackup` および `DescribeBackup` アクションの許可を付与し、特定のバックアップリソースに対する `DeleteBackup` アクションを拒否します。

------
#### [ 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"
        }
    ]
}
```

------

**重要**  
 DynamoDB RestoreTableFromBackup アクセス許可はソースバックアップに必要であり、復元機能にはターゲットテーブルに対する DynamoDB の読み取りおよび書き込みアクセス許可が必要です。  
 RestoreTableToPointInTime アクセス許可はソーステーブルに必要であり、復元機能にはターゲットテーブルに対する DynamoDB の読み取りおよび書き込みアクセス許可が必要です。

## 例 6: 特定のテーブルに対する CreateBackup を許可する
<a name="access-policy-example6"></a>

以下の IAM ポリシーは、`Movies` テーブルに対する `CreateBackup` アクションの許可のみを付与します。

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

****  

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

------

## 例 7: ListBackups を許可する
<a name="access-policy-example7"></a>

以下の IAM ポリシーは、`ListBackups` アクションに対する許可を付与します。

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": ["dynamodb:ListBackups"],
            "Resource": "*"
        }
    ]
}
```

------

**重要**  
 テーブル別に `ListBackups` アクションに対する許可を付与することはできません。

## 例 8: AWS Backup 機能へのアクセス許可
<a name="access-policy-example8"></a>

高度な機能を備えたバックアップを完了するための `StartAwsBackupJob` アクションと、そのバックアップを正常に復元するための `dynamodb:RestoreTableFromAwsBackup` アクションに対する API アクセス許可が必要になります。

次の IAM ポリシーでは、高度な機能と復元を使用してバックアップをトリガーするためのアクセス許可を AWS Backup に付与します。また、テーブルが暗号化されている場合、ポリシーは [AWS KMS キー](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": "*"
        }
    ]
}
```

------

## 例 9: 特定のソーステーブルの RestoreTableToPointInTime を拒否する
<a name="access-policy-example9"></a>

以下の IAM ポリシーは、特定のソーステーブルに対する `RestoreTableToPointInTime` アクションの許可を拒否します。

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

****  

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

------

## 例 10: 特定のソーステーブルのすべてのバックアップに対して RestoreTableFromBackup を拒否する
<a name="access-policy-example10"></a>

以下の IAM ポリシーは、特定のソーステーブルのすべてのバックアップに対する `RestoreTableToPointInTime` アクションの許可を拒否します。

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

****  

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

------