使用用户生成的 KMS 主密钥的权限 - Amazon Kinesis Data Streams

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

使用用户生成的 KMS 主密钥的权限

在将服务器端加密与用户生成的 KMS 主密钥配合使用之前,必须配置 AWS KMS 密钥策略以允许对流进行加密以及对流记录进行加密和解密。有关 AWS KMS 权限的示例和更多信息,请参阅 AWS KMS API 权限:操作和资源参考

注意

使用默认服务密钥进行加密不需要应用自定义 IAM 权限。

在您使用用户生成的 KMS 主密钥之前,请确保您的 Kinesis 流创建器和消费端(IAM 主体)是 KMS 主密钥政策中的用户。否则,与流相关的读写操作会失败,这可能最终导致数据丢失、处理延迟或应用程序挂起。您可以使用 IAM policy 来管理 KMS 密钥的权限。有关更多信息,请参阅将 IAM 策略与 AWS KMS 配合使用

创建者权限示例

您的 Kinesis 流创建器必须拥有 kms:GenerateDataKey 权限。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "kms:GenerateDataKey" ], "Resource": "arn:aws:kms:us-west-2:123456789012:key/1234abcd-12ab-34cd-56ef-1234567890ab" }, { "Effect": "Allow", "Action": [ "kinesis:PutRecord", "kinesis:PutRecords" ], "Resource": "arn:aws:kinesis:*:123456789012:MyStream" } ] }

消费端权限示例

您的 Kinesis 流消费端必须拥有 kms:Decrypt 权限。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "kms:Decrypt" ], "Resource": "arn:aws:kms:us-west-2:123456789012:key/1234abcd-12ab-34cd-56ef-1234567890ab" }, { "Effect": "Allow", "Action": [ "kinesis:GetRecords", "kinesis:DescribeStream" ], "Resource": "arn:aws:kinesis:*:123456789012:MyStream" } ] }

适用于 Apache Flink 的亚马逊托管服务,并 AWS Lambda 使用角色来消费 Kinesis 直播。确保将 kms:Decrypt 权限添加到这些消费端使用的角色。

流管理员权限

Kinesis 流管理员必须有权调用 kms:List*kms:DescribeKey*