S3 디렉터리 버킷에 태그 사용하기

S3 디렉터리 버킷에 태그 사용하기

AWS 태그는 리소스에 대한 메타데이터를 담는 키-값 쌍이에요. 여기서는 Amazon S3 디렉터리 버킷을 대상으로 설명할게요. S3 디렉터리 버킷을 만들 때 태그를 달 수도 있고, 이미 만들어진 디렉터리 버킷의 태그를 관리할 수도 있어요. 태그에 대한 일반적인 내용은 비용 할당용 태그 지정 또는 속성 기반 접근 제어(ABAC) 문서를 참고하세요.

디렉터리 버킷에 태그를 사용해도 표준 S3 API 요금 외에 추가 비용은 발생하지 않아요. 자세한 내용은 Amazon S3 요금 페이지를 확인하세요.

출처: Using tags with S3 directory buckets

본문

디렉터리 버킷 태그의 일반적인 사용

S3 디렉터리 버킷에 태그를 사용하는 일반적인 방법은 다음과 같아요.

  • 비용 할당 — AWS Billing and Cost Management에서 버킷 태그로 스토리지 비용을 추적해요. 자세한 내용은 비용 할당에 태그 사용하기 문서를 참고하세요.
  • 속성 기반 접근 제어(ABAC) — 태그를 기준으로 S3 디렉터리 버킷에 대한 접근 권한을 확장하고 부여해요. 자세한 내용은 ABAC에 태그 사용하기 문서를 참고하세요.

같은 태그를 비용 할당과 접근 제어 양쪽에 모두 사용할 수 있어요.

S3 디렉터리 버킷의 ABAC

Amazon S3 디렉터리 버킷은 태그를 사용한 속성 기반 접근 제어(ABAC)를 지원해요. AWS Organizations, IAM, S3 디렉터리 버킷 정책에서 태그 기반 조건 키를 사용할 수 있어요. 기업 환경에서 Amazon S3의 ABAC는 여러 AWS 계정에 걸친 권한 부여를 지원해요.

IAM 정책에서 다음 전역 조건 키를 사용하면 버킷의 태그를 기준으로 S3 디렉터리 버킷에 대한 접근을 제어할 수 있어요.

  • aws:ResourceTag/key-name — 이 키는 정책에 지정한 태그 키-값 쌍을 리소스에 연결된 쌍과 비교해요. 예를 들어 리소스에 Dept라는 태그 키가 Marketing이라는 값으로 연결된 경우에만 접근을 허용하도록 할 수 있어요. 자세한 내용은 AWS 리소스에 대한 접근 제어 문서를 참고하세요.
  • aws:RequestTag/key-name — 이 키는 요청에 전달된 태그 키-값 쌍을 정책에 지정한 태그 쌍과 비교해요. 예를 들어 요청에 Dept 태그 키가 포함되고 그 값이 Accounting인지 확인할 수 있어요. 자세한 내용은 AWS 요청 중 접근 제어 문서를 참고하세요. 이 조건 키는 TagResource와 CreateBucket API 작업에서 전달할 수 있는 태그 키-값 쌍을 제한하는 데 사용할 수 있어요.
  • aws:TagKeys — 이 키는 요청의 태그 키를 정책에 지정한 키와 비교해요. 태그로 접근을 제어하는 정책을 사용할 때는 aws:TagKeys 조건 키로 허용할 태그 키를 정의하는 것을 권장해요. 예제 정책과 자세한 내용은 태그 키 기반 접근 제어 문서를 참고하세요. S3 디렉터리 버킷을 태그와 함께 만들 수 있어요. CreateBucket API 작업 중 태그 지정을 허용하려면 s3express:TagResource와 s3express:CreateBucket 작업을 모두 포함하는 정책을 만들어야 해요. 그런 다음 aws:TagKeys 조건 키를 사용해 CreateBucket 요청에서 특정 태그만 사용하도록 강제할 수 있어요.
  • s3express:BucketTag/tag-key — 이 조건 키는 태그를 사용해 디렉터리 버킷의 특정 데이터에 대한 권한을 부여할 때 사용해요. 액세스 포인트를 사용해 디렉터리 버킷에 접근할 때, 이 조건 키는 액세스 포인트와 디렉터리 버킷 양쪽 모두에 대해 권한을 부여할 때 디렉터리 버킷의 태그를 참조해요. 반면 aws:ResourceTag/tag-key는 권한이 부여되는 리소스 자체의 태그만 참조해요.

