

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 数据传输的安全性
<a name="data-delivery-security"></a>

 使用本主题了解在 Amazon Kinesis Data Streams 中传输数据的安全功能和最佳实践，包括加密、访问控制和审计日志。

## 传输中加密
<a name="data-delivery-security-encryption-transit"></a>

 数据传输与其目的地之间的所有通信在传输过程中均使用 TLS 1.2 或更高版本进行加密。这包括通过Apache Iceberg和通用Amazon S3存储桶传输到流媒体表的数据，以及与 Amazon Glue 架构注册表和死信队列的通信。

## 静态加密
<a name="data-delivery-security-encryption-rest"></a>

 流媒体表和亚马逊 S3 交付存储在 Amazon S3 中传输数据。所有交付的数据均在服务器端静态加密。这适用于两种目标类型，因为Apache Iceberg上的流式传输表和通用Amazon S3存储桶都将数据存储在Amazon S3中。您无需采取任何操作即可对交付的数据进行加密。

### 静态加密选项
<a name="data-delivery-security-encryption-options"></a>

 您可以为传送的数据选择以下加密选项之一：
+ **SSE-S3 （默认）**— 使用 Amazon S3 托管密钥进行 Server-side加密。如果未指定客户管理密钥，则这是默认设置。无需其他配置。
+ **SSE-KMS 使用客户管理的密钥 ** — 使用您拥有和管理的对称客户管理 Amazon KMS 密钥进行 Server-side 加密。

### 使用客户管理的密钥进行静态加密
<a name="data-delivery-security-encryption-cmk"></a>

 由于两种目标类型的交付数据都存储在 Amazon S3 中，因此静态加密与 Amazon S3 服务器端加密的工作方式相同，包括 Amazon KMS 密钥的使用方式、所需的密钥权限、加密上下文和审计。仅支持对称加密 Amazon KMS 密钥。有关 Amazon S3 如何使用 Amazon KMS 密钥进行服务器端加密的完整详细信息，请参阅 Amaz * on S3 用户指南[中的](https://docs.amazonaws.cn/AmazonS3/latest/userguide/UsingKMSEncryption.html)使用带 Amazon KMS 密钥的服务器端加密 (SSE-KMS)。*

 要使用客户管理的密钥加密传送的数据，请在使用创建交付时在`EncryptionConfiguration`参数中指定密钥`CreateChannel`。有关更多信息，请参阅《*亚马逊 Kinesis 数据流 API 参考*》中的[CreateChannel](https://docs.amazonaws.cn/kinesis/latest/APIReference/API_CreateChannel.html)操作。创建交付后，加密配置是不可变的；要对其进行更改，请删除交付并创建新的交付。

 有关服务执行角色需要使用客户管理密钥的特定 Amazon KMS 权限，请参阅[用于数据传输的 IAM 权限](data-delivery-iam.md)。

**注意**  
 您必须使用客户管理的 Amazon KMS 密钥进行目标加密。不支持 Amazon 托管式密钥 （`aws/kinesis`别名）。也不支持使用加密 Amazon 托管式密钥 的源流；请参阅[源流加密](#data-delivery-security-source-stream-encryption)。

### 监控 Amazon KMS 交互
<a name="data-delivery-security-encryption-monitoring"></a>

 您可以审核客户管理密钥的使用情况 Amazon CloudTrail。 Amazon KMS 加密和解密交付对象（例如`GenerateDataKey`和`Decrypt`）的加密操作会出现在您的 CloudTrail 事件历史记录中。有关查找 Amazon KMS 事件的更多信息，请参阅*Amazon Key Management Service 开发人员指南[中的](https://docs.amazonaws.cn/kms/latest/developerguide/logging-using-cloudtrail.html#searching-kms-ct)审计 Amazon KMS 密钥使用情况*。

## 源流加密
<a name="data-delivery-security-source-stream-encryption"></a>

**重要**  
 如果您的 Kinesis 数据流使用 Amazon 托管式密钥 （`aws/kinesis`别名）加密，则无法创建交付。`CreateChannel`使用加密的流同步失败。 Amazon 托管式密钥

 要在加密流上使用流媒体表或 Amazon S3 交付，请使用客户管理的密钥进行流加密。您可以使用更改现有直播的加密密钥`StartStreamEncryption`。完全支持使用客户管理密钥加密的流。

## IAM 访问控制
<a name="data-delivery-security-iam"></a>

 遵循以下最佳实践，通过数据传输进行 IAM 访问控制：
+ **最低权限 **-仅授予服务执行角色所需的最低权限。将 Amazon S3 权限范围限定为特定的存储桶和前缀，而不是使用通配符。
+ **范围限定到特定资源 **-限制交付写入的特定存储桶、表存储桶或表的权限。避免使用 `Resource: "*"`。
+ **防范混乱 ** — 始终在信任政策中加入`aws:SourceArn`和`aws:SourceAccount`条件，以防止其他服务或账户承担执行职责。

## Amazon CloudTrail 日志记录
<a name="data-delivery-security-cloudtrail"></a>

 所有交付 API 调用均由记录 Amazon CloudTrail。这包括`CreateChannel`、`UpdateChannel``DeleteChannel`、`DescribeChannel`、和`ListChannels`。您可以使用 Amazon CloudTrail 日志来审核谁创建、修改或删除了交付资源，以及这些操作何时发生。