일반용 버킷의 S3 액세스 포인트에 태그 사용하기

일반용 버킷의 S3 액세스 포인트에 태그 사용하기 (Using tags with S3 Access Points for general purpose buckets)

AWS 태그는 리소스, 여기서는 Amazon S3 액세스 포인트에 대한 메타데이터를 담는 키-값 쌍이에요. 액세스 포인트를 만들 때 태그를 달거나, 기존 액세스 포인트의 태그를 관리할 수 있어요. 태그에 대한 일반 정보는 비용 할당 또는 속성 기반 접근 제어(ABAC)를 위한 태깅을 참고하세요.

출처: 문서

본문

참고 — 표준 S3 API 요청 요율 외에 액세스 포인트에 태그를 사용하는 데는 추가 요금이 없어요. 자세한 내용은 Amazon S3 요금을 참고하세요.

액세스 포인트에 태그를 사용하는 일반적인 방법

속성 기반 접근 제어(ABAC) 는 접근 권한을 확장하고 액세스 포인트의 태그를 기준으로 접근을 부여할 수 있게 해줘요. Amazon S3에서 ABAC에 대한 자세한 내용은 ABAC에 태그 사용을 참고하세요.

S3 액세스 포인트용 ABAC

Amazon S3 액세스 포인트는 태그를 사용한 속성 기반 접근 제어(ABAC)를 지원해요. AWS 조직, IAM 그리고 액세스 포인트 정책에서 태그 기반 조건 키를 사용하세요. 엔터프라이즈의 경우 Amazon S3의 ABAC는 여러 AWS 계정에 걸친 인가를 지원해요.

IAM 정책에서 다음 전역 조건 키를 사용해 액세스 포인트의 태그를 기준으로 액세스 포인트 접근을 제어할 수 있어요.

  • aws:ResourceTag/key-name — 중요 — aws:ResourceTag 조건 키는 일반용 버킷의 액세스 포인트 ARN을 통해 수행되는 S3 작업에만 사용할 수 있고 기본 액세스 포인트 태그만 다뤄요. 이 키를 사용해 정책에서 지정한 태그 키-값 쌍을 리소스에 연결된 키-값 쌍과 비교해요. 예를 들어 리소스에 Dept 태그 키와 Marketing 값이 연결돼 있을 때만 리소스 접근을 허용하도록 요구할 수 있어요. 자세한 내용은 AWS 리소스 접근 제어를 참고하세요.
  • aws:RequestTag/key-name — 이 키를 사용해 요청에서 전달된 태그 키-값 쌍을 정책에서 지정한 태그 쌍과 비교해요. 예를 들어 요청에 Dept 태그 키가 포함되고 Accounting 값이 있는지 확인할 수 있어요. 자세한 내용은 AWS 요청 중 접근 제어를 참고하세요. 이 조건 키를 사용해 TagResource와 CreateAccessPoint API 작업 중에 전달할 수 있는 태그 키-값 쌍을 제한할 수 있어요.
  • aws:TagKeys — 이 키를 사용해 요청의 태그 키를 정책에서 지정한 키와 비교해요. 태그로 접근을 제어하는 정책을 사용할 때는 aws:TagKeys 조건 키로 허용되는 태그 키를 정의하는 걸 권장해요. 예제 정책과 자세한 내용은 태그 키 기반 접근 제어를 참고하세요. 태그가 있는 액세스 포인트를 만들 수 있어요. CreateAccessPoint API 작업 중 태깅을 허용하려면 s3:TagResource와 s3:CreateAccessPoint 작업을 둘 다 포함하는 정책을 만들어야 해요. 그런 다음 aws:TagKeys 조건 키를 사용해 CreateAccessPoint 요청에서 특정 태그를 사용하도록 강제할 수 있어요.
  • s3:AccessPointTag/tag-key — 이 조건 키를 사용해 태그를 통해 액세스 포인트를 거쳐 특정 데이터에 대한 권한을 부여해요. IAM 정책에서 aws:ResourceTag/tag-key를 사용할 때는 액세스 포인트와 액세스 포인트가 가리키는 버킷 둘 다 인가 중에 고려되므로 같은 태그를 가져야 해요. 액세스 포인트 태그만으로 특히 데이터 접근을 제어하려면 s3:AccessPointTag/tag-key 조건 키를 사용할 수 있어요.

액세스 포인트용 ABAC 정책 예시

Amazon S3 액세스 포인트에 대한 다음 예제 ABAC 정책을 확인해 보세요.

1.1 – 특정 태그로 버킷을 만들거나 수정하는 IAM 정책

