테이블과 테이블 버킷에서 SSE-KMS 사용 강제 및 범위 지정

테이블과 테이블 버킷에서 SSE-KMS 사용 강제 및 범위 지정

S3 Tables의 리소스 기반 정책, KMS 키 정책, IAM 아이덴티티 기반 정책(또는 이들의 조합)을 사용해 S3 테이블과 테이블 버킷에서 SSE-KMS 사용을 강제하는 방법을 설명해요.

출처: Enforcing and scoping SSE-KMS use for tables and table buckets

본문

S3 Tables 리소스 기반 정책, KMS 키 정책, IAM 아이덴티티 기반 정책, 또는 이들의 조합을 사용해 S3 테이블과 테이블 버킷에서 SSE-KMS 사용을 강제할 수 있어요. 테이블의 아이덴티티·리소스 정책에 대한 자세한 내용은 Access management for S3 Tables을, 키 정책 작성 방법은 AWS Key Management Service Developer Guide의 Key policies를 참고해 주세요. 다음 예시는 정책으로 SSE-KMS를 강제하는 방법을 보여줘요.

예시: 테이블 버킷 정책으로 SSE-KMS 강제하기

이것은 사용자가 특정 AWS KMS 키로 테이블을 암호화하지 않으면 특정 테이블 버킷에 테이블을 만들 수 없도록 막는 테이블 버킷 정책 예시예요. 이 정책을 사용하려면 사용자 입력 플레이스홀더를 여러분의 정보로 바꿔 넣으세요.

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "EnforceKMSEncryptionAlgorithm",
      "Effect": "Deny",
      "Principal": "*",
      "Action": [
        "s3tables:CreateTable"
      ],
      "Resource": [
        "arn:aws:s3tables:us-west-2:111122223333:bucket/example-table-bucket/*"
      ],
      "Condition": {
        "StringNotEquals": {
          "s3tables:sseAlgorithm": "aws:kms"
        }
      }
    },
    {
      "Sid": "EnforceKMSEncryptionKey",
      "Effect": "Deny",
      "Principal": "*",
      "Action": [
        "s3tables:CreateTable"
      ],
      "Resource": [
        "arn:aws:s3tables:us-west-2:111122223333:bucket/example-table-bucket/*"
      ],
      "Condition": {
        "StringNotEquals": {
          "s3tables:kmsKeyArn": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab"
        }
      }
    }
  ]
}

예시: IAM 아이덴티티 정책으로 SSE-KMS 강제하기

이 IAM 아이덴티티 정책은 사용자가 S3 Tables 리소스를 만들거나 구성할 때 특정 AWS KMS 키로 암호화하도록 요구해요. 이 정책을 사용하려면 사용자 입력 플레이스홀더를 여러분의 정보로 바꿔 넣으세요.

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "RequireSSEKMSOnTables",
      "Action": [
          "s3tables:CreateTableBucket",
          "s3tables:PutTableBucketEncryption",
          "s3tables:CreateTable"
      ],
      "Effect": "Deny",
      "Resource": "*",
      "Condition": {
        "StringNotEquals": {
            "s3tables:sseAlgorithm": "aws:kms"
        }
      }
    },
    {
      "Sid": "RequireKMSKeyOnTables",
      "Action": [
          "s3tables:CreateTableBucket",
          "s3tables:PutTableBucketEncryption",
          "s3tables:CreateTable"
      ],
      "Effect": "Deny",
      "Resource": "*",
      "Condition": {
        "StringNotEquals": {
            "s3tables:kmsKeyArn": "<key_arn>"
        }
      }
    }
  ]
}

예시: KMS 키 정책으로 키 사용 범위 제한하기

이 KMS 키 정책 예시는 특정 사용자만 특정 테이블 버킷에서 암호화 작업에 키를 사용할 수 있게 해요. 이런 유형의 정책은 교차 계정 시나리오에서 키에 대한 접근을 제한하는 데 유용해요. 이 정책을 사용하려면 사용자 입력 플레이스홀더를 여러분의 정보로 바꿔 넣으세요.

{
  "Version": "2012-10-17",
  "Id": "Id",
  "Statement": [
    {
      "Sid": "AllowPermissionsToKMS",
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::111122223333:root"
      },
      "Action": [
        "kms:GenerateDataKey",
        "kms:Decrypt"
      ],
      "Resource": "*",
      "Condition": {
        "StringLike": {
          "kms:EncryptionContext:aws:s3:arn": "<table-bucket-arn>/*"
        }
      }
    }
  ]
}

더 알아보기 (Learn more)