Amazon S3 조건 키 - Amazon Simple Storage Service

Amazon S3 조건 키

권한 부여 시 액세스 정책 언어를 통해 조건을 지정할 수 있습니다. 정책이 적용되기 위한 조건을 지정하려면 선택적 Condition 요소 또는 Condition 블록을 사용하여 정책이 적용되기 위한 조건을 지정할 수 있습니다. 미리 정의된 AWS 전역 키와 Amazon S3 전용 키를 사용하여 Amazon S3 액세스 정책에서 조건을 지정할 수 있습니다.

Condition 요소에서 요청의 값과 조건을 매칭하기 위해 부울 연산자(equal, less than 등)를 사용하는 식을 작성할 수 있습니다. 예를 들어 객체를 업로드하는 사용자 권한을 부여하는 경우, 버킷 소유자는 다음과 같이 StringEquals 조건을 추가하여 객체가 공개적으로 읽기 가능하도록 요구할 수 있습니다.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "statement1", "Effect": "Allow", "Action": "s3:PutObject", "Resource": [ "arn:aws:s3:::awsexamplebucket1/*" ], "Condition": { "StringEquals": { "s3:x-amz-acl": "public-read" } } } ] }

이 예제에서 Condition 블록은 지정된 키-값 페어 StringEquals에 적용되는 "s3:x-amz-acl":["public-read"] 조건을 지정합니다. 조건을 나타내는 데에 사용할 수 있는 사전 정의된 키 집합이 있습니다. 이 예제에서는 s3:x-amz-acl 조건 키를 사용합니다. 이 조건에서는 사용자에게 모든 PUT Object 요청에 x-amz-acl 값을 가진 public-read 헤더를 포함하도록 요구합니다.

AWS 전역 조건 키

AWS에서는 정책을 지원하는 전체 AWS 서비스에서 지원되는 공통 키 집합을 제공합니다. 이러한 키는 AWS 전역 키라고 하며 접두사 aws:를 사용합니다. AWS 전역 조건 키의 전체 목록은 IAM 사용 설명서사용 가능한 AWS 조건 키를 참조하세요.

Amazon S3에서 AWS 전역 조건 키를 사용할 수 있습니다. 다음 버킷 정책 예제에서는 요청이 특정 범위의 IP 주소(192.0.2.0.*)에서 비롯된 경우 s3:GetObject 작업을 사용하기 위한 인증된 사용자 권한을 허용합니다. 단, IP 주소가 192.0.2.188인 경우는 예외입니다. 조건 블록에서 IpAddressNotIpAddress가 조건에 해당하며 각 조건에는 평가를 위한 키-값 페어가 제공됩니다. 이 예제에서의 키-값 페어는 모두 aws:SourceIp AWS 전역 키를 사용합니다.

참고

조건에 지정된 IPAddressNotIpAddress 키 값은 RFC 4632에 설명된 것과 같은 CIDR 표기법을 사용합니다. 자세한 내용은 http://www.rfc-editor.org/rfc/rfc4632.txt를 참조하세요.

{ "Version": "2012-10-17", "Id": "S3PolicyId1", "Statement": [ { "Sid": "statement1", "Effect": "Allow", "Principal": "*", "Action":"s3:GetObject", "Resource": "arn:aws:s3:::awsexamplebucket1/*", "Condition" : { "IpAddress" : { "aws:SourceIp": "192.0.2.0/24" }, "NotIpAddress" : { "aws:SourceIp": "192.0.2.188/32" } } } ] }

Amazon S3 정책에서 다른 AWS 전역 조건 키를 사용할 수도 있습니다. 예를 들어 VPC 엔드포인트에 대한 버킷 정책에서 aws:SourceVpceaws:SourceVpc 조건 키를 지정할 수 있습니다. 예제는 버킷 정책을 사용하여 VPC 엔드포인트에서 액세스 제어을 참조하세요.

Amazon S3 전용 조건 키

특정 Amazon S3 작업에 Amazon S3 조건 키를 사용할 수 있습니다. 각 조건 키는 API에서 조건이 설정될 수 있도록 허용된 같은 이름의 요청 헤더에 매핑됩니다. Amazon S3 전용 조건 키는 이름이 같은 요청 헤더의 동작을 명령합니다. Amazon S3 전용 조건 키의 전체 목록은 Amazon S3에 사용되는 작업, 리소스 및 조건 키 단원을 참조하세요.

예를 들어 s3:x-amz-acl 권한에 대한 조건 권한을 부여하는 데 사용할 수 있는 조건 키 s3:PutObject은 PUT Object API에서 지원되는 x-amz-acl 요청 헤더의 동작을 정의합니다. s3:VersionId 권한에 대한 조건부 권한을 부여하는 데 사용할 수 있는 조건 키 s3:GetObjectVersion는 GET Object 요청에서 설정한 versionId 쿼리 파라미터의 동작을 정의합니다.

다음 버킷 정책에서는 객체를 공개적으로 읽기 가능하도록 만드는 x-amz-acl 헤더가 요청에 포함된 경우 두 개의 AWS 계정에 대해 s3:PutObject 권한을 허용합니다. Condition 블록에서는 StringEquals 조건을 사용하며 여기에는 평가를 위한 키-값 페어 "s3:x-amz-acl":["public-read"가 제공됩니다. 키-값 페어에서 s3:x-amz-acl은 Amazon S3 전용 키로서, 접두사 s3:로 표시됩니다.

{ "Version":"2012-10-17", "Statement": [ { "Sid":"AddCannedAcl", "Effect":"Allow", "Principal": { "AWS": [ "arn:aws:iam::Account1-ID:root", "arn:aws:iam::Account2-ID:root" ] }, "Action":"s3:PutObject", "Resource": ["arn:aws:s3:::awsexamplebucket1/*"], "Condition": { "StringEquals": { "s3:x-amz-acl":["public-read"] } } } ] }
중요

모든 조건이 전체 작업에 적용되는 것은 아닙니다. 예를 들어 s3:LocationConstraint Amazon S3 권한을 부여하는 정책에는 s3:CreateBucket 조건을 포함하는 것이 가능합니다. 그러나 s3:GetObject 권한을 부여하는 정책에 이 조건을 포함시키는 것은 의미가 없습니다. Amazon S3에서는 Amazon S3 전용 조건을 포함한 이러한 유형의 의미 체계 오류를 테스트할 수 있습니다. 그러나, IAM 사용자에 대해 정책을 만드는 경우 의미 체계상으로 잘못된 Amazon S3 조건을 포함한다 해도, IAM에서 Amazon S3 조건을 검증할 수 없으므로 오류는 보고되지 않습니다.