S3 Tables SSE-KMS 암호화 권한 요구 사항
S3 Tables SSE-KMS 암호화 권한 요구 사항
S3 테이블 버킷의 테이블에 AWS KMS 키를 사용한 서버 측 암호화(SSE-KMS)를 쓸 때 필요한 권한 요구 사항을 설명해요.
출처: Permission requirements for S3 Tables SSE-KMS encryption
본문
S3 테이블 버킷의 테이블에 AWS Key Management Service(AWS KMS) 키를 사용한 서버 측 암호화(SSE-KMS)를 사용할 때는 계정의 다양한 아이덴티티에 권한을 부여해야 해요. 최소한 여러분의 접근 아이덴티티와 S3 Tables 유지보수 프린시펄이 여러분의 키에 접근해야 하며, 그 외 필요한 권한은 사용 사례에 따라 달라져요.
KMS 키로 암호화된 테이블에 접근하려면 그 키에 대해 다음 권한이 필요해요.
kms:GenerateDataKeykms:Decrypt
테이블에 SSE-KMS를 사용하려면 Amazon S3 Tables 유지보수 서비스 프린시펄(maintenance.s3tables.amazonaws.com)이 키에 대한 kms:GenerateDataKey와 kms:Decrypt 권한을 가져야 해요.
사용 사례에 따라 다음 추가 권한이 필요해요.
- AWS 분석 서비스 및 직접 접근 권한 – AWS 분석 서비스를 통해 SSE-KMS로 암호화된 테이블을 다루거나, S3 테이블에 직접 접근하는 써드파티 엔진을 사용한다면, 사용하는 IAM 역할이 여러분의 KMS 키를 사용할 권한이 필요해요.
- Lake Formation 활성화 시 권한 – 접근 제어에 AWS Lake Formation을 선택했다면, Lake Formation 서비스 역할이 여러분의 KMS 키를 사용할 권한이 필요해요.
- S3 Metadata 테이블 권한 – S3 Metadata 테이블에 SSE-KMS 암호화를 사용한다면, S3 Metadata 서비스 프린시펄(
metadata.s3.amazonaws.com)에게 KMS 키 접근 권한을 부여해야 해요. 이렇게 하면 S3 Metadata가 암호화된 테이블을 업데이트해 최신 데이터 변경 사항이 반영되도록 할 수 있어요.
교차 계정 KMS 키의 경우, IAM 역할은 키 접근 권한과 키 정책의 명시적 승인을 모두 필요로 해요. KMS 키의 교차 계정 권한에 대한 자세한 내용은 AWS Key Management Service Developer Guide의 Allowing external AWS accounts to use a KMS key를 참고해 주세요.
- S3 Tables 유지보수 서비스 프린시펄에 KMS 키 권한 부여하기
- 통합된 AWS 분석 서비스에서 암호화된 테이블을 다루도록 IAM 프린시펄에 권한 부여하기
- Lake Formation이 활성화된 경우 암호화된 테이블을 다루도록 IAM 프린시펄에 권한 부여하기
- S3 Metadata 서비스 프린시펄에 KMS 키 사용 권한 부여하기
S3 Tables 유지보수 서비스 프린시펄에 KMS 키 권한 부여하기
이 권한은 SSE-KMS로 암호화된 테이블을 만들고, 암호화된 테이블에서 압축(compaction), 스냅샷 관리, 미참조 파일 제거 같은 자동 테이블 유지보수를 허용하는 데 필요해요.
SSE-KMS로 암호화된 테이블을 만드는 요청을 할 때마다 S3 Tables는 maintenance.s3tables.amazonaws.com 프린시펄이 여러분의 KMS 키에 접근할 수 있는지 확인해요. 이 확인을 수행하기 위해 테이블 버킷에 0바이트 객체가 일시적으로 생성되며, 이 객체는 미참조 파일 제거 유지보수 작업이 자동으로 제거해요. 암호화에 지정한 KMS 키에 유지보수 접근이 없으면 createTable 작업이 실패해요.
SSE-KMS로 암호화된 테이블에 유지보수 접근을 부여하려면 다음 예시 키 정책을 사용할 수 있어요. 이 정책에서 maintenance.s3tables.amazonaws.com 서비스 프린시펄은 특정 테이블 버킷의 테이블을 암호화·복호화하기 위해 특정 KMS 키를 사용할 권한을 부여받아요. 정책을 사용하려면 사용자 입력 플레이스홀더를 여러분의 정보로 바꿔 넣으세요.
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "EnableKeyUsage",
"Effect": "Allow",
"Principal": {
"Service": "maintenance.s3tables.amazonaws.com"
},
"Action": [
"kms:GenerateDataKey",
"kms:Decrypt"
],
"Resource": "arn:aws:kms:us-east-1:111122223333:key/key-id",
"Condition": {
"StringLike": {
"kms:EncryptionContext:aws:s3:arn": "<table-or-table-bucket-arn>/*"
}
}
}
]
}
통합된 AWS 분석 서비스에서 암호화된 테이블을 다루도록 IAM 프린시펄에 권한 부여하기
AWS 분석 서비스에서 S3 테이블을 다루려면 테이블 버킷을 AWS Glue Data Catalog와 통합해야 해요. 이 통합으로 AWS 분석 서비스가 테이블 데이터를 자동으로 검색하고 접근할 수 있어요. 통합에 대한 자세한 내용은 Integrating Amazon S3 Tables with AWS analytics services를 참고해 주세요.
AWS 분석 서비스, 또는 S3 테이블에 직접 접근하는 써드파티·오픈소스 엔진을 통해 SSE-KMS로 암호화된 테이블을 다룰 때, 사용하는 IAM 역할이 암호화 작업에 여러분의 AWS KMS 키를 사용할 권한이 필요해요.
KMS 키 접근은 역할에 연결된 IAM 정책이나 KMS 키 정책으로 부여할 수 있어요.
쿼리에 사용하는 IAM 역할에 이 인라인 정책을 연결해 KMS 키 접근을 허용하세요. KMS 키 ARN을 여러분의 것으로 바꿔 넣으세요.
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "AllowKMSKeyUsage",
"Effect": "Allow",
"Action": [
"kms:Decrypt",
"kms:GenerateDataKey"
],
"Resource": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab"
}
]
}
또는 이 문을 KMS 키 정책에 추가해 지정된 IAM 역할이 키를 사용할 수 있게 해요. 역할 ARN을 쿼리에 사용하는 IAM 역할로 바꿔 넣으세요.
{
"Sid": "Allow use of the key",
"Effect": "Allow",
"Principal": {
"AWS": [
"arn:aws:iam::<catalog-account-id>:role/<role-name>"
]
},
"Action": [
"kms:Decrypt",
"kms:GenerateDataKey"
],
"Resource": "*"
}
Lake Formation이 활성화된 경우 암호화된 테이블을 다루도록 IAM 프린시펄에 권한 부여하기
S3 Tables 통합의 접근 제어에 AWS Lake Formation을 선택했다면, Lake Formation 서비스 역할이 암호화 작업에 여러분의 AWS KMS 키를 사용할 권한이 필요해요. Lake Formation은 이 역할을 사용해 테이블에 접근하는 프린시펄을 대신해 자격 증명을 발급해요.
다음 KMS 키 정책 예시는 Lake Formation 서비스 역할에게 계정의 특정 KMS 키를 암호화 작업에 사용할 권한을 부여해요. 플레이스홀더 값을 여러분의 것으로 바꿔 넣으세요.
{
"Sid": "AllowTableRoleAccess",
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::111122223333:role/service-role/S3TablesRoleForLakeFormation"
},
"Action": [
"kms:GenerateDataKey",
"kms:Decrypt"
],
"Resource": "<kms-key-arn>"
}
S3 Metadata 서비스 프린시펄에 KMS 키 사용 권한 부여하기
Amazon S3가 SSE-KMS로 암호화된 메타데이터 테이블을 업데이트하고 그 메타데이터 테이블에 유지보수를 수행하도록 하려면 다음 예시 키 정책을 사용할 수 있어요. 이 정책에서 metadata.s3.amazonaws.com과 maintenance.s3tables.amazonaws.com 서비스 프린시펄이 특정 키로 특정 테이블 버킷의 테이블을 암호화·복호화할 수 있게 허용해요. 정책을 사용하려면 사용자 입력 플레이스홀더를 여러분의 정보로 바꿔 넣으세요.
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "EnableKeyUsage",
"Effect": "Allow",
"Principal": {
"Service": [
"maintenance.s3tables.amazonaws.com",
"metadata.s3.amazonaws.com"
]
},
"Action": [
"kms:GenerateDataKey",
"kms:Decrypt"
],
"Resource": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab",
"Condition": {
"StringLike": {
"kms:EncryptionContext:aws:s3:arn": "<table-or-table-bucket-arn>/*"
}
}
}
]
}