WorkSpaces 以 WorkSpaces 个人身份加密 - Amazon WorkSpaces

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

WorkSpaces 以 WorkSpaces 个人身份加密

WorkSpaces 已与 AWS Key Management Service (AWS KMS)。 这使您能够对 WorkSpaces 使用的存储卷进行加密 AWS KMS 钥匙。当你启动 a 时 WorkSpace,你可以加密根卷(对于微软 Windows,是 C 盘;对于 Linux,/)和用户卷(对于 Windows,是 D 盘;对于 Linux,/home)。这样做可确保静态存储的数据、卷的磁盘 I/O 及从加密卷创建的快照都会被加密。

注意

先决条件

你需要一个 AWS KMS 在开始加密过程之前先进行密钥。这把KMS钥匙可以是 AWS适用于亚马逊的托管KMS密钥 WorkSpaces (aws/workspaces)或对称的客户托管密钥。KMS

  • AWS 托管KMS密钥 — 在您首次通过 WorkSpaces 控制台在某个地区启动未加密 WorkSpace 的密钥时,Amazon WorkSpaces 会自动创建一个 AWS 您账户中的托管KMS密钥(aws/workspaces)。你可以选择这个 AWS 用于加密您的用户和根卷的托管密KMS钥 WorkSpace。有关详细信息,请参阅使用 WorkSpaces 加密概述 AWS KMS

    你可以看这个 AWS 托管KMS密钥,包括其政策和授权,并可以跟踪其使用情况 AWS CloudTrail 日志,但您无法使用或管理此KMS密钥。Amazon WorkSpaces 创建并管理此KMS密钥。只有 Amazon WorkSpaces 可以使用此KMS密钥,并且 WorkSpaces 只能使用它来加密您账户中的 WorkSpaces 资源。

    AWS 托管KMS密钥(包括 Amazon WorkSpaces 支持的密钥)每三年轮换一次。有关详细信息,请参见旋转 AWS KMS 键AWS Key Management Service 开发者指南

  • 客户托管KMS密钥 — 或者,您可以选择使用创建的对称客户托管KMS密钥 AWS KMS。 您可以查看、使用和管理此KMS密钥,包括设置其策略。有关创建KMS密钥的更多信息,请参阅中的创建密钥 AWS Key Management Service 开发者指南。有关使用创建KMS密钥的更多信息 AWS KMS API,请参阅《使用密钥》中的 AWS Key Management Service 开发者指南

    除非您决定启用自动KMS密钥轮换,否则客户管理的密钥不会自动轮换。有关详细信息,请参见旋转 AWS KMS里面的钥匙 AWS Key Management Service 开发者指南

重要

手动轮换KMS密钥时,必须同时启用原始KMS密钥和新KMS密钥,以便 AWS KMS 可以解密原始密KMS钥加密 WorkSpaces 的。如果您不想保持原始KMS密钥处于启用状态,则必须重新创建 WorkSpaces并使用新密KMS钥对其进行加密。

您必须满足以下要求才能使用 AWS KMS 加密你的密钥 WorkSpaces:

限制

  • 您无法加密现有的 WorkSpace。启动 WorkSpace 时必须对其进行加密。

  • 不支持使用加密 WorkSpace 镜像创建自定义镜像。

  • 目前不支持对加密文件 WorkSpace 禁用加密。

  • WorkSpaces 在启用根卷加密的情况下启动可能需要长达一个小时才能进行配置。

  • 要重新启动或重建加密的 WorkSpace,请先确保 AWS KMS 密钥已启用;否则, WorkSpace 将无法使用。要确定KMS密钥是否已启用,请参阅中的 “显示KMS密钥详细信息AWS Key Management Service 开发者指南

使用 WorkSpaces 加密概述 AWS KMS

