

# Amazon S3 버킷에 대한 액세스 권한 설정
<a name="aurora-export-snapshot.Setup"></a>

Amazon S3 버킷을 식별한 다음 버킷에 액세스할 수 있는 권한을 스냅샷에 부여합니다.

**Topics**
+ [내보낼 Amazon S3 버킷 식별](#aurora-export-snapshot.SetupBucket)
+ [IAM 역할을 사용하여 Amazon S3 버킷에 대한 액세스 권한 제공](#aurora-export-snapshot.SetupIAMRole)
+ [교차 계정 Amazon S3 버킷 사용하기](#aurora-export-snapshot.Setup.XAcctBucket)
+ [교차 계정 AWS KMS key 사용](#aurora-export-snapshot.CMK)

## 내보낼 Amazon S3 버킷 식별
<a name="aurora-export-snapshot.SetupBucket"></a>

DB 스냅샷을 내보낼 Amazon S3 버킷을 식별합니다. 기존 S3 버킷을 사용하거나 새 S3 버킷을 생성합니다.

**참고**  
내보낼 S3 버킷은 스냅샷과 동일한 AWS 리전에 있어야 합니다.

Amazon S3 버킷 작업에 대한 자세한 내용은 *Amazon Simple Storage Service 사용 설명서*에서 다음을 참조하세요.
+ [S3 버킷에 대한 속성을 보려면 어떻게 해야 합니까?](https://docs.aws.amazon.com/AmazonS3/latest/user-guide/view-bucket-properties.html)
+ [How do I enable default encryption for an Amazon S3 bucket?](https://docs.aws.amazon.com/AmazonS3/latest/user-guide/default-bucket-encryption.html)
+ [S3 버킷을 생성하려면 어떻게 해야 합니까?](https://docs.aws.amazon.com/AmazonS3/latest/user-guide/create-bucket.html)

## IAM 역할을 사용하여 Amazon S3 버킷에 대한 액세스 권한 제공
<a name="aurora-export-snapshot.SetupIAMRole"></a>

DB 스냅샷 데이터를 Amazon S3로 내보내기 전에 스냅샷 내보내기 작업에 Amazon S3 버킷에 대한 쓰기-액세스 권한을 부여하십시오.

이 권한을 부여하려면 버킷에 대한 액세스 권한을 부여하는 IAM 정책을 생성한 다음 IAM 역할을 생성하고 정책을 역할에 연결해야 합니다. 나중에 스냅샷 내보내기 작업에 IAM 역할을 할당할 수 있습니다.

**중요**  
AWS Management Console을 사용하여 스냅샷을 내보내려는 경우 스냅샷을 내보낼 때 IAM 정책 및 역할을 자동으로 생성하도록 선택할 수 있습니다. 지침은 [스냅샷 내보내기 작업 생성](aurora-export-snapshot.Exporting.md) 섹션을 참조하세요.

**DB 스냅샷 작업에 Amazon S3에 대한 액세스 권한을 부여하려면**

1. IAM 정책을 생성합니다. 이 정책은 스냅샷 내보내기 작업에서 Amazon S3 액세스를 허용하는 버킷 및 객체 권한을 제공합니다.

   정책에 다음 필수 작업을 포함하여 Amazon Aurora에서 S3 버킷으로의 파일 전송을 허용합니다.
   + `s3:PutObject*`
   + `s3:GetObject*` 
   + `s3:ListBucket` 
   + `s3:DeleteObject*`
   +  `s3:GetBucketLocation`

   정책에 다음 리소스를 포함하여 버킷에 있는 S3 버킷과 객체를 식별합니다. 다음 리소스 목록은 Amazon S3에 액세스하기 위한 Amazon 리소스 이름(ARN) 형식을 보여 줍니다.
   + `arn:aws:s3:::{{amzn-s3-demo-bucket}}`
   + `arn:aws:s3:::{{amzn-s3-demo-bucket}}/*`

   Amazon Aurora에 대한 IAM 정책을 생성하는 방법에 대한 자세한 내용은 [IAM 데이터베이스 액세스를 위한 IAM 정책 생성 및 사용](UsingWithRDS.IAMDBAuth.IAMPolicy.md) 섹션을 참조하세요. *IAM 사용 설명서*의 [자습서: 첫 번째 고객 관리형 정책 생성 및 연결](https://docs.aws.amazon.com//IAM/latest/UserGuide/tutorial_managed-policies.html)도 참조하세요.

   다음 AWS CLI 명령은 이 옵션으로 `ExportPolicy`라는 IAM 정책을 만듭니다. {{amzn-s3-demo-bucket}}이라는 버킷에 대한 액세스 권한을 부여합니다.
**참고**  
정책을 생성한 후 정책의 ARN을 기록해 둡니다. IAM 역할에 정책을 연결할 때 이후 단계에 ARN이 필요합니다.

   ```
   aws iam create-policy  --policy-name ExportPolicy --policy-document '{
       "Version": "2012-10-17",		 	 	 
       "Statement": [
           {
               "Sid": "ExportPolicy",
               "Effect": "Allow",
               "Action": [
                   "s3:PutObject*",
                   "s3:ListBucket",
                   "s3:GetObject*",
                   "s3:DeleteObject*",
                   "s3:GetBucketLocation"
               ],
               "Resource": [
                   "arn:aws:s3:::{{amzn-s3-demo-bucket}}",
                   "arn:aws:s3:::{{amzn-s3-demo-bucket}}/*"
               ]
           }
       ]
   }'
   ```

1. Aurora가 사용자 대신 이 IAM 역할을 수임하여 Amazon S3 버킷에 액세스할 수 있도록 IAM 역할을 만듭니다. 자세한 내용은 *IAM 사용 설명서*의 [IAM 사용자에게 권한을 위임하기 위한 역할 생성](https://docs.aws.amazon.com//IAM/latest/UserGuide/id_roles_create_for-user.html)을 참조하세요.

   다음 예제에서는 AWS CLI 명령을 사용해 `rds-s3-export-role`이라는 역할을 생성하는 방법을 보여줍니다.

   ```
   aws iam create-role  --role-name rds-s3-export-role  --assume-role-policy-document '{
        "Version": "2012-10-17",		 	 	 
        "Statement": [
          {
            "Effect": "Allow",
            "Principal": {
               "Service": "export.rds.amazonaws.com"
             },
            "Action": "sts:AssumeRole"
          }
        ] 
      }'
   ```

1. 생성한 IAM 역할에 생성한 IAM 정책을 연결합니다.

   다음 AWS CLI 명령은 앞서 생성한 정책을 `rds-s3-export-role`이라는 역할에 연결합니다. `{{your-policy-arn}}`을 이전 단계에서 기록해 둔 정책 ARN으로 바꿉니다.

   ```
   aws iam attach-role-policy  --policy-arn {{your-policy-arn}}  --role-name rds-s3-export-role
   ```

## 교차 계정 Amazon S3 버킷 사용하기
<a name="aurora-export-snapshot.Setup.XAcctBucket"></a>

Amazon S3 버킷 교차 AWS 계정을 사용할 수 있습니다. 교차 계정 버킷을 사용하려면 S3 내보내기에 사용 중인 IAM 역할에 대한 액세스를 허용하는 버킷 정책을 추가합니다. 자세한 내용은 [ 예제 2: 버킷 소유자가 교차 계정 버킷 권한 부여](https://docs.aws.amazon.com/AmazonS3/latest/userguide/example-walkthroughs-managing-access-example2.html)를 참조하세요.버킷 정책을 추가하려면
+ 다음 예에 표시된 대로 버킷에 버킷 정책을 연결합니다.

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

****  

  ```
  {
      "Version":"2012-10-17",		 	 	 
      "Statement": [
          {
              "Effect": "Allow",
              "Principal": {
                  "AWS": "arn:aws:iam::{{123456789012}}:role/Admin"
              },
              "Action": [
                  "s3:PutObject*",
                  "s3:ListBucket",
                  "s3:GetObject*",
                  "s3:DeleteObject*",
                  "s3:GetBucketLocation"
              ],
              "Resource": [
                  "arn:aws:s3:::{{amzn-s3-demo-destination-bucket}}",
                  "arn:aws:s3:::{{amzn-s3-demo-destination-bucket}}/*"
              ]
          }
      ]
  }
  ```

------

## 교차 계정 AWS KMS key 사용
<a name="aurora-export-snapshot.CMK"></a>

Amazon S3 내보내기 암호화를 위해 교차 계정 AWS KMS key를 사용할 수 있습니다. 먼저 로컬 계정에 키 정책을 추가한 다음 외부 계정에 IAM 정책을 추가합니다. 자세한 내용은 [다른 계정의 사용자가 KMS 키를 사용하도록 허용](https://docs.aws.amazon.com/kms/latest/developerguide/key-policy-modifying-external-accounts.html)을 참조하세요.

**교차 계정 KMS 키 사용**

1. 로컬 계정에 키 정책을 추가합니다.

   다음 예는 로컬 계정 123456789012의 권한을 외부 계정 444455556666의 `ExampleRole`과 `ExampleUser`에 부여합니다.

   ```
   {
       "Sid": "Allow an external account to use this KMS key",
       "Effect": "Allow",
       "Principal": {
           "AWS": [
               "arn:aws:iam::444455556666:role/ExampleRole",
               "arn:aws:iam::444455556666:user/ExampleUser"
           ]
       },
       "Action": [
           "kms:Encrypt",
           "kms:Decrypt",
           "kms:ReEncrypt*",
           "kms:GenerateDataKey*",
           "kms:CreateGrant",
           "kms:DescribeKey",
           "kms:RetireGrant"
       ],
       "Resource": "*"
   }
   ```

1. 외부 계정에서 IAM 정책 추가

   다음 IAM 정책 예시는 보안 주체가 계정 123456789012의 KMS 키를 암호화 작업에 사용하도록 허용합니다. 이 권한을 계정 444455556666의 `ExampleRole` 및 `ExampleUser`에 부여하려면 계정에서 [정책을 연결](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_managed-using.html#attach-managed-policy-console)합니다.

   ```
   {
       "Sid": "Allow use of KMS key in account 123456789012",
       "Effect": "Allow",
       "Action": [
           "kms:Encrypt",
           "kms:Decrypt",
           "kms:ReEncrypt*",
           "kms:GenerateDataKey*",
           "kms:CreateGrant",
           "kms:DescribeKey",
           "kms:RetireGrant"
       ],
       "Resource": "arn:aws:kms:us-west-2:123456789012:key/1234abcd-12ab-34cd-56ef-1234567890ab"
   }
   ```