S3 테이블에 태그 사용하기

S3 테이블에 태그 사용하기 (Using tags with S3 tables)

AWS 태그는 리소스에 대한 메타데이터를 담는 키-값 쌍이에요. 여기서는 Amazon S3 테이블이 대상이에요. S3 테이블을 만들 때 태그를 달거나 기존 테이블의 태그를 관리할 수 있어요. 태그에 대한 일반적인 정보는 "Tagging for cost allocation or attribute-based access control (ABAC)" 문서를 참고하세요.

출처: 문서

본문

참고: 테이블에 태그를 사용하는 데는 표준 S3 API 요청 요금 외 추가 비용이 없어요. 자세한 내용은 Amazon S3 요금(pricing) 문서를 참고하세요.

테이블에 태그를 쓰는 일반적인 방법

S3 테이블에 태그를 쓰는 용도는 다음과 같아요.

  • 비용 할당 – AWS Billing and Cost Management에서 테이블 태그별 스토리지 비용을 추적해요. 자세한 내용은 "Using tags for cost allocation" 문서를 참고하세요.
  • 속성 기반 접근 제어(ABAC) – 접근 권한을 확장하고 테이블 태그를 기반으로 S3 테이블에 접근을 부여해요. 자세한 내용은 "Using tags for 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 값이 있을 때만 접근을 허용하도록 요구할 수 있어요.

이 조건 키는 Amazon S3 콘솔, AWS Command Line Interface(CLI), S3 API, AWS SDK로 수행하는 테이블 작업에 적용돼요.

예시 정책은 "1.1 - table policy to restrict operations on the table using tags" 문서를 참고하세요. 추가 예시 정책과 자세한 내용은 AWS Identity and Access Management User Guide의 "Controlling access to AWS resources" 문서를 참고하세요.

참고: 테이블에 대해 수행하는 작업에서 이 조건 키는 테이블을 담고 있는 테이블 버킷에 적용된 태그가 아니라 테이블에 적용된 태그를 기준으로 동작해요. 테이블 작업을 할 때 테이블 버킷의 태그를 기준으로 ABAC 정책이 동작하길 원한다면 대신 s3tables:TableBucketTag/<tag-key>를 사용하세요.

aws:RequestTag/key-name

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

이 조건 키는 TagResource 또는 CreateTable API 작업 요청에서 태그 키가 전달되거나, Amazon S3 콘솔, AWS Command Line Interface(CLI), AWS SDK로 태그를 달거나 태그와 함께 테이블을 만들 때 적용돼요.

예시 정책은 "1.2 - IAM policy to create or modify tables with specific tags" 문서를 참고하세요. 추가 예시 정책과 자세한 내용은 AWS Identity and Access Management User Guide의 "Controlling access during AWS requests" 문서를 참고하세요.

aws:TagKeys

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

이 조건 키는 TagResource, UntagResource, CreateTable API 작업에서 태그 키가 전달되거나, AWS Command Line Interface(CLI), AWS SDK로 태그를 달고·떼고·태그와 함께 테이블을 만들 때 적용돼요.

예시 정책은 "1.3 - IAM policy to control the modification of tags on existing resources maintaining tagging governance" 문서를 참고하세요. 추가 예시 정책과 자세한 내용은 AWS Identity and Access Management User Guide의 "Controlling access based on tag keys" 문서를 참고하세요.

s3tables:TableBucketTag/tag-key

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

  • 태그와 함께 테이블 버킷을 만들 때는 이 조건 키가 요청의 태그를 기준으로 동작해요.

예시 정책은 "1.4 - Using the s3tables:TableBucketTag condition key" 문서를 참고하세요.

테이블용 예시 ABAC 정책

Amazon S3 테이블용 예시 ABAC 정책을 다음에서 볼 수 있어요.

참고: 주체(principal) 태그를 기반으로 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/my_example_tab;e",
      "Condition": {
        "StringEquals": {
          "aws:ResourceTag/project": "${aws:PrincipalTag/project}"
        }
      }
    }
  ]
}

1.2 – 특정 태그로 테이블을 만들거나 수정하는 IAM 정책

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

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "CreateTableWithTags",
      "Effect": "Allow",
      "Action": [
        "s3tables:CreateTable",
        "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/my_example_table",
      "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)

  • 태그와 함께 테이블 만들기 (Creating tables with tags)
  • 테이블에 태그 추가하기 (Adding a tag to a table)
  • 테이블 태그 보기 (Viewing table tags)
  • 테이블에서 태그 삭제하기 (Deleting a tag from a table)