使用加密卷创建 WorkSpaces 时, WorkSpaces 使用亚马逊弹性区块存储 (AmazonEBS) 来创建和管理这些卷。Amazon 使用行业标准的 AES -256 算法使用数据密钥对您的卷进行EBS加密。Amazon EBS 和 Amazon 都 WorkSpaces 使用您的KMS密钥来处理加密卷。有关EBS批量加密的更多信息,请参阅《亚马逊EC2用户指南》中的 “亚马逊EBS加密”。

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

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

  2. WorkSpaces 为创建加密EBS卷 WorkSpace 并指定要使用的KMS密钥以及该卷的用户和目录。此操作EBS将创建一项授权,允许 Amazon 仅将您的KMS密钥用于此卷 WorkSpace 和卷,也就是说,仅适用于与指定用户和目录 WorkSpace 关联的,并且仅用于指定的卷。

  3. Amazon EBS 请求使用您的密钥加密的卷数据密KMS钥,并指定 WorkSpace 用户的 Active Directory 安全标识符 (SID) 和 AWS Directory Service 目录 ID 以及作为加密上下文的 Amazon EBS 卷 ID。

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

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

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

  7. Amazon EBS 使用纯文本数据密钥对进出加密卷的所有数据进行加密。只要卷连接到,Amazon 就会将纯文本数据密钥EBS保存在内存中 WorkSpace。

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

  9. 当你使用 AWS Management Console 删除 WorkSpace (或使用中的TerminateWorkspaces操作 WorkSpaces API), WorkSpaces 然后 Amazon EBS 将取消允许他们为此使用您的KMS密钥的授权 WorkSpace。

WorkSpaces 加密上下文

WorkSpaces 不会将您的KMS密钥直接用于加密操作(例如EncryptDecryptGenerateDataKey、等),这意味着 WorkSpaces 不会向发送请求 AWS KMS 其中包括加密上下文。但是,当 Amazon EBS 请求您的加密卷的加密数据密钥时 WorkSpaces (步骤 3使用 WorkSpaces 加密概述 AWS KMS)以及请求该数据密钥的纯文本副本(步骤 5)时,它会在请求中包含加密上下文。

加密上下文提供了其他经过身份验证的数据 (AAD) AWS KMS 用于确保数据完整性。加密上下文也会写入您的 AWS CloudTrail 日志文件,这可以帮助您了解为什么使用给定KMS密钥。Amazon 在加密上下文中EBS使用以下内容:

  • 与之关联的 Active Directory 用户的安全标识符 (SID) WorkSpace

  • 的目录 ID AWS Directory Service 与相关联的目录 WorkSpace

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

您可以根据以下条件保护您的 WorkSpace 数据 AWS WorkSpaces(aws/workspaces)的托管KMS密钥或客户管理的密钥。KMS如果您使用客户管理的KMS密钥,则需要授予代表账户 WorkSpaces 管理员使用该KMS密钥的 WorkSpaces 权限。这些区域有: AWS 的 WorkSpaces托管KMS密钥默认具有所需的权限。

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

您的 WorkSpaces 管理员还需要获得使用权限 WorkSpaces。有关这些权限的更多信息,请参阅 的身份和访问管理 WorkSpaces

第 1 部分:将 WorkSpaces 管理员添加为关键用户

要向 WorkSpaces 管理员授予他们所需的权限,您可以使用 AWS Management Console 或者 AWS KMS API.

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

  1. 登录 AWS Management Console 然后打开 AWS Key Management Service (AWS KMS) 控制台位于 https://console.aws.amazon.com/kms。

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

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

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

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

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

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

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

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

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

第 2 部分:使用IAM策略向 WorkSpaces 管理员授予其他权限

如果您选择客户管理的KMS密钥用于加密,则必须制定IAM政策,允许 Amazon WorkSpaces 代表您账户中启动加密的IAM用户使用该KMS密钥 WorkSpaces。该用户还需要获得使用Amazon的权限 WorkSpaces。有关创建和编辑IAM用户策略的更多信息,请参阅《IAM用户指南》和《管理IAM策略的身份和访问管理 WorkSpaces

WorkSpaces 加密需要对密KMS钥的有限访问权限。以下是您可以使用的一个示例密钥策略。该政策将可以管理的校长区分开来 AWS KMS 来自那些能使用它的人的密钥。在使用此示例密钥策略之前,请将示例账户 ID 和IAM用户名替换为账户中的实际值。

