本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
Kinesis Video Streams 中的数据保护
您可以使用服务器端加密 (SSE) 和 AWS Key Management Service (AWS KMS) 密钥,通过对 Amazon Kinesis Video Streams 中的静态数据进行加密,从而满足严格的数据管理要求。
什么是 Kinesis Video Streams 的服务器端加密?
服务器端加密是 Kinesis Video Streams 中的一项功能,它使用您指定的密钥在数据静态存储之前自动对其 AWS KMS 进行加密。数据在写入 Kinesis Video Streams 流存储层之前会对其进行加密,从存储中取回数据后会被解密。因此,在 Kinesis Video Streams 服务中,您的数据始终处于静态加密状态。
借助服务器端加密,您的 Kinesis 视频流制作者和使用者无需KMS管理密钥或加密操作。如果启用了数据保留,则您的数据在进入和离开 Kinesis Video Streams 时会自动加密,因此您的静态数据将被加密。 AWS KMS 提供了服务器端加密功能使用的所有密钥。 AWS KMS 简化了 Kinesis Video Streams 的KMS密钥的使用,该密钥 AWS由导入到服务 AWS KMS 中的用户指定的密钥管理。 AWS KMS
费用、区域和性能注意事项
当您应用服务器端加密时,您需要支付 AWS KMS API使用量和密钥成本。与定制 AWS KMS 钥匙不同,(Default) aws/kinesis-video
KMS钥匙是免费提供的。但是,您仍然必须支付Kinesis Video Streams代表您产生的API使用费用。
API使用费用适用于每个KMS密钥,包括自定义密钥。 AWS KMS 费用会随着您在数据创建者和使用者身上使用的用户凭证数量而变化,因为每个用户凭证都需要对 AWS KMS的唯一API调用。
下面按资源介绍各项费用:
键
-
AWS 由(别名
aws/kinesis-video
=)管理的 Kinesis Video Streams 的KMS密钥是免费的。 -
用户生成的KMS密钥需要 AWS KMS key 付费。有关更多信息,请参阅AWS Key Management Service 定价
。
AWS KMS API用法
API生成新的数据加密密钥或检索现有加密密钥的请求会随着流量的增加而增加,并且需要支付 AWS KMS 使用成本。有关更多信息,请参阅AWS Key Management Service 定价:用量
即使保留期设置为 0(无保留期),Kinesis Video Streams 也会生成密钥请求。
按区域的服务器端加密的可用性
在所有提供 Kinesis Video Streams 的地方,都可以对 Kinesis 视频流 AWS 区域 进行服务器端加密。
如何开始使用服务器端加密?
Kinesis Video Streams 始终启用服务器端加密。如果在创建直播时未指定用户提供的密钥,则使用 AWS 托管式密钥 (由 Kinesis Video Streams 提供)。
在创建 Kinesis 视频流时,必须将用户提供的KMS密钥分配给 Kinesis 视频流。你不能使用UpdateStreamAPI后面的密钥为直播分配不同的密钥。
您可以通过两种方式为 Kinesis 视频流分配用户提供的KMS密钥:
-
在中创建 Kinesis 视频流时 AWS Management Console,请在创建新视频流页面的加密选项卡中指定KMS密钥。
-
使用创建 Kinesis 视频流时 CreateStreamAPI,请在参数中指定密钥 ID。
KmsKeyId
创建和使用客户管理的密钥
本节介绍如何创建和使用自己的KMS密钥,而不是使用由 Amazon Kinesis Video Streams 管理的密钥。
创建客户托管的密钥
有关如何创建自己的密钥的信息,请参阅AWS Key Management Service 开发者指南中的创建密钥。为账户创建密钥后,Kinesis Video Streams 服务会在客户管理的密钥列表中返回这些密钥。
使用由客户托管的密钥。
将正确的权限应用于您的消费者、生产者和管理员之后,您就可以在自己的密钥 AWS 账户 或其他KMS密钥中使用自定义密钥 AWS 账户。您账户中的所有KMS密钥都显示在控制台上的客户托管密钥列表中。
要使用位于其他账户中的自定义KMS密钥,您必须拥有使用这些密钥的权限。您还必须使用创建直播CreateStream
API。您不能在控制台中创建的直播中使用来自不同账户的KMS密钥。
注意
在执行PutMedia
或GetMedia
操作之前,KMS密钥不会被访问。这会产生以下结果:
-
如果您指定的密钥不存在,则
CreateStream
操作会成功,但对流PutMedia
的GetMedia
操作将失败。 -
如果您使用提供的密钥 (
aws/kinesis-video
),则在执行第一个PutMedia
或GetMedia
操作之前,该密钥不会出现在您的账户中。
使用客户托管密钥的权限
在对客户托管密钥使用服务器端加密之前,必须配置KMS密钥策略以允许对直播进行加密以及加密和解密流记录。有关 AWS KMS 权限的示例和更多信息,请参阅AWS KMS API权限:操作和资源参考。
注意
使用默认服务密钥进行加密不需要应用自定义IAM权限。
在使用客户托管密钥之前,请验证您的 Kinesis 视频流制作者和使用者(IAM委托人)是否为 AWS KMS 默认密钥策略中的用户。否则,与流相关的读写操作会失败,这可能最终导致数据丢失、处理延迟或应用程序挂起。您可以使用IAM策略管理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-video:PutMedia", ], "Resource": "arn:aws:kinesis-video:*: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-video:GetMedia", ], "Resource": "arn:aws:kinesis-video:*:123456789012:MyStream" } ] }