AWS 관리 테이블 버킷 작업

AWS 관리 테이블 버킷 작업

AWS 관리 테이블 버킷은 S3 Metadata 저널과 실시간 인벤토리(live inventory) 테이블 같은 AWS 관리 테이블을 저장하도록 설계된 특수 Amazon S3 테이블 버킷이에요. 직접 만들고 관리하는 고객 관리 테이블 버킷과 달리, AWS 관리 테이블 버킷은 AWS 관리 테이블이 필요한 기능을 구성할 때 AWS가 자동으로 프로비저닝해요. 관리 테이블이 만들어지면 소스 버킷의 이름을 기반으로 하는 미리 정의된 네임스페이스에 속해요. 이 미리 정의된 네임스페이스는 수정할 수 없어요.

각 AWS 계정에는 리전당 하나의 AWS 관리 테이블 버킷이 있으며, aws-s3라는 이름 지정 규칙을 따라요. 이 버킷은 해당 리전의 계정 리소스와 연결된 모든 관리 테이블의 중앙 위치 역할을 해요.

다음 표는 AWS 관리 테이블 버킷을 고객 관리 테이블 버킷과 비교해요.

항목 AWS 관리 테이블 버킷 고객 관리 테이블 버킷
생성 AWS 서비스가 자동으로 생성 직접 수동 생성
이름 지정 표준 이름 지정 규칙(aws-s3) 사용 직접 이름 정의
테이블 생성 AWS 서비스만 테이블을 만들 수 있음 테이블을 만들 수 있음
네임스페이스 제어 네임스페이스 생성·삭제 불가(모든 테이블은 고정 네임스페이스에 속함) 네임스페이스 생성·삭제 가능
접근 읽기 전용 접근 전체 접근
암호화 초기 테이블을 고객 관리 AWS Key Management Service(AWS KMS) 키로 암호화한 경우에만 기본 암호화(SSE-S3) 설정을 변경할 수 있음 버킷 수준 기본 암호화를 설정하고 언제든 수정할 수 있음
유지 관리 AWS 서비스가 관리 버킷 수준에서 자동 유지 관리를 사용자 지정할 수 있음

출처: Working with AWS managed table buckets

본문

AWS 관리 테이블 버킷 작업 및 테이블 쿼리 권한

AWS 관리 테이블 버킷으로 작업하려면 AWS 관리 테이블 버킷과 테이블을 만들고 AWS 관리 테이블의 암호화 설정을 지정할 수 있는 권한이 필요해요. 또한 AWS 관리 테이블 버킷의 테이블을 쿼리할 권한도 필요해요.

다음 예시 정책은 S3 Metadata 구성을 통해 AWS 관리 테이블 버킷을 만들 수 있게 해요.

{
   "Version":"2012-10-17",
   "Statement":[
      {
         "Sid":"PermissionsToWorkWithMetadataTables",
         "Effect":"Allow",
         "Action":[
            "s3:CreateBucketMetadataTableConfiguration",
            "s3tables:CreateTableBucket",
            "s3tables:CreateNamespace",
            "s3tables:CreateTable",
            "s3tables:GetTable",
            "s3tables:PutTablePolicy",
            "s3tables:PutTableEncryption",
            "kms:DescribeKey"
         ],
         "Resource":[
            "arn:aws:s3:::bucket/amzn-s3-demo-source-bucket",
            "arn:aws:s3tables:us-east-1:111122223333:bucket/aws-s3",
            "arn:aws:s3tables:us-east-1:111122223333:bucket/aws-s3/table/*",
            "arn:aws:kms:us-east-1:111122223333:key/01234567-89ab-cdef-0123-456789abcdef"
         ]
       }
    ]
}

다음 예시 정책은 AWS 관리 테이블 버킷의 테이블을 쿼리할 수 있게 해요.

{
   "Version":"2012-10-17",
   "Statement":[
      {
         "Sid":"PermissionsToQueryMetadataTables",
         "Effect":"Allow",
         "Action":[
            "s3tables:GetTable",
            "s3tables:GetTableData",
            "s3tables:GetTableMetadataLocation",
            "kms:Decrypt"
         ],
         "Resource":[
            "arn:aws:s3tables:us-east-1:111122223333:bucket/aws-s3",
            "arn:aws:s3tables:us-east-1:111122223333:bucket/aws-s3/table/*",
            "arn:aws:kms:us-east-1:111122223333:key/01234567-89ab-cdef-0123-456789abcdef"
         ]
       }
    ]
}

AWS 관리 테이블 버킷의 테이블 쿼리하기

S3 Tables가 지원하는 접근 방법과 엔진을 사용해 AWS 관리 테이블 버킷의 AWS 관리 테이블을 쿼리할 수 있어요. 다음은 몇 가지 예시 쿼리예요.

AWS 관리 테이블 버킷의 암호화

기본적으로 AWS 관리 테이블 버킷은 Amazon S3 관리형 키를 사용한 서버 측 암호화(SSE-S3)로 암호화돼요. AWS 관리 테이블 버킷을 만든 후에는 PutTableBucketEncryption을 사용해 버킷의 기본 암호화 설정을 AWS Key Management Service(AWS KMS) 키를 사용한 서버 측 암호화(SSE-KMS)로 설정할 수 있어요.

AWS 관리 테이블을 만들 때 SSE-KMS로 암호화하도록 선택할 수 있어요. SSE-KMS를 사용하려면 AWS 관리 테이블 버킷과 같은 리전의 고객 관리 KMS 키를 제공해야 해요. AWS 관리 테이블의 암호화 유형은 테이블 생성 중에만 설정할 수 있어요. AWS 관리 테이블을 만든 후에는 암호화 설정을 변경할 수 없어요.

AWS 관리 테이블 버킷과 그 안에 저장된 테이블이 같은 KMS 키를 사용하길 원한다면, 테이블을 암호화하는 데 사용한 것과 같은 KMS 키를 사용해 테이블 버킷을 만든 후에도 암호화하세요. 테이블 버킷의 기본 암호화 설정을 SSE-KMS로 변경한 후에는 그 설정이 버킷에 앞으로 만들어지는 모든 테이블에 적용돼요.

더 알아보기 (Learn more)

  • 테이블 버킷
  • S3 Tables 리소스 기반 정책
  • S3 테이블 데이터를 암호화로 보호하기