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

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

如何 WorkSpaces 使用 Amazon KMS

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

重要

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

有关 WorkSpaces 使用加密卷创建的更多信息,请参阅《Amazon WorkSpaces 管理指南》 WorkSpace中的 “加密”。

使用 WorkSpaces 加密概述 Amazon KMS

使用加密卷创建 WorkSpaces 时, WorkSpaces 使用亚马逊弹性区块存储 (Amazon EBS) Elastic Block Store 来创建和管理这些卷。这两种服务都使用 Amazon KMS key 来处理加密卷。有关 EBS 卷加密的更多信息,请参阅以下文档:

当您 WorkSpaces 使用加密卷启动时, end-to-end 过程如下所示:

  1. 您可以指定用于加密的 KMS 密钥以及 WorkSpace的用户和目录。此操作会创建一项授权,该授权仅 WorkSpaces 允许为此使用您的 KMS 密钥 WorkSpace,也就是说,仅允许与指定用户和目录 WorkSpace 关联的用户使用您的 KMS 密钥。

  2. WorkSpaces 为创建加密的 EBS 卷 WorkSpace 并指定要使用的 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 Amazon KMS 通过Decrypt请求将加密的数据密钥发送到,并指定 WorkSpace 用户的Sid、其目录 ID 和卷 ID,后者用作加密上下文

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

  7. Amazon EBS 使用纯文本数据密钥加密所有传入和传出加密卷的数据。Amazon EBS 会将纯文本数据密钥保存在内存中,直至该卷连接到。 WorkSpace

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

  9. 当您使用删除 WorkSpace (或使用 WorkSpaces API 中的TerminateWorkspaces操作)时, WorkSpaces Amazon EBS 会停用允许他们使用您的 KMS 密钥进行此 WorkSpace操作的赠款。Amazon Web Services Management Console

WorkSpaces 加密上下文

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

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

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

  • 加密卷的卷 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 密钥的权限

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

要准备您的客户托管密钥以供使用 WorkSpaces,请按以下步骤操作。

WorkSpaces 管理员还需要获得使用权限 WorkSpaces。有关这些权限的更多信息,请参阅《Amazon WorkSpaces 管理指南》中的 “控制 WorkSpaces资源访问权限”。

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

要向 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 管理员对应的用户和角色,然后选择附加

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

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

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

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

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

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

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