Amazon S3 정책 작업 - Amazon Simple Storage Service

Amazon S3 정책 작업

참고

이 페이지에서는 범용 버킷에 대한 Amazon S3 정책 작업에 대해 설명합니다. 디렉터리 버킷에 대한 Amazon S3 정책 작업 관련 자세한 내용은 S3 Express One Zone에 대한 작업 섹션을 참조하세요.

Amazon S3에서는 정책에서 지정할 수 있는 권한 집합을 정의합니다. S3 API 작업을 수행할 권한을 부여하려면 유효한 정책(예: S3 버킷 정책 또는 IAM 자격 증명 기반 정책)을 작성하고 정책의 Action 요소에 해당 작업을 지정해야 합니다. 이러한 작업을 정책 작업이라고 합니다. 다음은 S3 API 작업과 필수 정책 작업 간의 다양한 유형 매핑 관계 유형을 보여줍니다.

  • 이름이 동일한 일대일 매핑. 예를 들어, PutBucketPolicy API 작업을 사용하려면 s3:PutBucketPolicy 정책 작업이 필요합니다.

  • 이름이 다른 일대일 매핑. 예를 들어, ListObjectsV2 API 작업을 사용하려면 s3:ListBucket 정책 작업이 필요합니다.

  • 일대다 매핑. 예를 들어, HeadObject API 작업을 사용하려면 s3:GetObject가 필요합니다. 또한 S3 객체 잠금을 사용하고 객체의 법적 보존 상태 또는 보존 설정을 가져오려는 경우 HeadObject API 작업을 사용하기 전에 해당 s3:GetObjectLegalHold 또는 s3:GetObjectRetention 정책 작업도 필요합니다.

  • 다대일 매핑. 예를 들어, ListObjectsV2 또는 HeadBucket API 작업을 사용하려면 s3:ListBucket 정책 작업이 필요합니다.

유효한 S3 버킷 정책을 작성하려면 Action 요소 외에 Effect, Principal, Resource 요소도 지정해야 합니다. 또한 S3 API 작업을 보다 세밀하게 제어하기 위해 Condition 요소를 지정할 수 있습니다.

유효한 IAM 자격 증명 기반 정책을 작성하려면 Action 요소 외에 Effect, Resource 요소도 지정해야 합니다. 유효한 IAM 자격 증명 기반 정책에는 Principal 요소가 포함되지 않습니다.

Amazon S3 정책 작업, 리소스 및 조건 키의 전체 목록은 서비스 승인 참조에서 Amazon S3에 사용되는 작업, 리소스 및 조건 키를 참조하세요.

정책을 작성할 때는 해당 Amazon S3 정책 작업에 필요한 올바른 리소스 유형을 기반으로 Resource 요소를 지정해야 합니다. 이 페이지는 리소스 유형별로 S3 API 작업에 대한 권한을 분류합니다. 리소스 유형에 대한 자세한 내용은 서비스 승인 참조의 Amazon S3에서 정의한 리소스 유형을 참조하세요. Amazon S3 API 작업의 전체 목록은 Amazon Simple Storage Service API 참조에서 Amazon S3 API Actions를 참조하세요.

버킷 작업은 버킷 리소스 유형에서 작동하는 S3 API 작업입니다. 예를 들면 CreateBucket, ListObjectsV2PutBucketPolicy입니다. 버킷 작업에 대한 S3 정책 작업을 위해서는 버킷 정책 또는 IAM 자격 증명 기반 정책의 Resource 요소가 다음 예시 형식의 S3 버킷 유형 Amazon 리소스 이름(ARN) 식별자여야 합니다.

"Resource": "arn:aws:s3:::DOC-EXAMPLE-BUCKET"

다음 버킷 정책은 12345678901 계정을 가진 사용자 Akua에게 ListObjectsV2 API 작업을 수행하고 S3 버킷의 객체를 나열할 수 있는 s3:ListBucket 권한을 부여합니다.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "Allow Akua to list objects in the bucket", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::12345678901:user/Akua" }, "Action": [ "s3:ListBucket" ], "Resource": "arn:aws:s3:::DOC-EXAMPLE-BUCKET" } ] }
액세스 포인트 정책의 버킷 작업

