Amazon S3 배치 작업에 대한 권한 부여 - Amazon Simple Storage Service

Amazon S3 배치 작업에 대한 권한 부여

S3 배치 작업을 생성 및 실행하기 전에, 필요한 권한을 부여해야 합니다. Amazon S3 배치 작업을 생성하려면 s3:CreateJob 사용자 권한이 필요합니다. 작업을 생성한 동일한 엔터티에는 작업에 대해 지정된 AWS Identity and Access Management(IAM) 역할을 배치 작업에 전달하는 iam:PassRole 권한도 있어야 합니다.

IAM 리소스 지정에 대한 일반적인 정보는 IAM 사용 설명서IAM JSON 정책인 리소스 요소를 참조하세요. 다음 섹션에서는 IAM 역할 생성 및 정책 연결에 대한 정보를 제공합니다.

S3 배치 작업 IAM 역할 생성

Amazon S3에는 사용자를 대신해 S3 배치 작업을 수행할 권한이 있어야 합니다. AWS Identity and Access Management(IAM) 역할을 통해 이러한 권한을 부여합니다. 이 섹션에서는 IAM 역할을 생성할 때 사용하는 신뢰 및 권한 정책의 예제를 제공합니다. 자세한 내용은 IAM 사용 설명서에서 IAM 역할을 참조하세요. 예제는 작업 태그를 사용하여 S3 배치 작업에 대한 권한 제어S3 배치 작업을 사용하여 객체 복사 섹션을 참조하세요.

IAM 정책에서 조건 키를 사용하여 S3 배치 작업 건에 대한 액세스 권한을 필터링할 수도 있습니다. Amazon S3에 사용되는 조건 키의 전체 목록과 자세한 내용은 서비스 승인 참조에서 Amazon S3에 사용되는 작업, 리소스 및 조건 키를 참조하세요.

다음 동영상에는 AWS Management Console을 사용하여 배치 작업에 대한 IAM 권한을 설정하는 방법이 포함되어 있습니다.

신뢰 정책

S3 배치 작업 서비스 보안 주체가 IAM 역할을 맡도록 허용하려면 다음 신뢰 정책을 역할에 연결합니다.

{ "Version":"2012-10-17", "Statement":[ { "Effect":"Allow", "Principal":{ "Service":"batchoperations.s3.amazonaws.com" }, "Action":"sts:AssumeRole" } ] }

권한 연결 정책

작업(operation) 유형에 따라 다음 정책 중 하나를 연결할 수 있습니다.

사용 권한을 구성하기 전에 다음 사항에 유의하세요.

  • 작업(operation)과 상관없이 Amazon S3는 S3 버킷에서 매니페스트 객체를 읽고 선택적으로 버킷에 보고서를 쓸 수 있는 권한이 필요합니다. 따라서 다음의 모든 정책은 이러한 권한을 포함합니다.

  • Amazon S3 인벤토리 보고서 매니페스트의 경우 S3 배치 작업에서는 manifest.json 객체 및 연결된 모든 CSV 데이터 파일을 읽을 수 있는 권한이 필요합니다.

  • 객체의 버전 ID를 지정할 때는 s3:GetObjectVersion과 같은 버전 관련 권한만 필요합니다.

  • 암호화된 객체에 대해 S3 배치 작업을 실행하는 경우 IAM 역할에도 해당 객체를 암호화하는 데 사용되는 AWS KMS 키에 대한 액세스 권한이 있어야 합니다.

  • AWS KMS로 암호화된 인벤토리 보고서 매니페스트를 제출하는 경우 IAM 정책에 manifest.json 객체 및 연결된 모든 CSV 데이터 파일에 대한 "kms:Decrypt""kms:GenerateDataKey" 권한이 포함되어 있어야 합니다.

객체 복사: PutObject

{ "Version": "2012-10-17", "Statement": [ { "Action": [ "s3:PutObject", "s3:PutObjectAcl", "s3:PutObjectTagging" ], "Effect": "Allow", "Resource": "arn:aws:s3:::DestinationBucket/*" }, { "Action": [ "s3:GetObject", "s3:GetObjectAcl", "s3:GetObjectTagging", "s3:ListBucket" ], "Effect": "Allow", "Resource": [ "arn:aws:s3:::SourceBucket", "arn:aws:s3:::SourceBucket/*" ] }, { "Effect": "Allow", "Action": [ "s3:GetObject", "s3:GetObjectVersion" ], "Resource": [ "arn:aws:s3:::ManifestBucket/*" ] }, { "Effect": "Allow", "Action": [ "s3:PutObject" ], "Resource": [ "arn:aws:s3:::ReportBucket/*" ] } ] }

객체 태그 지정 교체: PutObjectTagging

{ "Version":"2012-10-17", "Statement":[ { "Effect":"Allow", "Action":[ "s3:PutObjectTagging", "s3:PutObjectVersionTagging" ], "Resource": "arn:aws:s3:::TargetResource/*" }, { "Effect": "Allow", "Action": [ "s3:GetObject", "s3:GetObjectVersion" ], "Resource": [ "arn:aws:s3:::ManifestBucket/*" ] }, { "Effect":"Allow", "Action":[ "s3:PutObject" ], "Resource":[ "arn:aws:s3:::ReportBucket/*" ] } ] }

