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