

# 对表和表存储桶强制使用 SSE-KMS 并确定其范围
<a name="tables-require-kms"></a>

您可以使用 S3 表类数据存储服务基于资源的策略、KMS 密钥策略、基于 IAM 身份的策略或这些策略的任意组合，来强制对 S3 表和表存储桶使用 SSE-KMS。有关表的身份和资源策略的更多信息，请参阅 [S3 表类数据存储服务的访问管理](s3-tables-setting-up.md)。有关编写密钥策略的信息，请参阅《Amazon Key Management Service Developer Guide》**中的 [Key policies](https://docs.amazonaws.cn/kms/latest/developerguide/key-policies.html)。以下示例说明如何使用策略来强制执行 SSE-KMS。

## 使用表存储桶策略强制对所有表使用 SSE-KMS
<a name="w2aac20c35c15b3c11b5b1"></a>

这是表存储桶策略的示例，该策略禁止用户在特定的表存储桶中创建表，除非他们使用特定 Amazon KMS 密钥对表进行加密。要使用此策略，请将*用户输入占位符*替换为您自己的信息：

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

****  

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

------

## 要求用户将 SSE-KMS 加密与 IAM 策略结合使用
<a name="w2aac20c35c15b3c11b7b1"></a>

此 IAM 身份策略要求用户在创建或配置 S3 表类数据存储服务资源时使用特定的 Amazon KMS 密钥进行加密。要使用此策略，请将*用户输入占位符*替换为您自己的信息：

```
{
  "Version": "2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "RequireKMSKeyOnTables",
      "Action": [
          "s3tables:CreateTableBucket",
          "s3tables:PutTableBucketEncryption",
          "s3tables:CreateTable"
      ]
      "Effect": "Deny",
      "Resource": "*",
      "Condition": {
        "StringNotEquals": {
            "s3tables:sseAlgorithm": "aws:kms",
            "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>/*"
        }
      }
    }
  ]
}
```

------