

# 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 읽기 및 쓰기 권한이 필요합니다.  
 소스 테이블에는 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 읽기 및 쓰기 권한이 필요합니다.  
 소스 테이블에는 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` 작업에 대한 API 권한이 필요하고 해당 백업을 성공적으로 복원하려면 `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/*"
        }
    ]
}
```

------