액세스 포인트를 사용하도록 IAM 정책 구성 - Amazon Simple Storage Service

액세스 포인트를 사용하도록 IAM 정책 구성

Amazon S3 액세스 포인트는 리소스, 사용자 또는 기타 조건별로 액세스 포인트 사용을 제어할 수 있는 AWS Identity and Access Management(IAM) 리소스 정책을 지원합니다. 애플리케이션 또는 사용자가 액세스 포인트를 통해 객체에 액세스할 수 있으려면 액세스 포인트와 기본 버킷 모두에서 요청을 허용해야 합니다.

중요

버킷에 S3 액세스 포인트를 추가해도 기존 버킷 이름이나 ARN을 통해 액세스할 때 버킷의 동작은 변경되지 않습니다. 버킷에 대한 모든 기존 작업은 이전과 같이 계속 작동합니다. 액세스 포인트 정책에 포함시키는 제한은 해당 액세스 포인트를 통해 이루어진 요청에만 적용됩니다.

조건 키

S3 액세스 포인트는 리소스에 대한 액세스를 제어하기 위해 IAM 정책에서 사용할 수 있는 세 가지 새로운 조건 키를 도입합니다.

s3:DataAccessPointArn

액세스 포인트 ARN과 일치시키는 데 사용할 수 있는 문자열입니다. 다음 예제에서는 리전 us-west-2의 AWS 계정 123456789012에 대한 모든 액세스 포인트와 일치합니다.

"Condition" : { "StringLike": { "s3:DataAccessPointArn": "arn:aws:s3:us-west-2:123456789012:accesspoint/*" } }
s3:DataAccessPointAccount

액세스 포인트 소유자의 계정 ID와 일치시키는 데 사용할 수 있는 문자열 연산자입니다. 다음 예제에서는 AWS 계정 123456789012에서 소유한 모든 액세스 포인트와 일치합니다.

"Condition" : { "StringEquals": { "s3:DataAccessPointAccount": "123456789012" } }
s3:AccessPointNetworkOrigin

네트워크 오리진 Internet 또는 VPC와 일치시키는 데 사용할 수 있는 문자열 연산자입니다. 다음 예제에서는 오리진이 VPC인 액세스 포인트와만 일치합니다.

"Condition" : { "StringEquals": { "s3:AccessPointNetworkOrigin": "VPC" } }

Amazon S3에서 조건 키 사용에 대한 자세한 내용은 Amazon S3에 사용되는 작업, 리소스 및 조건 키 단원을 참조하세요.

액세스 포인트에 액세스 제어 위임

버킷에 대한 액세스 제어를 버킷의 액세스 포인트에 위임할 수 있습니다. 다음 예제 버킷 정책은 버킷 소유자의 계정이 소유한 모든 액세스 포인트에 대한 전체 액세스를 허용합니다. 따라서 이 버킷에 대한 모든 액세스는 해당 액세스 포인트에 연결된 정책에 의해 제어됩니다. 버킷에 직접 액세스할 필요가 없는 모든 사용 사례에 대해 이 방법으로 버킷을 구성하는 것이 좋습니다.

예 액세스 포인트에 액세스 제어를 위임하는 버킷 정책

{ "Version": "2012-10-17", "Statement" : [ { "Effect": "Allow", "Principal" : { "AWS": "*" }, "Action" : "*", "Resource" : [ "Bucket ARN", "Bucket ARN/*"], "Condition": { "StringEquals" : { "s3:DataAccessPointAccount" : "Bucket owner's account ID" } } }] }

액세스 포인트 정책 예제

다음 예제에서는 액세스 포인트를 통해 이루어진 요청을 제어하기 위해 IAM 정책을 만드는 방법을 보여줍니다.

참고

액세스 포인트 정책에 부여된 권한은 기본 버킷이 동일한 액세스를 허용하는 경우에만 유효합니다. 다음 두 가지 방법으로 이 작업을 수행할 수 있습니다.

  1. (권장) 액세스 포인트에 액세스 제어 위임에 설명된 대로 버킷의 액세스 제어를 액세스 포인트에 위임합니다.

  2. 액세스 포인트 정책에 포함된 동일한 권한을 기본 버킷의 정책에 추가합니다. 첫 번째 액세스 포인트 정책 예제는 기본 버킷 정책을 수정하여 필요한 액세스를 허용하는 방법을 보여줍니다.

예 액세스 포인트 정책 권한 부여