디렉터리 버킷 ABAC 정책 예시

Amazon S3 디렉터리 버킷에 대한 ABAC 정책 예시를 소개할게요.

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

이 IAM 정책에서 이 정책을 가진 사용자나 역할은 버킷 생성 요청에서 project 태그 키와 Trinity 태그 값을 태그로 달아야만 S3 디렉터리 버킷을 만들 수 있어요. 또한 TagResource 요청이 project:Trinity 태그 키-값 쌍을 포함하는 한, 기존 S3 디렉터리 버킷에 태그를 추가하거나 수정할 수 있어요. 이 정책은 버킷이나 그 객체에 대한 읽기, 쓰기, 삭제 권한을 부여하지는 않아요.

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "CreateBucketWithTags",
      "Effect": "Allow",
      "Action": [
        "s3express:CreateBucket",
        "s3express:TagResource"
      ],
      "Resource": "*",
      "Condition": {
        "StringEquals": {
          "aws:RequestTag/project": [
            "Trinity"
          ]
        }
      }
    }
  ]
}
1.2 - 태그로 버킷 연산을 제한하는 버킷 정책

이 버킷 정책에서 IAM 보안 주체(사용자와 역할)는 버킷의 project 태그 값이 보안 주체의 project 태그 값과 일치할 때만 버킷에서 CreateSession 작업을 수행할 수 있어요.

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "AllowObjectOperations",
      "Effect": "Allow",
      "Principal": {
        "AWS": "111122223333"
      },
      "Action": "s3express:CreateSession",
      "Resource": "arn:aws::s3express:us-west-2:111122223333:bucket/amzn-s3-demo-bucket--usw2-az1--x-s3",
      "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": [
        "s3express:TagResource"
      ],
      "Resource": "arn:aws::s3express:us-west-2:111122223333:bucket/*",
      "Condition": {
        "StringEquals": {
          "aws:ResourceTag/project": "${aws:PrincipalTag/project}"
        },
        "ForAllValues:StringEquals": {
          "aws:TagKeys": [
            "project",
            "environment",
            "owner",
            "cost-center"
          ]
        }
      }
    }
  ]
}
1.4 - s3express:BucketTag 조건 키 사용하기

이 IAM 정책에서 조건문은 버킷이 Environment 태그 키와 Production 태그 값을 가질 때만 버킷 데이터에 대한 접근을 허용해요.

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "AllowAccessToSpecificAccessPoint",
      "Effect": "Allow",
      "Action": "*",
      "Resource": "arn:aws::s3express:us-west-2:111122223333:accesspoint/*",
      "Condition": {
        "StringEquals": {
          "s3express:BucketTag/Environment": "Production"
        }
      }
    }
  ]
}

디렉터리 버킷 태그 관리하기

S3 디렉터리 버킷의 태그는 Amazon S3 콘솔, AWS Command Line Interface(CLI), AWS SDK, 또는 S3 API(TagResource, UntagResource, ListTagsForResource)로 추가하거나 관리할 수 있어요. 자세한 내용은 다음을 참고하세요.

  • 태그를 사용해 디렉터리 버킷 만들기
  • 디렉터리 버킷에 태그 추가하기
  • 디렉터리 버킷 태그 보기
  • 디렉터리 버킷에서 태그 삭제하기

더 알아보기 (Learn more)

  • 디렉터리 버킷에 태그 추가하기
  • 디렉터리 버킷 태그 보기
  • 디렉터리 버킷에서 태그 삭제하기
  • 태그를 사용해 디렉터리 버킷 만들기