액세스 포인트 정책에 부여된 권한은 기본 버킷이 동일한 권한을 허용하는 경우에만 유효합니다. S3 액세스 포인트를 사용하는 경우, 버킷의 액세스 제어를 액세스 포인트에 위임하거나 액세스 포인트 정책의 동일한 권한을 기본 버킷 정책에 추가해야 합니다. 자세한 내용은 액세스 포인트를 사용하도록 IAM 정책 구성 단원을 참조하십시오. 액세스 포인트 정책에서 버킷 작업을 위한 S3 정책 작업을 위해서는 다음 형식으로 Resource 요소에 대한 accesspoint ARN을 사용해야 합니다.

"Resource": "arn:aws:s3:us-west-2:123456789012:accesspoint/DOC-EXAMPLE-ACCESS-POINT"

다음 액세스 포인트 정책은 12345678901 계정을 가진 사용자 Akua에게 S3 액세스 포인트 DOC-EXAMPLE-ACCESS-POINT를 통해 ListObjectsV2 API 작업을 수행하여 액세스 포인트의 관련 버킷에 있는 객체를 나열할 수 있는 s3:ListBucket 권한을 부여합니다.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "Allow Akua to list objects in the bucket through access point", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::12345678901:user/Akua" }, "Action": [ "s3:ListBucket" ], "Resource": "arn:aws:s3:us-west-2:123456789012:accesspoint/DOC-EXAMPLE-ACCESS-POINT" } ] }
참고

S3 액세스 포인트에서 모든 버킷 작업을 지원하는 것은 아닙니다. 자세한 내용은 S3 작업과의 액세스 포인트 호환성 단원을 참조하십시오.

객체 작업은 객체 리소스 유형에 따라 작동하는 S3 API 작업입니다. 예를 들면 GetObject, PutObjectDeleteObject입니다. 객체 작업에 대한 S3 정책 작업을 위해서는 정책의 Resource 요소가 다음 예시 형식의 S3 객체 ARN이어야 합니다.

"Resource": "arn:aws:s3:::DOC-EXAMPLE-BUCKET/*"
"Resource": "arn:aws:s3:::DOC-EXAMPLE-BUCKET/prefix/*"
참고

이전 예시에서 볼 수 있듯이 객체 ARN에는 버킷 이름 뒤에 슬래시가 있어야 합니다.

