

# 在表存储桶中使用具有 Amazon KMS 密钥的服务器端加密（SSE-KMS）
<a name="s3-tables-kms-encryption"></a>

**Topics**
+ [SSE-KMS 存储桶如何用于表和表存储桶](#kms-tables-how)
+ [对表和表存储桶强制使用 SSE-KMS 并确定其范围](tables-require-kms.md)
+ [监控和审计表和表存储桶的 SSE-KMS 加密](#kms-tables-audit)
+ [S3 表类数据存储服务 SSE-KMS 加密的权限要求](s3-tables-kms-permissions.md)
+ [在表存储桶中指定具有 Amazon KMS 密钥的服务器端加密（SSE-KMS）](s3-tables-kms-specify.md)

表存储桶具有默认加密配置，该配置通过使用具有 Amazon S3 托管式密钥的服务器端加密（SSE-S3）来自动加密表。此加密适用于 S3 表存储桶中的所有表，而您无需支付任何费用。

如果您需要对加密密钥进行更多控制，例如管理密钥轮换和访问策略授予，则可以将表存储桶配置为使用具有 Amazon Key Management Service（Amazon KMS）密钥的服务器端加密（SSE-KMS）。Amazon KMS 中的安全控制可帮助您满足与加密相关的合规性要求。有关 SSE-KMS 的更多信息，请参阅 [使用具有 Amazon KMS 密钥的服务器端加密（SSE-KMS）](UsingKMSEncryption.md)。

## SSE-KMS 存储桶如何用于表和表存储桶
<a name="kms-tables-how"></a>

表存储桶中的 SSE-KMS 与通用存储桶中的 SSE-KMS 在以下几个方面有所不同：
+ 您可以为表存储桶和各个表指定加密设置。
+ 您只能将客户自主管理型密钥与 SSE-KMS 结合使用。不支持 Amazon 托管式密钥。
+ 您必须向某些角色和 Amazon 服务主体授予访问 Amazon KMS 密钥的权限。有关更多信息，请参阅 [S3 表类数据存储服务 SSE-KMS 加密的权限要求](s3-tables-kms-permissions.md)。这包括向以下主体授予访问权限：
  + S3 维护主体：用于对加密的表执行表维护
  + S3 表类数据存储服务集成角色：用于在 Amazon 分析服务中处理加密的表
  + 客户端访问角色：用于从 Apache Iceberg 客户端直接访问加密的表
  + S3 元数据主体：用于更新加密的 S3 元数据表
+ 加密的表使用表级别密钥，此类密钥可最大限度地减少向 Amazon KMS 发出的请求数量，从而提高处理 SSE-KMS 加密表的成本效益。

**表存储桶的 SSE-KMS 加密**  
创建表存储桶时，可以选择 SSE-KMS 作为默认加密类型，并选择将用于加密的特定 KMS 密钥。在该存储桶中创建的任何表都将自动从其表存储桶继承这些加密设置。您可以随时使用 Amazon CLI、S3 API 或 Amazon SDK 来修改或移除表存储桶上的默认加密设置。当您修改表存储桶上的加密设置时，这些设置仅适用于在该存储桶中创建的新表。而不更改先前存在的表的加密设置。有关更多信息，请参阅 [为表存储桶指定加密](s3-tables-kms-specify.md#specify-kms-table-bucket)。

**表的 SSE-KMS 加密**  
您还可以选择使用不同的 KMS 密钥来加密单个表，而不管存储桶的默认加密配置如何。要为单个表设置加密，必须在创建表时指定所需的加密密钥。如果要更改现有表的加密，则需要使用所需密钥创建一个表，并将数据从旧表复制到新表。有关更多信息，请参阅 [为表指定加密](s3-tables-kms-specify.md#specify-kms-table)。

使用 Amazon KMS 加密时，S3 表类数据存储服务会自动创建唯一的表级别数据密钥，用于加密与每个表关联的新对象。这些密钥在有限的时段内使用，最大限度地减少了在加密操作期间对额外 Amazon KMS 请求的需求，并降低了加密成本。这类似于 [SSE-KMS 的 S3 存储桶密钥](bucket-key.md#bucket-key-overview)。

## 监控和审计表和表存储桶的 SSE-KMS 加密
<a name="kms-tables-audit"></a>

要审计为 SSE-KMS 加密数据使用 Amazon KMS 密钥的情况，您可以使用 Amazon CloudTrail 日志。您可以深入了解自己的[加密操作](https://docs.amazonaws.cn/kms/latest/developerguide/concepts.html#cryptographic-operations)，例如 `GenerateDataKey` 和 `Decrypt`。CloudTrail 支持多种[属性值](https://docs.amazonaws.cn/awscloudtrail/latest/APIReference/API_LookupEvents.html)来筛选您的搜索，包括事件名称、用户名和事件源。

可以使用 CloudTrail 事件跟踪 Amazon S3 表和表存储桶的加密配置请求。CloudTrail 日志中使用以下 API 事件名称：
+ `s3tables:PutTableBucketEncryption`
+ `s3tables:GetTableBucketEncryption`
+ `s3tables:DeleteTableBucketEncryption`
+ `s3tables:GetTableEncryption`
+ `s3tables:CreateTable`
+ `s3tables:CreateTableBucket`

**注意**  
表存储桶不支持 EventBridge。