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

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 엔드포인트에서 액세스 제어 섹션을 참조하십시오.

참고

일부 AWS 전역 조건 키의 경우, 특정 리소스 유형만 지원됩니다. 따라서 Amazon S3가 사용하려는 전역 조건 키 및 리소스 유형을 지원하는지 아니면 Amazon S3 관련 조건 키를 대신 사용해야 하는지 확인하십시오. Amazon S3에 지원되는 리소스 유형과 조건 키의 전체 목록은 서비스 승인 참조에서 Amazon S3에 사용되는 작업, 리소스 및 조건 키를 참조하세요.

Amazon S3 전용 조건 키

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

예를 들어 s3:PutObject 권한에 대한 조건 권한을 부여하는 데 사용할 수 있는 조건 키 s3:x-amz-acl은 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:CreateBucket Amazon S3 권한을 부여하는 정책에는 s3:LocationConstraint 조건을 포함하는 것이 가능합니다. 그러나 s3:GetObject 권한을 부여하는 정책에 이 조건을 포함시키는 것은 의미가 없습니다. Amazon S3에서는 Amazon S3 전용 조건을 포함한 이러한 유형의 의미 체계 오류를 테스트할 수 있습니다. 그러나, IAM 사용자 또는 역할에 대해 정책을 만드는 경우 의미 체계상으로 잘못된 Amazon S3 조건을 포함한다 해도, IAM에서 Amazon S3 조건을 검증할 수 없으므로 오류는 보고되지 않습니다.