S3 테이블 버킷에 태그 사용하기

S3 테이블 버킷에 태그 사용하기

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

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

출처: Using tags with S3 table buckets

본문

테이블 버킷 태그의 일반적인 사용

S3 테이블 버킷에 태그를 사용하는 일반적인 방법은 다음과 같아요.

  • 속성 기반 접근 제어(ABAC) — 태그를 기준으로 S3 테이블 버킷에 대한 접근 권한을 확장하고 부여해요. 자세한 내용은 ABAC에 태그 사용하기 문서를 참고하세요.

S3 테이블 버킷의 ABAC

Amazon S3 테이블 버킷은 태그를 사용한 속성 기반 접근 제어(ABAC)를 지원해요. AWS Organizations, AWS Identity and Access Management(IAM), S3 테이블 버킷 정책에서 태그 기반 조건 키를 사용할 수 있어요. Amazon S3의 ABAC는 여러 AWS 계정에 걸친 권한 부여를 지원해요.

IAM 정책에서 s3tables:TableBucketTag/tag-key 조건 키 또는 AWS 전역 조건 키(aws:ResourceTag/key-name, aws:RequestTag/key-name, aws:TagKeys)를 사용해 테이블 버킷의 태그를 기준으로 S3 테이블 버킷에 대한 접근을 제어할 수 있어요.

aws:ResourceTag/key-name

이 조건 키는 정책에 지정한 태그 키-값 쌍을 리소스에 연결된 쌍과 비교해요. 예를 들어 테이블 버킷에 Department 태그 키가 Marketing 값으로 연결된 경우에만 접근을 허용하도록 할 수 있어요.

이 조건 키는 CreateBucket API 요청을 제외하고 Amazon S3 콘솔, AWS Command Line Interface(CLI), S3 API, AWS SDK로 수행되는 모든 테이블 버킷 작업에 적용돼요.

예시 정책은 1.1 - 태그로 테이블 버킷 내의 테이블 연산을 제한하는 테이블 버킷 정책을 참고하세요.

추가 예시 정책과 자세한 내용은 AWS Identity and Access Management 사용자 가이드의 AWS 리소스에 대한 접근 제어 문서를 참고하세요.

테이블에 대해 수행되는 작업에서는 이 조건 키가 테이블에 적용된 태그에 대해 작동하지, 테이블을 담고 있는 테이블 버킷에 적용된 태그에 대해서는 작동하지 않아요. 테이블 작업에서 ABAC 정책이 테이블 버킷의 태그에 대해 작동하길 원한다면 s3tables:TableBucketTag/tag-key를 사용하세요.

aws:RequestTag/key-name

이 조건 키는 요청에 전달된 태그 키-값 쌍을 정책에 지정한 태그 쌍과 비교해요. 예를 들어 테이블 버킷에 태그를 지정하는 요청에 Department 태그 키가 포함되고 그 값이 Accounting인지 확인할 수 있어요.

이 조건 키는 TagResource 또는 CreateTableBucket API 작업 요청에 태그 키가 전달될 때, 또는 Amazon S3 콘솔, AWS Command Line Interface(CLI), AWS SDK로 태그를 사용해 테이블 버킷에 태그를 지정하거나 만들 때 적용돼요.

예시 정책은 1.2 - 특정 태그로 테이블 버킷을 만들거나 수정하는 IAM 정책을 참고하세요.

추가 예시 정책과 자세한 내용은 AWS Identity and Access Management 사용자 가이드의 AWS 요청 중 접근 제어 문서를 참고하세요.

aws:TagKeys

이 조건 키는 요청의 태그 키를 정책에 지정한 키와 비교해 접근에 허용할 태그 키를 정의해요. 예를 들어 CreateTableBucket 작업 중 태그 지정을 허용하려면 s3tables:TagResource와 s3tables:CreateTableBucket 작업을 모두 허용하는 정책을 만들어야 해요. 그런 다음 aws:TagKeys 조건 키를 사용해 CreateTableBucket 요청에서 특정 태그만 사용하도록 강제할 수 있어요.

이 조건 키는 TagResource, UntagResource, CreateTableBucket API 작업에 태그 키가 전달될 때, 또는 Amazon S3 콘솔, AWS Command Line Interface(CLI), AWS SDK로 태그를 사용해 테이블 버킷에 태그를 지정하거나 태그를 해제하고 만들 때 적용돼요.

예시 정책은 1.3 - 태그 거버넌스를 유지하며 기존 리소스의 태그 수정을 제어하는 IAM 정책을 참고하세요.

추가 예시 정책과 자세한 내용은 AWS Identity and Access Management 사용자 가이드의 태그 키 기반 접근 제어 문서를 참고하세요.

s3tables:TableBucketTag/tag-key

