本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
使用用户生成的 KMS 密钥的权限
在将服务器端加密与用户生成的 KMS 密钥配合使用之前,必须配置 AWS KMS 密钥策略以允许对流进行加密以及对流记录进行加密和解密。有关 AWS KMS 权限的示例和更多信息,请参阅 AWS KMS API 权限:操作和资源参考。
注意
使用默认服务密钥进行加密不需要应用自定义 IAM 权限。
在您使用用户生成的 KMS 主密钥之前,请确保您的 Kinesis 流创建器和消费端(IAM 主体)是 KMS 主密钥政策中的用户。否则,与流相关的读写操作会失败,这可能最终导致数据丢失、处理延迟或应用程序挂起。您可以使用 IAM policy 来管理 KMS 密钥的权限。有关更多信息,请参阅在 AWS KMS 中使用 IAM 策略。
Kinesis Data Streams 加密上下文
当 Amazon Kinesis Data Streams 代表您 AWS KMS 调用时,它会将加密上下文传递 AWS KMS 给该上下文,该上下文可用作密钥策略和授权中的授权条件。Kinesis Data Streams 在所有调用中都使用流 ARN 作为加密上下文。 AWS KMS
"encryptionContext": { "aws:kinesis:arn": "arn:aws:kinesis:region:account-id:stream/stream-name" }
您可以使用加密上下文来识别审核记录和日志中您的 KMS 密钥的使用情况。它还以纯文本形式出现在日志中,例如。 AWS CloudTrail
要将您的 KMS 密钥的使用限制为从 Kinesis Data Streams 发出的针对特定流的请求,请使用 kms:EncryptionContext:aws:kinesis:arn KMS 密钥策略或 IAM 策略中的条件密钥。
产生器权限示例
您的 Kinesis 流创建器必须拥有 kms:GenerateDataKey 权限。
消费端权限示例
您的 Kinesis 流消费端必须拥有 kms:Decrypt 权限。
适用于 Apache Flink 的亚马逊托管服务,并 AWS Lambda 使用角色来消费 Kinesis 直播。确保将 kms:Decrypt 权限添加到这些消费端使用的角色。
流管理员权限
Kinesis 流管理员必须有权调用 kms:List* 和 kms:DescribeKey*。