디렉터리 버킷용 액세스 포인트 사용을 위한 IAM 정책 구성

디렉터리 버킷용 액세스 포인트 사용을 위한 IAM 정책 구성 (Configuring IAM policies for using access points for directory buckets)

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

출처: 문서

본문

중요

디렉터리 버킷에 액세스 포인트를 추가해도 버킷 이름으로 버킷에 직접 접근할 때의 버킷 동작은 바뀌지 않아요. 버킷에 대한 기존 작업은 모두 이전처럼 계속 동작해요. 액세스 포인트 정책이나 액세스 포인트 범위에 포함한 제한은 그 액세스 포인트를 통해 이루어지는 요청에만 적용돼요.

IAM 리소스 정책을 사용할 때는 정책을 저장하기 전에 AWS Identity and Access Management Access Analyzer의 보안 경고, 오류, 일반 경고, 제안을 해결하세요. IAM Access Analyzer는 IAM 정책 문법과 모범 사례에 대해 정책을 검증하는 정책 검사를 실행해요. 이 검사는 결과를 생성하고, 기능하며 보안 모범 사례를 따르는 정책을 작성하는 데 도움이 되는 권장 사항을 제공해요.

IAM Access Analyzer로 정책을 검증하는 방법에 대해 자세히 알아보려면 IAM User Guide의 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 – 액세스 포인트를 VPC 네트워크 원점으로 제한하는 서비스 제어 정책

다음 서비스 제어 정책(SCP)은 모든 새 액세스 포인트가 가상 사설 클라우드(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": [
        {
            "Sid": "DenyCreateSessionFromNonVPC",
            "Principal": "*",
            "Action": "s3express:CreateSession",
            "Effect": "Deny",
            "Resource": "arn:aws:s3express:us-east-1:111122223333:bucket/amzn-s3-demo-bucket--usw2-az1--x-s3"
        }
    ]
}

조건 키 (Condition keys)

디렉터리 버킷용 액세스 포인트에는 IAM 정책에서 리소스에 대한 접근을 제어하는 데 사용할 수 있는 조건 키가 있어요. 다음 조건 키들은 IAM 정책의 일부만 나타내요. 전체 정책 예제는 디렉터리 버킷용 액세스 포인트 정책 예제, 액세스 포인트로 액세스 제어 위임, 교차 계정 액세스 포인트 권한 부여 를 참고하세요.

이 예제는 액세스 포인트의 Amazon Resource Name(ARN)으로 접근을 필터링하며, region 리전에 있는 AWS 계정 111122223333의 모든 액세스 포인트와 일치해요.

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

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

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

이 예제는 Internet 또는 VPC인 네트워크 원점을 일치시키는 데 사용할 수 있는 문자열 연산자를 보여줘요. 다음 예제는 VPC 원점의 액세스 포인트만 일치해요.

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

s3express:Permissions를 사용해 액세스 포인트 범위에서 특정 API 작업에 대한 접근을 제한할 수 있어요. 다음 API 작업이 지원돼요.

  • PutObject
  • GetObject
  • DeleteObject
  • ListBucket (ListObjectsV2에 필요)
  • GetObjectAttributes
  • AbortMultipartUpload
  • ListBucketMultipartUploads
  • ListMultipartUploadParts

참고

다중 값 조건 키를 사용할 때는 Allow 문에 ForAllValues를, Deny 문에 ForAnyValue를 사용하는 것을 권장해요. 자세한 내용은 IAM User Guide의 다중 값 컨텍스트 키 를 참고하세요.

Amazon S3와 함께 조건 키를 사용하는 방법에 대한 자세한 내용은 Service Authorization Reference의 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 계정이 소유한 액세스 포인트에서 버킷에 대한 GET 및 LIST 요청을 허용해요.

Bucket ARN을 버킷의 ARN으로 바꾸세요.

다른 AWS 계정에 권한을 위임하는 예제 버킷 정책

{
    "Version":"2012-10-17",
    "Statement" : [
    {
        "Sid": "AllowCreateSessionForDirectoryBucket",
        "Effect": "Allow",
        "Principal" : { "AWS": "*" },
        "Action" : "s3express:CreateSession",
        "Resource" : [ "arn:aws:s3express:us-west-2:111122223333:bucket/amzn-s3-demo-bucket--usw2-az1--x-s3" ],
        "Condition": {
            "ForAllValues:StringEquals": {
                "s3express:Permissions": [
                    "GetObject",
                    "ListBucket"
                ]
            }
        }
    }]
}                
            

더 알아보기 (Learn more)