배치 작업에 대한 권한 부여
S3 배치 작업을 생성 및 실행하기 전에, 필요한 권한을 부여해야 합니다. Amazon S3 배치 작업을 생성하려면 s3:CreateJob
사용자 권한이 필요합니다. 작업을 생성한 동일한 엔터티에는 작업에 대해 지정된 AWS Identity and Access Management(IAM) 역할을 Batch Operations에 전달하는 iam:PassRole
권한도 있어야 합니다.
IAM 리소스 지정에 대한 일반적인 정보는 IAM 사용 설명서의 IAM JSON 정책인 리소스 요소를 참조하세요. 다음 섹션에서는 IAM 역할 생성 및 정책 연결에 대한 정보를 제공합니다.
S3 배치 작업 IAM 역할 생성
Amazon S3에는 사용자를 대신해 S3 배치 작업을 수행할 권한이 있어야 합니다. AWS Identity and Access Management(IAM) 역할을 통해 이러한 권한을 부여합니다. 이 섹션에서는 IAM 역할을 생성할 때 사용하는 신뢰 및 권한 정책의 예제를 제공합니다. 자세한 내용은 IAM 사용 설명서에서 IAM 역할을 참조하세요. 예제는 작업 태그를 사용하여 Batch Operations에 대한 권한 제어 및 S3 배치 작업을 사용하여 객체 복사 섹션을 참조하세요.
IAM 정책에서 조건 키를 사용하여 S3 배치 작업 건에 대한 액세스 권한을 필터링할 수도 있습니다. Amazon S3에 사용되는 조건 키의 전체 목록과 자세한 내용은 서비스 승인 참조에서 Amazon S3에 사용되는 작업, 리소스 및 조건 키를 참조하세요.
S3 리소스 유형별 S3 API 작업 권한에 대한 자세한 내용은 Amazon S3 API 작업에 필요한 권한 섹션을 참조하세요.
다음 동영상에는 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"
권한이 포함되어 있어야 합니다. 액세스 제어 목록(ACL)이 활성화되어 있고 다른 AWS 계정에 있는 버킷의 매니페스트를 Batch Operations 작업에서 생성하는 경우, 배치 작업에 대해 구성된 IAM 역할의 IAM 정책에서
s3:PutObjectAcl
권한을 부여해야 합니다. 이 권한을 포함하지 않은 경우 배치 작업은Error occurred when preparing manifest: Failed to write manifest
오류와 함께 실패합니다.
객체 복사: PutObject
{ "Version": "2012-10-17", "Statement": [ { "Action": [ "s3:PutObject", "s3:PutObjectAcl", "s3:PutObjectTagging" ], "Effect": "Allow", "Resource": "arn:aws:s3:::
amzn-s3-demo-destination-bucket
/*" }, { "Action": [ "s3:GetObject", "s3:GetObjectAcl", "s3:GetObjectTagging", "s3:ListBucket" ], "Effect": "Allow", "Resource": [ "arn:aws:s3:::amzn-s3-demo-source-bucket
", "arn:aws:s3:::amzn-s3-demo-source-bucket
/*" ] }, { "Effect": "Allow", "Action": [ "s3:GetObject", "s3:GetObjectVersion" ], "Resource": [ "arn:aws:s3:::amzn-s3-demo-manifest-bucket
/*" ] }, { "Effect": "Allow", "Action": [ "s3:PutObject" ], "Resource": [ "arn:aws:s3:::amzn-s3-demo-completion-report-bucket
/*" ] } ] }
객체 태그 지정 대체: PutObjectTagging
{ "Version":"2012-10-17", "Statement":[ { "Effect":"Allow", "Action":[ "s3:PutObjectTagging", "s3:PutObjectVersionTagging" ], "Resource": "arn:aws:s3:::
amzn-s3-demo-destination-bucket
/*" }, { "Effect": "Allow", "Action": [ "s3:GetObject", "s3:GetObjectVersion" ], "Resource": [ "arn:aws:s3:::amzn-s3-demo-manifest-bucket
/*" ] }, { "Effect":"Allow", "Action":[ "s3:PutObject" ], "Resource":[ "arn:aws:s3:::amzn-s3-demo-completion-report-bucket
/*" ] } ] }
객체 태그 지정 삭제: DeleteObjectTagging
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:DeleteObjectTagging", "s3:DeleteObjectVersionTagging" ], "Resource": [ "arn:aws:s3:::
amzn-s3-demo-destination-bucket
/*" ] }, { "Effect": "Allow", "Action": [ "s3:GetObject", "s3:GetObjectVersion" ], "Resource": [ "arn:aws:s3:::amzn-s3-demo-manifest-bucket
/*" ] }, { "Effect": "Allow", "Action": [ "s3:PutObject" ], "Resource": [ "arn:aws:s3:::amzn-s3-demo-completion-report-bucket
/*" ] } ] }
액세스 제어 목록 대체: PutObjectAcl
{ "Version":"2012-10-17", "Statement":[ { "Effect":"Allow", "Action":[ "s3:PutObjectAcl", "s3:PutObjectVersionAcl" ], "Resource": "arn:aws:s3:::
amzn-s3-demo-destination-bucket
/*" }, { "Effect": "Allow", "Action": [ "s3:GetObject", "s3:GetObjectVersion" ], "Resource": [ "arn:aws:s3:::amzn-s3-demo-manifest-bucket
/*" ] }, { "Effect":"Allow", "Action":[ "s3:PutObject" ], "Resource":[ "arn:aws:s3:::amzn-s3-demo-completion-report-bucket
/*" ] } ] }
객체 복원: RestoreObject
{ "Version":"2012-10-17", "Statement":[ { "Effect":"Allow", "Action":[ "s3:RestoreObject" ], "Resource": "arn:aws:s3:::
amzn-s3-demo-destination-bucket
/*" }, { "Effect": "Allow", "Action": [ "s3:GetObject", "s3:GetObjectVersion" ], "Resource": [ "arn:aws:s3:::amzn-s3-demo-manifest-bucket
/*" ] }, { "Effect":"Allow", "Action":[ "s3:PutObject" ], "Resource":[ "arn:aws:s3:::amzn-s3-demo-completion-report-bucket
/*" ] } ] }
Object Lock 보존 적용: PutObjectRetention
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "s3:GetBucketObjectLockConfiguration", "Resource": [ "arn:aws:s3:::
amzn-s3-demo-destination-bucket
" ] }, { "Effect": "Allow", "Action": [ "s3:PutObjectRetention", "s3:BypassGovernanceRetention" ], "Resource": [ "arn:aws:s3:::amzn-s3-demo-destination-bucket
/*" ] }, { "Effect": "Allow", "Action": [ "s3:GetObject", "s3:GetObjectVersion" ], "Resource": [ "arn:aws:s3:::amzn-s3-demo-manifest-bucket
/*" ] }, { "Effect": "Allow", "Action": [ "s3:PutObject" ], "Resource": [ "arn:aws:s3:::amzn-s3-demo-completion-report-bucket
/*" ] } ] }
Object Lock 법적 보존 적용: PutObjectLegalHold
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "s3:GetBucketObjectLockConfiguration", "Resource": [ "arn:aws:s3:::
amzn-s3-demo-destination-bucket
" ] }, { "Effect": "Allow", "Action": "s3:PutObjectLegalHold", "Resource": [ "arn:aws:s3:::amzn-s3-demo-destination-bucket
/*" ] }, { "Effect": "Allow", "Action": [ "s3:GetObject", "s3:GetObjectVersion" ], "Resource": [ "arn:aws:s3:::amzn-s3-demo-manifest-bucket
/*" ] }, { "Effect": "Allow", "Action": [ "s3:PutObject" ], "Resource": [ "arn:aws:s3:::amzn-s3-demo-completion-report-bucket
/*" ] } ] }
기존 객체 복제: S3 생성 매니페스트를 사용한 InitiateReplication
S3 생성 매니페스트를 사용 및 저장하는 경우 이 정책을 사용합니다. 기존 객체 복제에 Batch Operations를 사용하는 방법에 대한 자세한 내용은 배치 복제를 사용한 기존 객체 복제 섹션을 참조하세요.
{ "Version":"2012-10-17", "Statement":[ { "Action":[ "s3:InitiateReplication" ], "Effect":"Allow", "Resource":[ "arn:aws:s3:::
amzn-s3-demo-source-bucket
/*" ] }, { "Action":[ "s3:GetReplicationConfiguration", "s3:PutInventoryConfiguration" ], "Effect":"Allow", "Resource":[ "arn:aws:s3:::amzn-s3-demo-source-bucket
" ] }, { "Action":[ "s3:GetObject", "s3:GetObjectVersion" ], "Effect":"Allow", "Resource":[ "arn:aws:s3:::amzn-s3-demo-manifest-bucket
/*" ] }, { "Effect":"Allow", "Action":[ "s3:PutObject" ], "Resource":[ "arn:aws:s3:::amzn-s3-demo-completion-report-bucket
/*", "arn:aws:s3:::amzn-s3-demo-manifest-bucket
/*" ] } ] }
기존 객체 복제: 사용자 매니페스트를 사용한 InitiateReplication
사용자 제공 매니페스트를 사용하는 경우 이 정책을 사용합니다. 기존 객체 복제에 Batch Operations를 사용하는 방법에 대한 자세한 내용은 배치 복제를 사용한 기존 객체 복제 섹션을 참조하세요.
{ "Version":"2012-10-17", "Statement":[ { "Action":[ "s3:InitiateReplication" ], "Effect":"Allow", "Resource":[ "arn:aws:s3:::
amzn-s3-demo-source-bucket
/*" ] }, { "Action":[ "s3:GetObject", "s3:GetObjectVersion" ], "Effect":"Allow", "Resource":[ "arn:aws:s3:::amzn-s3-demo-manifest-bucket
/*" ] }, { "Effect":"Allow", "Action":[ "s3:PutObject" ], "Resource":[ "arn:aws:s3:::amzn-s3-demo-completion-report-bucket
/*" ] } ] }