디렉터리 버킷의 액세스 포인트를 사용하도록 IAM 정책 구성 - Amazon Simple Storage Service

디렉터리 버킷의 액세스 포인트를 사용하도록 IAM 정책 구성

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

중요

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

IAM 리소스 정책을 사용할 때는 AWS Identity and Access Management Access Analyzer의 보안 경고, 오류, 일반 경고 및 제안 사항을 해결한 후 정책을 저장해야 합니다. IAM Access Analyzer는 정책 확인은 실행하여 IAM 정책 문법모범 사례에 대해 정책을 검증합니다. 이러한 확인은 결과를 생성하고 보안 모범 사례를 준수하고 작동하는 정책을 작성하는 데 도움이 되는 권장 사항을 제공합니다.

IAM Access Analyzer를 사용한 정책 검증에 대한 자세한 내용은 IAM 사용 설명서의 IAM Access Analyzer 정책 검증을 참조하십시오. IAM Access Analyzer에서 반환된 경고, 오류 및 제안 사항 목록을 보려면 IAM Access Analyzer 정책 확인 참조를 참조하십시오.

디렉터리 버킷의 액세스 포인트 정책 예제

다음 액세스 포인트 정책은 디렉터리 버킷에 대한 요청을 제어하는 방법을 보여줍니다. 액세스 포인트 정책에는 ARN 또는 액세스 포인트 ARN이 필요합니다. 액세스 포인트 별칭은 정책에서 지원되지 않습니다. 다음은 액세스 포인트 ARN의 예입니다.

arn:aws:s3express:region:account-id:accesspoint/myaccesspoint--zoneID--xa-s3

액세스 포인트의 세부 정보에서 액세스 포인트 ARN을 볼 수 있습니다. 자세한 내용은 디렉터리 버킷의 액세스 포인트에 대한 세부 정보 보기 섹션을 참조하세요.

참고

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

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

  2. 액세스 포인트 정책에 포함된 동일한 권한을 기본 버킷의 정책에 추가합니다.

예 1 - 액세스 포인트를 VPC 네트워크 오리진으로 제한하는 서비스 제어 정책

다음 서비스 제어 정책에서는 가상 프라이빗 클라우드(VPC) 네트워크 오리진을 사용하여 모든 새 액세스 포인트를 만들어야 합니다. 이 정책을 적용하면 조직의 사용자가 인터넷에서 액세스할 수 있는 액세스 포인트를 만들 수 없습니다.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Deny", "Action": "s3express:CreateAccessPoint", "Resource": "*", "Condition": { "StringNotEquals": { "s3express:AccessPointNetworkOrigin": "VPC" } } } ] }
예 2 - 버킷 액세스를 VPC 네트워크 오리진이 있는 액세스 포인트로 제한하는 액세스 포인트 정책

다음 액세스 포인트 정책은 버킷 amzn-s3-demo-bucket--zoneID--x-s3에 대한 모든 액세스를 VPC 네트워킹 오리진이 있는 액세스 포인트로 제한합니다.

{ "Version": "2012-10-17", "Statement": [ { "Principal": "*", "Action": "s3express:CreateSession", "Effect": "Deny", "Resource": "arn:aws:s3express:region:111122223333:bucket/amzn-s3-demo-bucket--zoneID--x-s3", "Condition": { "StringNotEqualsIfExists": { "s3express:AccessPointNetworkOrigin": "VPC" } } } ] }

조건 키

디렉터리 버킷의 액세스 포인트에는 리소스에 대한 액세스를 제어하기 위해 IAM 정책에서 사용할 수 있는 조건 키가 있습니다. 다음 조건 키는 IAM 정책의 일부만 나타냅니다. 정책 예제를 모두 확인하려면 디렉터리 버킷의 액세스 포인트 정책 예제, 액세스 포인트에 액세스 제어 위임, 크로스 계정 액세스 포인트에 대한 권한 부여 페이지를 참조하십시오.

s3express:DataAccessPointArn

