S3 Tables 리소스 기반 정책
S3 Tables 리소스 기반 정책
테이블 버킷 정책과 테이블 정책을 사용해 테이블 버킷과 테이블에 대한 접근을 관리하는 방법을 설명해요.
본문
S3 Tables는 테이블 버킷과 테이블에 대한 접근을 관리하는 리소스 기반 정책, 즉 테이블 버킷 정책과 테이블 정책을 제공해요. 테이블 버킷 정책을 사용해 테이블 버킷, 네임스페이스, 또는 테이블 수준에서 API 접근 권한을 부여할 수 있어요. 테이블 버킷에 연결된 권한은 정책 정의에 따라 버킷의 모든 테이블 또는 버킷의 특정 테이블에 적용돼요. 테이블 정책을 사용해 테이블 수준에서 권한을 부여할 수 있어요.
S3 Tables는 요청을 받으면 먼저 요청자에게 필요한 권한이 있는지 확인해요. 요청을 승인할지 결정할 때 관련된 모든 접근 정책, 사용자 정책, 리소스 기반 정책(IAM 사용자 정책, IAM 역할 정책, 테이블 버킷 정책, 테이블 정책)을 평가해요. 예를 들어, 테이블 버킷 정책이 어떤 사용자에게 버킷의 테이블에서 모든 작업(DeleteTable 포함)을 수행할 권한을 부여했더라도, 개별 테이블의 테이블 정책이 모든 사용자에 대해 DeleteTable 작업을 거부하면 그 사용자는 테이블을 삭제할 수 없어요.
다음 주제에는 테이블 및 테이블 버킷 정책 예시가 포함돼 있어요. 이 정책들을 사용하려면 사용자 입력 플레이스홀더를 여러분의 정보로 바꿔 넣으세요.
- 테이블을 수정할 권한을 부여하는 모든 정책에는 테이블 루트 파일에 접근하기 위한
GetTableMetadataLocation권한을 포함해야 해요. 자세한 내용은 GetTableMetadataLocation을 참고해 주세요. - 테이블에서 쓰기나 삭제 활동을 수행할 때마다 접근 정책에
UpdateTableMetadataLocation권한을 포함하세요. - 버킷 수준 작업에 대한 접근은 테이블 버킷 정책으로, 테이블 수준 작업에 대한 접근은 테이블 정책으로 관리하는 것을 권장해요. 여러 테이블에 같은 권한 집합을 정의하고 싶은 경우에는 테이블 버킷 정책 사용을 권장해요.
- 예시 1: 계정의 버킷에 대해
PutBucketMaintenanceConfiguration접근을 허용하는 테이블 버킷 정책 - 예시 2:
hr네임스페이스에 저장된 테이블에 읽기(SELECT) 접근을 허용하는 테이블 버킷 정책 - 예시 3: 사용자가 테이블을 삭제할 수 있게 하는 테이블 정책
예시 1: 계정의 버킷에 대해 PutBucketMaintenanceConfiguration 접근을 허용하는 테이블 버킷 정책
다음 테이블 버킷 정책 예시는 IAM 데이터 스튜어드(data steward)가 PutBucketMaintenanceConfiguration에 대한 접근을 허용해 계정의 모든 버킷에서 참조되지 않은 객체를 삭제할 수 있게 해요.
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::111122223333:role/datasteward"
},
"Action": [
"s3tables:PutTableBucketMaintenanceConfiguration"
],
"Resource": "arn:aws:s3tables:us-east-1:111122223333:bucket/*"
}
]
}
예시 2: hr 네임스페이스에 저장된 테이블에 읽기(SELECT) 접근을 허용하는 테이블 버킷 정책
다음 테이블 버킷 정책 예시는 AWS 계정 ID 123456789012의 사용자 Jane이 테이블 버킷의 hr 네임스페이스에 저장된 테이블에 접근할 수 있게 해요.
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::123456789012:user/Jane"
},
"Action": [
"s3tables:GetTableData",
"s3tables:GetTableMetadataLocation"
],
"Resource": "arn:aws:s3tables:us-east-1:111122223333:bucket/amzn-s3-demo-table-bucket/table/*",
"Condition": {
"StringLike": {
"s3tables:namespace": "hr"
}
}
}
]
}
예시 3: 사용자가 테이블을 삭제할 수 있게 하는 테이블 정책
다음 테이블 정책 예시는 IAM 역할 데이터 스튜어드가 테이블을 삭제할 수 있게 해요.
{
"Version": "2012-10-17",
"Id": "DeleteTable",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::111122223333:role/datasteward"
},
"Action": [
"s3tables:DeleteTable",
"s3tables:UpdateTableMetadataLocation",
"s3tables:PutTableData",
"s3tables:GetTableMetadataLocation"
],
"Resource": "arn:aws:s3tables:us-east-1:111122223333:bucket/amzn-s3-demo-bucket/table/tableUUID"
}
]
}