Amazon S3 버킷에 대한 액세스 권한 설정
Amazon S3 버킷을 식별한 다음 버킷에 액세스할 수 있는 권한을 스냅샷에 부여합니다.
주제
내보낼 Amazon S3 버킷 식별
DB 스냅샷을 내보낼 Amazon S3 버킷을 식별합니다. 기존 S3 버킷을 사용하거나 새 S3 버킷을 생성합니다.
참고
내보낼 S3 버킷은 스냅샷과 동일한 AWS 리전에 있어야 합니다.
Amazon S3 버킷 작업에 대한 자세한 내용은 Amazon Simple Storage Service 사용 설명서에서 다음을 참조하세요.
IAM 역할을 사용하여 Amazon S3 버킷에 대한 액세스 권한 제공
DB 스냅샷 데이터를 Amazon S3로 내보내기 전에 스냅샷 내보내기 작업에 Amazon S3 버킷에 대한 쓰기-액세스 권한을 부여하십시오.
이 권한을 부여하려면 버킷에 대한 액세스 권한을 부여하는 IAM 정책을 생성한 다음 IAM 역할을 생성하고 정책을 역할에 연결해야 합니다. 나중에 스냅샷 내보내기 작업에 IAM 역할을 할당할 수 있습니다.
중요
AWS Management Console을 사용하여 스냅샷을 내보내려는 경우 스냅샷을 내보낼 때 IAM 정책 및 역할을 자동으로 생성하도록 선택할 수 있습니다. 지침은 스냅샷 내보내기 작업 생성 단원을 참조하십시오.
DB 스냅샷 작업에 Amazon S3에 대한 액세스 권한을 부여하려면
-
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 정책 생성 및 사용 섹션을 참조하세요. IAM 사용 설명서의 자습서: 첫 번째 고객 관리형 정책 생성 및 연결도 참조하세요.
다음 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
/*" ] } ] }' -
-
Aurora가 사용자 대신 이 IAM 역할을 수임하여 Amazon S3 버킷에 액세스할 수 있도록 IAM 역할을 만듭니다. 자세한 내용은 IAM 사용 설명서의 IAM 사용자에게 권한을 위임하기 위한 역할 생성을 참조하세요.
다음 예제에서는 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" } ] }'
-
생성한 IAM 역할에 생성한 IAM 정책을 연결합니다.
다음 AWS CLI 명령은 앞서 생성한 정책을
rds-s3-export-role
이라는 역할에 연결합니다.
을 이전 단계에서 기록해 둔 정책 ARN으로 바꿉니다.your-policy-arn
aws iam attach-role-policy --policy-arn
your-policy-arn
--role-name rds-s3-export-role
교차 계정 Amazon S3 버킷 사용하기
Amazon S3 버킷 교차 AWS 계정을 사용할 수 있습니다. 교차 계정 버킷을 사용하려면 S3 내보내기에 사용 중인 IAM 역할에 대한 액세스를 허용하는 버킷 정책을 추가합니다. 자세한 내용은 예제 2: 버킷 소유자가 교차 계정 버킷 권한 부여를 참조하세요.
-
다음 예에 표시된 대로 버킷에 버킷 정책을 연결합니다.
{ "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 사용
Amazon S3 내보내기 암호화를 위해 교차 계정 AWS KMS key를 사용할 수 있습니다. 먼저 로컬 계정에 키 정책을 추가한 다음 외부 계정에 IAM 정책을 추가합니다. 자세한 내용은 다른 계정의 사용자가 KMS 키를 사용하도록 허용을 참조하세요.
교차 계정 KMS 키 사용
-
로컬 계정에 키 정책을 추가합니다.
다음 예는 로컬 계정 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": "*" }
-
외부 계정에서 IAM 정책 추가
다음 IAM 정책 예시는 보안 주체가 계정 123456789012의 KMS 키를 암호화 작업에 사용하도록 허용합니다. 이 권한을 계정 444455556666의
ExampleRole
및ExampleUser
에 부여하려면 계정에서 정책을 연결합니다.{ "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" }