

# 테이블 및 테이블 버킷에 대한 SSE-KMS 사용 적용 및 범위 지정
<a name="tables-require-kms"></a>

S3 Tables 리소스 기반 정책, KMS 키 정책, IAM ID 기반 정책 또는 이들의 조합을 사용하여 S3 테이블 및 테이블 버킷에 대한 SSE-KMS 사용을 적용할 수 있습니다. 테이블의 ID 및 리소스 정책에 대한 자세한 내용은 [S3 Tables의 액세스 관리](s3-tables-setting-up.md) 섹션을 참조하세요. 키 정책 작성에 대한 자세한 내용은 *AWS Key Management Service 개발자 안내서*의 [키 정책](https://docs.aws.amazon.com/kms/latest/developerguide/key-policies.html)을 참조하세요. 다음 예제에서는 정책을 사용하여 SSE-KMS를 적용하는 방법을 보여줍니다.

## 테이블 버킷 정책을 통해 모든 테이블에 SSE-KMS 사용 적용
<a name="w2aac20c35c15b3c11b5b1"></a>

이는 사용자가 특정 AWS KMS 키로 테이블을 암호화하지 않는 한 특정 테이블 버킷에 테이블을 생성하지 못하도록 하는 테이블 버킷 정책의 예입니다. 이 정책을 사용하려면 {{사용자 입력 자리 표시자}}를 실제 정보로 바꿉니다.

------
#### [ JSON ]

```
{
  "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 암호화 사용 요구
<a name="w2aac20c35c15b3c11b7b1"></a>

이 IAM ID 정책은 사용자가 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 키 정책을 사용하여 키 사용을 특정 테이블 버킷으로 제한
<a name="w2aac20c35c15b3c11b9b1"></a>

이 예제 KMS 키 정책은 특정 사용자가 특정 테이블 버킷의 암호화 작업에만 키를 사용할 수 있도록 허용합니다. 이 유형의 정책은 교차 계정 시나리오에서 키에 대한 액세스를 제한하는 데 유용합니다. 이 정책을 사용하려면 {{사용자 입력 자리 표시자}}를 실제 정보로 바꿉니다.

------
#### [ JSON ]

****  

```
{
  "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>}}/*"
        }
      }
    }
  ]
}
```

------