이 조건 키는 태그를 사용해 테이블 버킷의 특정 데이터에 대한 권한을 부여할 때 사용해요. 이 조건 키는 대부분의 S3 Tables 작업에서 테이블 버킷에 지정된 태그에 대해 작동해요. 태그를 사용해 테이블을 만들 때도 이 조건 키는 그 테이블을 담고 있는 테이블 버킷에 적용된 태그에 대해 작동해요. 예외는 다음과 같아요.

  • 태그를 사용해 테이블 버킷을 만들 때, 이 조건 키는 요청의 태그에 대해 작동해요.

예시 정책은 1.4 - s3tables:TableBucketTag 조건 키 사용하기를 참고하세요.

테이블 버킷 ABAC 정책 예시

Amazon S3 테이블 버킷에 대한 ABAC 정책 예시를 소개할게요.

Lake Formation을 사용해 Amazon S3 Tables에 대한 접근을 관리하고, 보안 주체 태그를 기준으로 IAM 사용자와 IAM 역할을 제한하는 IAM 또는 S3 Tables 리소스 기반 정책이 있다면, Lake Formation이 Amazon S3 데이터에 접근할 때 사용하는 IAM 역할(예: LakeFormationDataAccessRole)에 동일한 보안 주체 태그를 연결하고 이 역할에 필요한 권한을 부여해야 해요. 이는 태그 기반 접근 제어 정책이 S3 Tables 분석 통합과 함께 올바르게 작동하기 위해 필요해요.

1.1 - 태그로 테이블 버킷 내의 테이블 연산을 제한하는 테이블 버킷 정책

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

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "AllowGetTable",
      "Effect": "Allow",
      "Principal": {
        "AWS": "111122223333"
      },
      "Action": "s3tables:GetTable",
      "Resource": "arn:aws::s3tables:us-west-2:111122223333:bucket/amzn-s3-demo-table-bucket/*",
      "Condition": {
        "StringEquals": {
          "aws:ResourceTag/project": "${aws:PrincipalTag/project}"
        }
      }
    }
  ]
}
1.2 - 특정 태그로 테이블 버킷을 만들거나 수정하는 IAM 정책

AWS Lake Formation을 사용해 Amazon S3 테이블에 대한 접근을 관리하고 Amazon S3 Tables에 ABAC를 사용한다면, Lake Formation이 수임하는 IAM 역할에도 필요한 접근 권한을 부여했는지 확인하세요. Lake Formation용 IAM 역할 설정에 대한 자세한 내용은 AWS Lake Formation 개발자 안내서의 Amazon S3 테이블 카탈로그를 Data Catalog 및 Lake Formation과 통합하기 위한 사전 조건 문서를 참고하세요.

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

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "CreateTableBucketWithTags",
      "Effect": "Allow",
      "Action": [
        "s3tables:CreateTableBucket",
        "s3tables:TagResource"
      ],
      "Resource": "*",
      "Condition": {
        "StringEquals": {
          "aws:RequestTag/project": [
            "Trinity"
          ]
        }
      }
    }
  ]
}
1.3 - 태그 거버넌스를 유지하며 기존 리소스의 태그 수정을 제어하는 IAM 정책

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

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "EnforceTaggingRulesOnModification",
      "Effect": "Allow",
      "Action": [
        "s3tables:TagResource",
        "s3tables:UntagResource"
      ],
      "Resource": "arn:aws::s3tables:us-west-2:111122223333:bucket/amzn-s3-demo-table-bucket",
      "Condition": {
        "StringEquals": {
          "aws:ResourceTag/project": "${aws:PrincipalTag/project}"
        },
        "ForAllValues:StringEquals": {
          "aws:TagKeys": [
            "project",
            "environment",
            "owner",
            "cost-center"
          ]
        }
      }
    }
  ]
}
1.4 - s3tables:TableBucketTag 조건 키 사용하기

이 IAM 정책에서 조건문은 테이블 버킷이 Environment 태그 키와 Production 태그 값을 가질 때만 테이블 버킷 데이터에 대한 접근을 허용해요. s3tables:TableBucketTag/<tag-key>는 aws:ResourceTag/<tag-key> 조건 키와 달라요. 전자는 태그를 기준으로 테이블 버킷에 대한 접근을 제어할 뿐만 아니라, 부모 테이블 버킷의 태그를 기준으로 테이블에 대한 접근도 제어할 수 있게 해 주기 때문이에요.

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "AllowAccessToSpecificTables",
      "Effect": "Allow",
      "Action": "*",
      "Resource": "arn:aws::s3tables:us-west-2:111122223333:bucket/amzn-s3-demo-table-bucket/*",
      "Condition": {
        "StringEquals": {
          "s3tables:TableBucketTag/Environment": "Production"
        }
      }
    }
  ]
}

테이블 버킷 태그 관리하기

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

  • 태그를 사용해 테이블 버킷 만들기
  • 테이블 버킷에 태그 추가하기
  • 테이블 버킷 태그 보기
  • 테이블 버킷에서 태그 삭제하기

더 알아보기 (Learn more)

  • 태그를 사용해 테이블 버킷 만들기
  • 테이블 버킷에 태그 추가하기
  • 테이블 버킷 태그 보기
  • 테이블 버킷에서 태그 삭제하기