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

WorkSpaces 如何使用 Amazon KMS

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

重要

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

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

使用 Amazon KMS 的 WorkSpaces 加密概述

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

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

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

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

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

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

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

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

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

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

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

WorkSpaces 加密上下文

WorkSpaces 不会直接使用您的 Amazon KMS key 进行加密操作(例如 EncryptDecryptGenerateDataKey 等),这意味着 WorkSpaces 不会向 Amazon KMS 发送包含加密上下文的请求。但是,当 Amazon EBS 为 WorkSpaces 的加密卷请求加密的数据密钥(使用 Amazon KMS 的 WorkSpaces 加密概述 中的 步骤 3),以及请求该数据密钥的纯文本副本 (步骤 5) 时,将在请求中提供加密上下文。加密上下文提供 Amazon KMS 用于确保数据完整性而使用的额外的身份验证数据 (AAD)。加密上下文也将写入您的 Amazon CloudTrail 日志文件,这有助于您了解为什么使用给定的 Amazon KMS key。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 提供代表您使用 KMS 密钥的权限

您可以在使用 WorkSpaces 的 Amazon 托管式密钥 (aws/workspaces) 或客户托管密钥保护您的 Workspace 数据。如果您使用客户托管密钥,您需要授予 WorkSpaces 代表您账户中的 WorkSpaces 管理员使用 KMS 密钥的权限。默认情况下,适用于 WorkSpaces 的 Amazon 托管式密钥 具有必需权限。

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

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

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

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

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

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

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

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

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

  5. 选择 Key policy (密钥策略) 选项卡。在 Key users(密钥用户)下,选择 Add(添加)。

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

添加 WorkSpaces 管理员作为 KMS 密钥的密钥用户 (Amazon KMS API)

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

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

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

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

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

要为您的 WorkSpaces 管理员提供这些权限,请使用 IAM 策略。为每个 WorkSpaces 管理员将与以下示例类似的策略语句添加到 IAM 策略。将示例 IAM 密钥 ARN (arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab) 替换为有效值。如果您的 WorkSpace 管理员仅使用 WorkSpaces 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": "*" } ] }