객체 태그 지정 삭제: DeleteObjectTagging

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:DeleteObjectTagging", "s3:DeleteObjectVersionTagging" ], "Resource": [ "arn:aws:s3:::TargetResource/*" ] }, { "Effect": "Allow", "Action": [ "s3:GetObject", "s3:GetObjectVersion" ], "Resource": [ "arn:aws:s3:::ManifestBucket/*" ] }, { "Effect": "Allow", "Action": [ "s3:PutObject" ], "Resource": [ "arn:aws:s3:::ReportBucket/*" ] } ] }

액세스 제어 목록 교체: PutObjectAcl

{ "Version":"2012-10-17", "Statement":[ { "Effect":"Allow", "Action":[ "s3:PutObjectAcl", "s3:PutObjectVersionAcl" ], "Resource": "arn:aws:s3:::TargetResource/*" }, { "Effect": "Allow", "Action": [ "s3:GetObject", "s3:GetObjectVersion" ], "Resource": [ "arn:aws:s3:::ManifestBucket/*" ] }, { "Effect":"Allow", "Action":[ "s3:PutObject" ], "Resource":[ "arn:aws:s3:::ReportBucket/*" ] } ] }

객체 복원: RestoreObject

{ "Version":"2012-10-17", "Statement":[ { "Effect":"Allow", "Action":[ "s3:RestoreObject" ], "Resource": "arn:aws:s3:::TargetResource/*" }, { "Effect": "Allow", "Action": [ "s3:GetObject", "s3:GetObjectVersion" ], "Resource": [ "arn:aws:s3:::ManifestBucket/*" ] }, { "Effect":"Allow", "Action":[ "s3:PutObject" ], "Resource":[ "arn:aws:s3:::ReportBucket/*" ] } ] }

객체 잠금 보존 적용: PutObjectRetention

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "s3:GetBucketObjectLockConfiguration", "Resource": [ "arn:aws:s3:::TargetResource" ] }, { "Effect": "Allow", "Action": [ "s3:PutObjectRetention", "s3:BypassGovernanceRetention" ], "Resource": [ "arn:aws:s3:::TargetResource/*" ] }, { "Effect": "Allow", "Action": [ "s3:GetObject", "s3:GetObjectVersion" ], "Resource": [ "arn:aws:s3:::ManifestBucket/*" ] }, { "Effect": "Allow", "Action": [ "s3:PutObject" ], "Resource": [ "arn:aws:s3:::ReportBucket/*" ] } ] }
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "s3:GetBucketObjectLockConfiguration", "Resource": [ "arn:aws:s3:::TargetResource" ] }, { "Effect": "Allow", "Action": "s3:PutObjectLegalHold", "Resource": [ "arn:aws:s3:::TargetResource/*" ] }, { "Effect": "Allow", "Action": [ "s3:GetObject", "s3:GetObjectVersion" ], "Resource": [ "arn:aws:s3:::ManifestBucket/*" ] }, { "Effect": "Allow", "Action": [ "s3:PutObject" ], "Resource": [ "arn:aws:s3:::ReportBucket/*" ] } ] }

기존 객체 복제: S3 생성 매니페스트를 사용한 InitiateReplication

S3 생성 매니페스트를 사용 및 저장하는 경우 이 정책을 사용합니다. 기존 객체 복제에 배치 작업을 사용하는 것에 대한 자세한 정보는 S3 배치 복제를 사용한 기존 객체 복제 섹션을 참조하세요.

{ "Version":"2012-10-17", "Statement":[ { "Action":[ "s3:InitiateReplication" ], "Effect":"Allow", "Resource":[ "arn:aws:s3:::*** replication source bucket ***/*" ] }, { "Action":[ "s3:GetReplicationConfiguration", "s3:PutInventoryConfiguration" ], "Effect":"Allow", "Resource":[ "arn:aws:s3:::*** replication source bucket ***" ] }, { "Action":[ "s3:GetObject", "s3:GetObjectVersion" ], "Effect":"Allow", "Resource":[ "arn:aws:s3:::*** manifest bucket ***/*" ] }, { "Effect":"Allow", "Action":[ "s3:PutObject" ], "Resource":[ "arn:aws:s3:::*** completion report bucket ****/*", "arn:aws:s3:::*** manifest bucket ****/*" ] } ] }

기존 객체 복제: 사용자자 매니페스트를 사용한 InitiateReplication

사용자 제공 매니페스트를 사용하는 경우 이 정책을 사용합니다. 기존 객체 복제에 배치 작업을 사용하는 것에 대한 자세한 정보는 S3 배치 복제를 사용한 기존 객체 복제 섹션을 참조하세요.

{ "Version":"2012-10-17", "Statement":[ { "Action":[ "s3:InitiateReplication" ], "Effect":"Allow", "Resource":[ "arn:aws:s3:::*** replication source bucket ***/*" ] }, { "Action":[ "s3:GetObject", "s3:GetObjectVersion" ], "Effect":"Allow", "Resource":[ "arn:aws:s3:::*** manifest bucket ***/*" ] }, { "Effect":"Allow", "Action":[ "s3:PutObject" ], "Resource":[ "arn:aws:s3:::*** completion report bucket ****/*" ] } ] }