WorkSpaces 如何使用Amazon KMS - Amazon Key Management Service
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

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

WorkSpaces 如何使用Amazon KMS

您可以使用WorkSpaces配置一个基于云的桌面(WorkSpace)为您的每个最终用户。当您启动新的工作区时,可以选择对其卷进行加密,并决定使用哪个 Amazon KMS 客户主密钥 (CMK) 进行加密。您可以选择Amazon托管 CMK适用于 WorkSpaces 的 (aws/workspaces) 或对称客户托管 CMK

重要

WorkSpaces 只支持对称 CMK。不能使用非对称 CMK 来加密 WorkSpaces 中的卷。要获取确定 CMK 是对称还是非对称的帮助,请参阅识别对称 CMK 和非对称 CMK

有关创建使用加密卷的 WorkSpaces 的更多信息,请转到加密 WorkSpace中的Amazon WorkSpaces 管理指南

使用的 WorkSpaces 加密概述Amazon KMS

当您创建使用加密卷的 WorkSpaces 时,WorkSpace 将使用亚马逊 Elastic Block Store (Amazon EBS) 创建和管理这些卷。这两种服务都使用您的客户主密钥 (CMK) 来处理加密的卷。有关 EBS 卷加密的更多信息,请参阅以下文档:

当您启动使用加密卷的 WorkSpace 时,端到端过程的工作方式如下所示:

  1. 您指定用于加密的 CMK,以及 WorkSpace 的用户和目录。该操作将创建授予,允许 WorkSpaces 将您的 CMK 仅用于此 WorkSpace,即仅用于与指定用户和目录相关联的 WorkSpace。

  2. WorkSpaces 创建加密的 EBS 卷,并指定要使用的 CMK,以及该卷的用户和目录 (与您在步骤 1)。该操作将创建授予,允许 Amazon EBS 将您的 CMK 仅用于此 WorkSpace 和卷,即仅用于与指定用户和目录相关联的 WorkSpace,以及指定的卷。

  3. Amazon EBS 请求使用您的 CMK 加密的卷数据密钥,并指定 WorkSpace 用户的Sid和目录 ID 以及卷 ID 作为加密上下文。

  4. Amazon KMS创建新的数据密钥,使用您的 CMK 对其进行加密,然后将加密的数据密钥发送到 Amazon EBS。

  5. WorkSpaces 使用 Amazon EBS 将加密卷附加到您的 WorkSpace。Amazon EBS 会将加密的数据密钥发送到Amazon KMS使用Decrypt请求,并指定 WorkSpace 用户的Sid、其目录 ID 和卷 ID(用作加密上下文

  6. Amazon KMS使用您的 CMK 解密数据密钥,然后将纯文本数据密钥发送到 Amazon EBS。

  7. Amazon EBS 使用纯文本数据密钥加密所有传入和传出加密卷的数据。只要卷附加在 WorkSpace 上,Amazon EBS 就会将纯文本数据密钥保存在内存中。

  8. Amazon EBS 会存储加密的数据密钥(在步骤 4) 与卷元数据一起使用,以供将来重启或重建 WorkSpace 时使用。

  9. 当您使用Amazon Web Services Management Console删除 WorkSpace(或使用TerminateWorkspaces操 WorkSpaces),WorkSpace 和 Amazon EBS 将停用允许它们针对该 WorkSpace 使用 CMK 的授权。

WorkSpaces 加密上下文

WorkSpaces 不会直接使用您的客户主密钥 (CMK) 进行加密操作(例如EncryptDecryptGenerateDataKey等),这意味着 WorkSpaces 不会将请求发送到Amazon KMS包含加密上下文。但是,当 Amazon EBS 为您的 WorkSpaces 的加密卷请求一个加密数据密钥 (步骤 3中的使用的 WorkSpaces 加密概述Amazon KMS),并且当它请求该数据密钥的明文副本(步骤 5),它在请求中包含加密上下文。加密上下文提供其他已经过身份验证的数据(AAD) 指出,Amazon KMS用于确保数据完整性。加密上下文也将写入您的 Amazon CloudTrail 日志文件,这有助于您了解为什么使用给定的客户主密钥 (CMK)。Amazon EBS 会对加密上下文使用以下内容:

  • 与 WorkSpace 关联的 Amazon Directory Service 用户的 sid

  • 与 WorkSpace 关联的 Amazon Directory Service 目录的目录 ID

  • 加密卷的卷 ID

以下示例显示了 Amazon EBS 使用的加密上下文的 JSON 表示形式:

{ "aws:workspaces:sid-directoryid": "[S-1-5-21-277731876-1789304096-451871588-1107]@[d-1234abcd01]", "aws:ebs:id": "vol-1234abcd" }

为 WorkSpaces 提供代表您使用 CMK 的权限

您可以在Amazon适用于 WorkSpaces 的托管 CMK (aws/workspaces)或客户托管 CMK。如果您使用客户托管 CMK,则需要为提供代表您账户中的 WorkSpaces 管理员使用 CMK 的权限。这些区域有:Amazon默认情况下,适用于 WorkSpaces 的托管 CMK 具有必需权限。

要准备您的客户托管 CMK 以便与 WorkSpaces 结合使用,请使用以下过程。

WorkSpaces 管理员还需拥有使用 WorkSpaces 的权限。有关这些权限的更多信息,请转到控制对 WorkSpaces 资源的访问中的Amazon WorkSpaces 管理指南

第 1 部分:将 WorkSpaces 管理员添加到 CMK 的密钥用户

要为 WorkSpaces 管理员提供其所需的权限,您可以使用Amazon Web Services Management Console或Amazon KMSAPI。

添加 WorkSpaces 管理员作为 CMK 的密钥用户 (控制台)

  1. 登录到 Amazon Web Services Management Console,然后通过以下网址打开 Amazon Key Management Service (Amazon KMS) 控制台:https://console.aws.amazon.com/kms

  2. 要更改Amazon区域,请使用页面右上角的区域选择器。

  3. 在导航窗格中,选择客户托管密钥

  4. 选择首选客户托管 CMK 的密钥 ID 或别名。

  5. 选择 Key policy (密钥策略) 选项卡。UDER关键用户中,选择Add

  6. 在 IAM 用户和角色列表中,选择与您的 WorkSpaces 管理员对应的用户和角色,然后选择Attach

要添加 WorkSpaces 管理员作为 CMK 的密钥用户 (Amazon KMSAPI)

  1. 使用 GetKeyPolicy 操作获取现有密钥策略,然后将策略文档保存到文件中。

  2. 在您的首选文本编辑器中打开策略文档。将与您的 WorkSpaces 管理员对应的 IAM 用户和角色添加到向关键用户授予权限。然后保存文件。

  3. 使用 PutKeyPolicy 操作将密钥策略应用于 CMK。

第 2 部分:为 WorkSpaces 管理员提供额外权限

如果您使用客户托管 CMK 来保护您的 WorkSpaces 数据,除了默认密钥密钥策略,则 WorkSpaces 管理员需要权限才能创建GRANTSCMK 上。此外,如果他们使用 Amazon Web Services Management Console通过加密的卷来创建 WorkSpaces,则 WorkSpaces 管理员需要具有列出别名和列出密钥的权限。有关创建和编辑 IAM 用户策略的信息,请参阅托管策略与内联策略中的IAM 用户指南

要为 WorkSpaces 管理员提供这些权限,请使用 IAM 策略。为每个 WorkSpaces 管理员将与以下示例类似的策略语句添加到 IAM 策略。将示例 CMK ARN (arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab) 替换为有效值。如果您的 WorkSpaces 管理员仅使用 WorkSpace API(而不是控制台),则可以省略使用"kms:ListAliases""kms:ListKeys"权限。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "kms:CreateGrant", "Resource": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab" }, { "Effect": "Allow", "Action": [ "kms:ListAliases", "kms:ListKeys" ], "Resource": "*" } ] }