다음 액세스 포인트 정책은 계정 Alice의 IAM 사용자 123456789012에게 계정 GET의 액세스 포인트 PUT를 통해 접두사 Alice/를 포함하는 my-access-point123456789012 객체에 대한 권한을 부여합니다.

{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::123456789012:user/Alice" }, "Action": ["s3:GetObject", "s3:PutObject"], "Resource": "arn:aws:s3:us-west-2:123456789012:accesspoint/my-access-point/object/Alice/*" }] }
참고

액세스 포인트 정책이 Alice에 대한 액세스 권한을 효과적으로 부여하려면 기본 버킷에서도 Alice에 대해 동일한 액세스를 허용해야 합니다. 액세스 포인트에 액세스 제어 위임에 설명된 대로 버킷의 액세스 제어를 액세스 포인트에 위임할 수 있습니다. 또는 다음 정책을 기본 버킷에 추가하여 Alice에게 필요한 권한을 부여할 수 있습니다. 액세스 포인트와 버킷 정책 간에 Resource 항목이 다릅니다.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::123456789012:user/Alice" }, "Action": ["s3:GetObject", "s3:PutObject"], "Resource": "arn:aws:s3:::awsexamplebucket1/Alice/*" }] }

예 태그 조건이 있는 액세스 포인트 정책

다음 액세스 포인트 정책은 계정 123456789012의 IAM 사용자 Bob에게 태그 키 datafinance 값으로 설정된 계정 123456789012의 액세스 포인트 my-access-point를 통해 GET 객체에 대한 권한을 부여합니다.

{ "Version":"2012-10-17", "Statement": [ { "Effect":"Allow", "Principal" : { "AWS": "arn:aws:iam::123456789012:user/Bob" }, "Action":"s3:GetObject", "Resource" : "arn:aws:s3:us-west-2:123456789012:accesspoint/my-access-point/object/*", "Condition" : { "StringEquals": { "s3:ExistingObjectTag/data": "finance" } } }] }

예 버킷 목록 조회를 허용하는 액세스 포인트 정책

다음 액세스 포인트 정책은 계정 123456789012의 IAM 사용자 Charles가 계정 123456789012의 버킷 기본 액세스 포인트 my-access-point에 포함된 객체를 볼 수 있는 권한을 허용합니다.

{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::123456789012:user/Charles" }, "Action": "s3:ListBucket", "Resource": "arn:aws:s3:us-west-2:123456789012:accesspoint/my-access-point" }] }

예 서비스 제어 정책

다음 서비스 제어 정책에서는 VPC 네트워크 오리진을 사용하여 모든 새 액세스 포인트를 생성해야 합니다. 이 정책을 적용하면 조직의 사용자가 인터넷에서 액세스할 수 있는 새 액세스 포인트를 생성할 수 없습니다.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Deny", "Principal": "*", "Action": "s3:CreateAccessPoint", "Resource": "*", "Condition": { "StringNotEquals": { "s3:AccessPointNetworkOrigin": "VPC" } } }] }

예 S3 작업을 VPC 네트워크 오리진으로 제한하는 버킷 정책

다음 버킷 정책은 버킷 examplebucket에 대한 모든 S3 객체 작업에 대한 액세스를 네트워크 오리진이 VPC인 액세스 포인트로 제한합니다.

중요

이 예제와 같은 설명을 사용하기 전에 교차 리전 복제와 같이 액세스 포인트에서 지원하지 않는 기능을 사용할 필요가 없습니다.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Deny", "Principal": "*", "Action": [ "s3:AbortMultipartUpload", "s3:BypassGovernanceRetention", "s3:DeleteObject", "s3:DeleteObjectTagging", "s3:DeleteObjectVersion", "s3:DeleteObjectVersionTagging", "s3:GetObject", "s3:GetObjectAcl", "s3:GetObjectLegalHold", "s3:GetObjectRetention", "s3:GetObjectTagging", "s3:GetObjectVersion", "s3:GetObjectVersionAcl", "s3:GetObjectVersionTagging", "s3:ListMultipartUploadParts", "s3:PutObject", "s3:PutObjectAcl", "s3:PutObjectLegalHold", "s3:PutObjectRetention", "s3:PutObjectTagging", "s3:PutObjectVersionAcl", "s3:PutObjectVersionTagging", "s3:RestoreObject" ], "Resource": "arn:aws:s3:::examplebucket/*", "Condition": { "StringNotEquals": { "s3:AccessPointNetworkOrigin": "VPC" } } } ] }