이 IAM 정책에서 이 정책을 가진 사용자나 역할은 액세스 포인트 생성 요청에서 액세스 포인트에 태그 키 project와 태그 값 Trinity로 태그를 지정할 때만 액세스 포인트를 만들 수 있어요. 또한 TagResource 요청에 태그 키-값 쌍 project:Trinity가 포함되는 한 기존 액세스 포인트에 태그를 추가하거나 수정할 수도 있어요.

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "CreateAccessPointWithTags",
      "Effect": "Allow",
      "Action": [
        "s3:CreateAccessPoint",
        "s3:TagResource"
      ],
      "Resource": "*",
      "Condition": {
        "StringEquals": {
          "aws:RequestTag/project": [
            "Trinity"
          ]
        }
      }
    }
  ]
}

1.2 – 태그로 액세스 포인트의 작업을 제한하는 액세스 포인트 정책

이 액세스 포인트 정책에서 IAM 보안 주체(사용자와 역할)는 액세스 포인트의 project 태그 값이 보안 주체의 project 태그 값과 일치할 때만 액세스 포인트에서 GetObject 작업을 사용해 작업을 수행할 수 있어요.

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "AllowObjectOperations",
      "Effect": "Allow",
      "Principal": {
        "AWS": "111122223333"
      },
      "Action": "s3:GetObject",
      "Resource": "arn:aws::s3:region:111122223333:accesspoint/my-access-point",
      "Condition": {
        "StringEquals": {
          "aws:ResourceTag/project": "${aws:PrincipalTag/project}"
        }
      }
    }
  ]
}

1.3 – 태깅 거버넌스를 유지하며 기존 리소스의 태그를 수정하는 IAM 정책

이 IAM 정책에서 IAM 보안 주체(사용자 또는 역할)는 액세스 포인트의 project 태그 값이 보안 주체의 project 태그 값과 일치할 때만 액세스 포인트의 태그를 수정할 수 있어요. aws:TagKeys 조건 키에 지정된 project, environment, owner, cost-center 네 가지 태그만 이 액세스 포인트에 허용돼요. 이렇게 하면 태그 거버넌스를 적용하고, 무단 태그 수정을 방지하며, 액세스 포인트 간 태그 스키마를 일관되게 유지할 수 있어요.

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "EnforceTaggingRulesOnModification",
      "Effect": "Allow",
      "Action": [
        "s3:TagResource"
      ],
      "Resource": "arn:aws::s3:region:111122223333:accesspoint/my-access-point",
      "Condition": {
        "StringEquals": {
          "aws:ResourceTag/project": "${aws:PrincipalTag/project}"
        },
        "ForAllValues:StringEquals": {
          "aws:TagKeys": [
            "project",
            "environment",
            "owner",
            "cost-center"
          ]
        }
      }
    }
  ]
}

1.4 – s3:AccessPointTag 조건 키 사용

이 IAM 정책에서 조건 문은 액세스 포인트가 태그 키 Environment와 태그 값 Production을 가지면 버킷의 데이터에 접근을 허용해요.

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "AllowAccessToSpecificAccessPoint",
      "Effect": "Allow",
      "Action": "*",
      "Resource": "arn:aws::s3:region:111122223333:accesspoint/my-access-point",
      "Condition": {
        "StringEquals": {
          "s3:AccessPointTag/Environment": "Production"
        }
      }
    }
  ]
}

1.5 – 버킷 위임 정책 사용

Amazon S3에서 S3 버킷 정책에 대한 접근이나 제어를 다른 AWS 계정 또는 다른 계정의 특정 AWS Identity and Access Management(IAM) 사용자나 역할에 위임할 수 있어요. 위임 버킷 정책(delegate bucket policy)은 이 다른 계정, 사용자 또는 역할에게 버킷과 그 객체에 대한 권한을 부여해요. 자세한 내용은 권한 위임을 참고하세요.

다음과 같은 위임 버킷 정책을 사용한다면:

{
  "Version": "2012-10-17",
    "Statement": {
      "Principal": {"AWS": "*"},
        "Effect": "Allow",
        "Action": ["s3:*"],
        "Resource":["arn:aws::s3:::amzn-s3-demo-bucket/*", "arn:aws::s3:::amzn-s3-demo-bucket"],
           "Condition": {
             "StringEquals" : {
                "s3:DataAccessPointAccount" : "111122223333"
             }
           }
    }
}

다음 IAM 정책에서 조건 문은 액세스 포인트가 태그 키 Environment와 태그 값 Production을 가지면 버킷의 데이터에 접근을 허용해요.

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "AllowAccessToSpecificAccessPoint",
      "Effect": "Allow",
      "Action": "*",
      "Resource": "arn:aws::s3:region:111122223333:accesspoint/my-access-point",
      "Condition": {
        "StringEquals": {
          "s3:AccessPointTag/Environment": "Production"
        }
      }
    }
  ]
}

일반용 버킷의 액세스 포인트 태그 작업

Amazon S3 콘솔, AWS Command Line Interface(CLI), AWS SDKs 또는 S3 API(TagResource, UntagResource, ListTagsForResource)로 액세스 포인트의 태그를 추가하거나 관리할 수 있어요.

주제는 다음과 같아요.

더 알아보기 (Learn more)