이 예제에서는 액세스 포인트의 Amazon 리소스 이름(ARN)을 기준으로 액세스를 필터링하고 리전 리전에 있는 AWS 계정 111122223333의 모든 액세스 포인트와 일치시키는 방법을 보여줍니다.

"Condition" : { "StringLike": { "s3express:DataAccessPointArn": "arn:aws:s3express:region:111122223333:accesspoint/*" } }
s3express:DataAccessPointAccount

이 예제는 액세스 포인트 소유자의 계정 ID와 일치시키는 데 사용할 수 있는 문자열 연산자를 보여줍니다. 다음 예제는 AWS 계정 111122223333가 소유한 모든 액세스 포인트와 일치합니다.

"Condition" : { "StringEquals": { "s3express:DataAccessPointAccount": "111122223333" } }
s3express:AccessPointNetworkOrigin

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

"Condition" : { "StringEquals": { "s3express:AccessPointNetworkOrigin": "VPC" } }
s3express:Permissions

s3express:Permissions를 사용하여 액세스 포인트 범위 내에서 특정 API 작업에 대한 액세스를 제한할 수 있습니다. 지원되는 API 작업은 다음과 같습니다.

  • PutObject

  • GetObject

  • DeleteObject

  • ListBucket(ListObjectsV2의 경우 필수)

  • GetObjectAttributes

  • AbortMultipartUpload

  • ListBucketMultipartUploads

  • ListMultipartUploadParts

참고

다중 값 조건 키를 사용하는 경우 Allow 문과 함께 ForAllValues를 사용하고 Deny 문과 함께 ForAnyValue를 사용하는 것이 좋습니다. 자세한 내용은 IAM 사용 설명서의Multivalued context keys를 참조하세요.

Amazon S3에서 조건 키를 사용하는 방법에 대한 자세한 내용은 서비스 승인 참조에서 Amazon S3에 사용되는 작업, 리소스 및 조건 키를 참조하세요.

S3 리소스 유형별로 S3 API 작업에 필요한 권한에 대한 자세한 내용은 Amazon S3 API 작업에 필요한 권한 섹션을 참조하세요.

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

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

예 액세스 포인트에 액세스 제어를 위임하는 버킷 정책
{ "Version": "2012-10-17", "Statement" : [ { "Effect": "Allow", "Principal" : { "AWS": "*" }, "Action" : "*", "Resource" : [ "Bucket ARN", "Condition": { "StringEquals" : { "s3express:DataAccessPointAccount" : "Bucket owner's account ID" } } }] }

크로스 계정 액세스 포인트에 대한 권한 부여

다른 계정이 소유한 버킷에 액세스 포인트를 생성하려면 먼저 버킷 이름과 계정 소유자 ID를 지정하여 액세스 포인트를 만들어야 합니다. 그런 다음, 액세스 포인트로부터의 요청을 승인하도록 버킷 정책을 버킷 소유자가 업데이트해야 합니다. 액세스 포인트를 생성하는 것은 액세스 포인트가 버킷 콘텐츠에 대한 액세스를 제공하지 않는다는 점에서 DNS CNAME을 생성하는 것과 유사합니다. 모든 버킷 액세스는 버킷 정책에 의해 제어됩니다. 다음 예제 버킷 정책은 신뢰할 수 있는 AWS 계정이 소유한 액세스 포인트에서 버킷의 GETLIST 요청을 허용합니다.

Bucket ARN을 버킷의 ARN으로 바꿉니다.

예 다른 AWS 계정에 권한을 위임하는 버킷 정책
{ "Version": "2012-10-17", "Statement" : [ { "Effect": "Allow", "Principal" : { "AWS": "*" }, "Action" : "s3express:CreateSession", "Resource" : [ "Bucket ARN" ], "Condition": { "StringEquals" : { "s3express:DataAccessPointAccount": "Access point owner's account ID" }, "ForAllValues:StringEquals": { "s3express:Permissions": [ "GetObject", "ListBucket" ] } } }] }