第一条语句与默认语句相匹配 AWS KMS 密钥政策。它允许您的账户使用IAM策略来控制对KMS密钥的访问权限。第二和第三条语句定义了哪个 AWS 委托人可以分别管理和使用密钥。第四条语句启用 AWS 与之集成的服务 AWS KMS 代表指定的委托人使用密钥。此语句启用 AWS 用于创建和管理补助金的服务。该语句使用条件元素,将对 KMS Key 的授予限制为由 AWS 代表您账户中的用户提供的服务。

注意

如果您的 WorkSpaces 管理员使用 AWS Management Console 要 WorkSpaces 使用加密卷进行创建,管理员需要列出别名和列出密钥的权限("kms:ListAliases""kms:ListKeys"权限)。如果您的 WorkSpaces 管理员仅使用 Amazon WorkSpaces API(不使用控制台),则可以省略"kms:ListAliases""kms:ListKeys"权限。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": {"AWS": "arn:aws:iam::123456789012:root"}, "Action": "kms:*", "Resource": "*" }, { "Effect": "Allow", "Principal": {"AWS": "arn:aws:iam::123456789012:user/Alice"}, "Action": [ "kms:Create*", "kms:Describe*", "kms:Enable*", "kms:List*", "kms:Put*", "kms:Update*", "kms:Revoke*", "kms:Disable*", "kms:Get*", "kms:Delete*" ], "Resource": "*" }, { "Effect": "Allow", "Principal": {"AWS": "arn:aws:iam::123456789012:user/Alice"}, "Action": [ "kms:Encrypt", "kms:Decrypt", "kms:ReEncrypt", "kms:GenerateDataKey*", "kms:DescribeKey" ], "Resource": "*" }, { "Effect": "Allow", "Principal": {"AWS": "arn:aws:iam::123456789012:user/Alice"}, "Action": [ "kms:CreateGrant", "kms:ListGrants", "kms:RevokeGrant" ], "Resource": "*", "Condition": {"Bool": {"kms:GrantIsForAWSResource": "true"}} } ] }

加密的用户或角色的IAM策略 WorkSpace 必须包括对客户管理的KMS密钥的使用权限以及对的访问 WorkSpaces权限。要向IAM用户或角色 WorkSpaces 授予权限,您可以将以下示例策略附加到该IAM用户或角色。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ds:*", "ds:DescribeDirectories", "workspaces:*", "workspaces:DescribeWorkspaceBundles", "workspaces:CreateWorkspaces", "workspaces:DescribeWorkspaceBundles", "workspaces:DescribeWorkspaceDirectories", "workspaces:DescribeWorkspaces", "workspaces:RebootWorkspaces", "workspaces:RebuildWorkspaces" ], "Resource": "*" } ] }

用户必须遵守以下IAM策略才能使用 AWS KMS。 它为用户提供了对KMS密钥的只读访问权限以及创建授权的能力。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "kms:CreateGrant", "kms:Describe*", "kms:List*" ], "Resource": "*" } ] }

如果要在策略中指定KMS密钥,请使用类似于以下内容的IAM策略。将示例KMS密钥ARN替换为有效的密钥。

{ "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": "*" } ] }

加密 WorkSpace

要加密 WorkSpace
  1. 打开 WorkSpaces 控制台,网址为https://console.aws.amazon.com/workspaces/

  2. 选择 Launch WorkSpaces 并完成前三个步骤。

  3. 对于 “WorkSpaces 配置” 步骤,请执行以下操作:

    1. 选择要加密的卷:根卷用户卷或这两种卷。

    2. 加密密钥中,选择一个 AWS KMS 钥匙,要么是 AWS 由 Amazon 创建的托管KMSKMS密钥 WorkSpaces 或您创建的密钥。您选择的KMS密钥必须是对称的。Amazon WorkSpaces 不支持非对称KMS密钥。

    3. 选择下一步

  4. 选择 “启动” WorkSpaces。

查看已加密 WorkSpaces

要从 WorkSpaces 控制台查看哪些 WorkSpaces 和卷已加密,请WorkSpaces从左侧的导航栏中进行选择。“卷加密” 列显示 WorkSpace 每个卷加密是启用还是禁用。要查看哪些特定卷已加密,请展开 WorkSpace 条目以查看 “加密卷” 字段。