View a markdown version of this page

数据传输的安全性 - Amazon Kinesis Data Streams

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

数据传输的安全性

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

传输中加密

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

静态加密

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

静态加密选项

您可以为传送的数据选择以下加密选项之一:

  • SSE-S3 (默认)— 使用 Amazon S3 托管密钥进行 Server-side加密。如果未指定客户管理密钥,则这是默认设置。无需其他配置。

  • SSE-KMS 使用客户管理的密钥 — 使用您拥有和管理的对称客户管理 AWS KMS 密钥进行 Server-side 加密。

使用客户管理的密钥进行静态加密

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

要使用客户管理的密钥加密传送的数据,请在使用创建交付时在EncryptionConfiguration参数中指定密钥CreateChannel。有关更多信息,请参阅《亚马逊 Kinesis 数据流 API 参考》中的CreateChannel操作。创建交付后,加密配置是不可变的;要对其进行更改,请删除交付并创建新的交付。

有关服务执行角色需要使用客户管理密钥的特定 AWS KMS 权限,请参阅数据传输的 IAM 权限。

注意

您必须使用客户管理的 AWS KMS 密钥进行目标加密。不支持 AWS 托管式密钥 (aws/kinesis别名)。也不支持使用加密 AWS 托管式密钥 的源流;请参阅源流加密。

监控 AWS KMS 交互

您可以审核客户管理密钥的使用情况 AWS CloudTrail。 AWS KMS 加密和解密交付对象(例如GenerateDataKey和Decrypt)的加密操作会出现在您的 CloudTrail 事件历史记录中。有关查找 AWS KMS 事件的更多信息,请参阅AWS Key Management Service 开发人员指南中的审计 AWS KMS 密钥使用情况。

源流加密

重要

如果您的 Kinesis 数据流使用 AWS 托管式密钥 (aws/kinesis别名)加密,则无法创建交付。CreateChannel使用加密的流同步失败。 AWS 托管式密钥

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

IAM 访问控制

遵循以下最佳实践,通过数据传输进行 IAM 访问控制:

  • 最低权限 -仅授予服务执行角色所需的最低权限。将 Amazon S3 权限范围限定为特定的存储桶和前缀,而不是使用通配符。

  • 范围限定到特定资源 -限制交付写入的特定存储桶、表存储桶或表的权限。避免使用 Resource: "*"。

  • 防范混乱 — 始终在信任政策中加入aws:SourceArn和aws:SourceAccount条件,以防止其他服务或账户承担执行职责。

AWS CloudTrail 日志记录

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