本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
数据传输的安全性
使用本主题了解在 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 日志来审核谁创建、修改或删除了交付资源,以及这些操作何时发生。