다음 버킷 정책은 12345678901 계정을 가진 사용자 Akua에게 PutObject API 작업을 수행하고 S3 버킷에 객체를 업로드할 수 있는 s3:PutObject 권한을 부여합니다.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "Allow Akua to upload objects", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::12345678901:user/Akua" }, "Action": [ "s3:PutObject" ], "Resource": "arn:aws:s3:::DOC-EXAMPLE-BUCKET/*" } ] }
액세스 포인트 정책의 버킷 작업

S3 액세스 포인트를 사용하여 객체 작업에 대한 액세스를 제어하는 경우 액세스 포인트 정책을 사용할 수 있습니다. 액세스 포인트 정책을 사용할 때 객체 작업을 위한 S3 정책 작업을 위해서는 arn:aws:s3:region:account-id:accesspoint/access-point-name/object/resource 형식으로 Resource 요소에 대한 accesspoint ARN을 사용해야 합니다. 액세스 포인트를 사용하는 객체 작업의 경우 Resource 요소에서 전체 액세스 포인트 ARN 뒤에 /object/ 값을 포함해야 합니다. 여기 몇 가지 예가 있습니다.

"Resource": "arn:aws:s3:us-west-2:123456789012:accesspoint/DOC-EXAMPLE-ACCESS-POINT/object/*"
"Resource": "arn:aws:s3:us-west-2:123456789012:accesspoint/DOC-EXAMPLE-ACCESS-POINT/object/prefix/*"

다음 액세스 포인트 정책은 12345678901 계정을 가진 사용자 Akua에게 액세스 포인트 DOC-EXAMPLE-ACCESS-POINT를 통해 액세스 포인트의 관련 버킷에 있는 모든 객체에 GetObject API 작업을 수행할 수 있는 s3:GetObject 권한을 부여합니다.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "Allow Akua to get objects through access point", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::12345678901:user/Akua" }, "Action": [ "s3:GetObject" ], "Resource": "arn:aws:s3:us-west-2:123456789012:accesspoint/DOC-EXAMPLE-ACCESS-POINT/object/*" } ] }
참고

S3 액세스 포인트에서 모든 객체 작업을 지원하는 것은 아닙니다. 자세한 내용은 S3 작업과의 액세스 포인트 호환성 단원을 참조하십시오.

액세스 포인트 작업은 accesspoint 리소스 유형에서 작동하는 S3 API 작업입니다. 예를 들면 CreateAccessPoint, DeleteAccessPointGetAccessPointPolicy입니다. 액세스 포인트 작업에 대한 S3 정책 작업은 IAM 자격 증명 기반 정책에서만 사용할 수 있으며 버킷 정책이나 액세스 포인트 정책에서는 사용할 수 없습니다. 액세스 포인트 작업을 위해서는 Resource 요소가 다음 예시 형식의 accesspoint ARN이어야 합니다.

"Resource": "arn:aws:s3:us-west-2:123456789012:accesspoint/DOC-EXAMPLE-ACCESS-POINT"

다음 IAM 자격 증명 기반 정책은 S3 액세스 포인트 DOC-EXAMPLE-ACCESS-POINTGetAccessPointPolicy API 작업을 수행할 수 있는 s3:GetAccessPointPolicy 권한을 부여합니다.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "Grant permission to retrieve the access point policy of access point DOC-EXAMPLE-ACCESS-POINT", "Effect": "Allow", "Action": [ "s3:GetAccessPointPolicy" ], "Resource": "arn:aws:s3:*:123456789012:access point/DOC-EXAMPLE-ACCESS-POINT" } ] }

액세스 포인트를 사용하는 경우 버킷 작업에 대한 액세스를 제어하려면 액세스 포인트 정책의 버킷 작업 섹션을, 객체 작업에 대한 액세스를 제어하려면 액세스 포인트 정책의 버킷 작업 섹션을 참조하세요. 액세스 포인트 정책을 구성하는 방법에 대한 자세한 내용은 액세스 포인트를 사용하도록 IAM 정책 구성 섹션을 참조하세요.

객체 Lambda 액세스 포인트 작업용 정책을 구성하는 방법에 대한 자세한 내용은 객체 Lambda 액세스 포인트에 대한 IAM 정책 구성 섹션을 참조하세요.

다중 리전 액세스 포인트 작업용 정책을 구성하는 방법에 대한 자세한 내용은 다중 리전 액세스 포인트 정책 예시 섹션을 참조하세요.

(배치 작업) 작업은 작업 리소스 유형에서 작동하는 S3 API 작업입니다. 예: DescribeJobCreateJob. 작업에 대한 S3 정책 작업은 IAM 자격 증명 기반 정책에서만 사용할 수 있으며 버킷 정책에서는 사용할 수 없습니다. 또한 작업을 위해서는 IAM 자격 증명 기반 정책의 Resource 요소가 다음 예시 형식의 job ARN이어야 합니다.

"Resource": "arn:aws:s3:*:123456789012:job/*"

다음 IAM 자격 증명 기반 정책은 S3 배치 작업 DOC-EXAMPLE-JOBDescribeJob API 작업을 수행할 수 있는 s3:DescribeJob 권한을 부여합니다.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "Allow describing the Batch operation job DOC-EXAMPLE-JOB", "Effect": "Allow", "Action": [ "s3:DescribeJob" ], "Resource": "arn:aws:s3:*:123456789012:job/DOC-EXAMPLE-JOB" } ] }

S3 Storage Lens 구성 작업을 구성하는 방법에 대한 자세한 내용은 Amazon S3 스토리지 렌즈 권한 섹션을 참조하세요.

계정 작업은 계정 수준에서 작동하는 S3 API 작업입니다. 예: GetPublicAccessBlock(계정의 경우). 계정은 Amazon S3에서 정의한 리소스 유형이 아닙니다. 계정 작업에 대한 S3 정책 작업은 IAM 자격 증명 기반 정책에서만 사용할 수 있으며 버킷 정책에서는 사용할 수 없습니다. 또한 계정 작업을 위해서는 IAM 자격 증명 기반 정책의 Resource 요소가 "*"여야 합니다.

다음 IAM 자격 증명 기반 정책은 계정 수준의 GetPublicAccessBlock API 작업을 수행하고 계정 수준의 퍼블릭 액세스 차단 설정을 검색할 수 있는 s3:GetAccountPublicAccessBlock 권한을 부여합니다.

{ "Version":"2012-10-17", "Statement":[ { "Sid":"Allow retrieving the account-level Public Access Block settings", "Effect":"Allow", "Action":[ "s3:GetAccountPublicAccessBlock" ], "Resource":[ "*" ] } ] }