

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

# WorkSpaces 以 WorkSpaces 个人身份加密
<a name="encrypt-workspaces"></a>

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

**注意**  
除了加密您的 WorkSpaces，您还可以在某些 AWS 美国地区使用 FIPS 终端节点加密。有关更多信息，请参阅 [为个人配置 FedRAMP 授权或国防部 SRG 合规性 WorkSpaces](fips-encryption.md)。
亚马逊不支持 Windows BitLocker 加密 WorkSpaces。  如果适用，亚马逊 WorkSpaces 将尝试解密在所有 Windows 操作系统上启动期间检测到的所有卷。  如果为卷上的任何卷启用了密码、PIN 或启动密钥的任意组合，则卷在启动过程中可能会变得无响应，可能会 WorkSpace 变得不健康且无法正常启动。

**Topics**
+ [前提条件](#encryption_prerequisites)
+ [限制](#encryption_limits)
+ [使用 WorkSpaces 加密概述 AWS KMS](#kms-workspaces-overview)
+ [WorkSpaces 加密上下文](#kms-workspaces-encryption-context)
+ [授 WorkSpaces 予代表您使用 KMS 密钥的权限](#kms-workspaces-permissions)
+ [加密 WorkSpace](#encrypt_workspace)
+ [查看已加密 WorkSpaces](#maintain_encryption)

## 前提条件
<a name="encryption_prerequisites"></a>

在开始加密过程之前，您需要一个密 AWS KMS 钥。此 KMS 密钥可以是适用于亚马逊的[AWS 托管 KMS 密钥](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#aws-managed-cmk) WorkSpaces （**aws/workspaces**），也可以是对称的[客户](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#customer-cmk)托管 KMS 密钥。
+ **AWS 托管 KMS 密钥** — 在您首次 WorkSpace 从 WorkSpaces 控制台启动某个地区的未加密密钥时，Amazon WorkSpaces 会自动在您的账户中创建 AWS 托管 KMS 密钥（**aws/workspaces**）。您可以选择此 AWS 托管 KMS 密钥来加密您的用户和根卷 WorkSpace。有关更多信息，请参阅 [使用 WorkSpaces 加密概述 AWS KMS](#kms-workspaces-overview)。

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

  AWS 托管 KMS 密钥（包括 Amazon WorkSpaces 支持的密钥）每年轮换一次。有关详细信息，请参阅《*AWS Key Management Service 开发人员指南》*中的[轮换 AWS KMS 密钥](https://docs.aws.amazon.com/kms/latest/developerguide/rotate-keys.html)。
+ **客户托管 KMS 密钥** — 或者，您可以选择使用 AWS KMS创建的对称客户托管 KMS 密钥。您可以查看、使用和管理此 KMS 密钥，包括设置其策略。有关创建 KMS 密钥的更多信息，请参阅《AWS Key Management Service 开发人员指南》**中的[创建密钥](https://docs.aws.amazon.com/kms/latest/developerguide/create-keys.html)。有关使用 AWS KMS API 创建 KMS 密钥的更多信息，[请参阅*AWS Key Management Service 开发人员指南*中的使用密钥](https://docs.aws.amazon.com/kms/latest/developerguide/programming-keys.html)。

  除非您决定启用自动密钥轮换，否则客户托管 KMS 密钥不会自动轮换。有关详细信息，请参阅《*AWS Key Management Service 开发人员指南》*中的[轮换 AWS KMS 密钥](https://docs.aws.amazon.com/kms/latest/developerguide/rotate-keys.html)。

**重要**  
手动轮换 KMS 密钥时，必须同时启用原始 KMS 密钥和新的 KMS 密钥，这样 AWS KMS 才能解密原始 KMS 密钥加密后的密钥。 WorkSpaces 如果您不想保持原始 KMS 密钥处于启用状态，则必须重新创建 WorkSpaces并使用新的 KMS 密钥对其进行加密。

您必须满足以下要求才能使用密 AWS KMS 钥加密您的 WorkSpaces：
+ **KMS 密钥必须是对称的。**Amazon WorkSpaces 不支持非对称 KMS 密钥。有关区分对称和非对称 KMS 密钥的信息，请参阅《AWS Key Management Service 开发人员指南》**中的[识别对称和非对称 KMS 密钥](https://docs.aws.amazon.com/kms/latest/developerguide/find-symm-asymm.html)。
+ **KMS 密钥必须已启用。**要确定是否启用 KMS 密钥，请参阅《AWS Key Management Service 开发人员指南》**中的[显示 KMS 密钥详细信息](https://docs.aws.amazon.com/kms/latest/developerguide/viewing-keys-console.html#viewing-console-details)。
+ **您必须拥有与 KMS 密钥相关联的正确权限和策略。**有关更多信息，请参阅 [第 2 部分：使用 IAM 策略向 WorkSpaces 管理员授予额外权限](#kms-permissions-iam-policy)。

## 限制
<a name="encryption_limits"></a>
+ 您无法加密现有的 WorkSpace。启动 WorkSpace 时必须对其进行加密。
+ 不支持使用加密 WorkSpace 镜像创建自定义镜像。
+ 目前不支持对加密文件 WorkSpace 禁用加密。
+ WorkSpaces 在启用根卷加密的情况下启动可能需要长达一个小时才能进行配置。
+ 要重新启动或重建加密的 WorkSpace，请先确保 AWS KMS 密钥已启用；否则，密钥 WorkSpace 将无法使用。要确定是否启用 KMS 密钥，请参阅《AWS Key Management Service 开发人员指南》**中的[显示 KMS 密钥详细信息](https://docs.aws.amazon.com/kms/latest/developerguide/viewing-keys-console.html#viewing-console-details)。

## 使用 WorkSpaces 加密概述 AWS KMS
<a name="kms-workspaces-overview"></a>

使用加密卷创建 WorkSpaces 时， WorkSpaces 使用亚马逊弹性区块存储 (Amazon EBS) Elastic Block Store 来创建和管理这些卷。Amazon EBS 通过行业标准的 AES-256 算法，利用数据密钥加密您的卷。Amazon EBS 和亚马逊都 WorkSpaces 使用您的 KMS 密钥来处理加密卷。有关 EBS 卷加密的更多信息，请参阅《Amazon EC2 用户指南》**中的 [Amazon EBS 加密](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EBSEncryption.html)。

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

1. 您可以指定用于加密的 KMS 密钥以及用于的用户和目录 WorkSpace。此操作会创建一项[授权，该授权](https://docs.aws.amazon.com/kms/latest/developerguide/grants.html)仅 WorkSpaces 允许为此使用您的 KMS 密钥 WorkSpace，也就是说，仅允许与指定用户和目录 WorkSpace关联的用户使用您的 KMS 密钥。

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

1. <a name="WSP-EBS-requests-encrypted-volume-data-key"></a>Amazon EBS 请求使用您的 KMS 密钥加密的卷数据密钥，并指定 WorkSpace 用户的 Active Directory 安全标识符 (SID) 和 AWS Directory Service 目录 ID 以及亚马逊 EBS 卷 ID 作为[加密](#kms-workspaces-encryption-context)上下文。

1. <a name="WSP-KMS-creates-data-key"></a>AWS KMS 创建新的数据密钥，使用您的 KMS 密钥对其进行加密，然后将加密的数据密钥发送到 Amazon EBS。

1. <a name="WSP-uses-EBS-to-attach-encrypted-volume"></a>WorkSpaces 使用 Amazon EBS 将加密卷附加到您的 WorkSpace。Amazon EBS AWS KMS 通过[https://docs.aws.amazon.com/kms/latest/APIReference/API_Decrypt.html](https://docs.aws.amazon.com/kms/latest/APIReference/API_Decrypt.html)请求将加密的数据密钥发送到，并指定 WorkSpace 用户的 SID、目录 ID 和卷 ID，后者用作加密上下文。

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

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

1. Amazon EBS 将加密的数据密钥（接收于[Step 4](#WSP-KMS-creates-data-key)）与卷元数据一起存储，以备将来重启或重建时使用。 WorkSpace

1. 当您使用删除 WorkSpace （或使用 WorkSpaces API 中的[https://docs.aws.amazon.com/workspaces/latest/devguide/API_TerminateWorkspaces.html](https://docs.aws.amazon.com/workspaces/latest/devguide/API_TerminateWorkspaces.html)操作）时， WorkSpaces Amazon EBS 会停用允许他们使用您的 KMS 密钥进行此 WorkSpace操作的授权。 AWS 管理控制台 

## WorkSpaces 加密上下文
<a name="kms-workspaces-encryption-context"></a>

WorkSpaces 不会将您的 KMS 密钥直接用于加密操作（例如[https://docs.aws.amazon.com/kms/latest/APIReference/API_Encrypt.html](https://docs.aws.amazon.com/kms/latest/APIReference/API_Encrypt.html)、、等），这意味着 WorkSpaces 不向包含[加密上下文](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#encrypt_context)的请求发送请求。 AWS KMS 但是，当 Amazon EBS 请求您的加密卷的加密数据密钥时 WorkSpaces （[Step 3](#WSP-EBS-requests-encrypted-volume-data-key)在[使用 WorkSpaces 加密概述 AWS KMS](#kms-workspaces-overview)）以及请求该数据密钥的纯文本副本（[Step 5](#WSP-uses-EBS-to-attach-encrypted-volume)）时，它会在请求中包含加密上下文。

 加密上下文提供了[额外的身份验证数据](https://docs.aws.amazon.com/crypto/latest/userguide/cryptography-concepts.html#term-aad) (AAD)， AWS KMS 用于确保数据完整性。加密上下文也会写入您的 AWS CloudTrail 日志文件，这可以帮助您了解使用给定 KMS 密钥的原因。Amazon EBS 会对加密上下文使用以下内容：
+ 与 Active Directory 用户关联的安全标识符 (SID) WorkSpace
+ 与之关联的 AWS Directory Service 目录的目录 ID WorkSpace
+ Amazon EBS 加密卷的卷 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 密钥的权限
<a name="kms-workspaces-permissions"></a>

您可以在 WorkSpaces（**aws/workspaces**）的 AWS 托管 KMS 密钥或客户托管的 KMS 密钥下保护您的 WorkSpace 数据。如果您使用客户托管的 KMS 密钥，则需要授予代表账户 WorkSpaces 管理员使用 KMS 密钥的 WorkSpaces 权限。默认情况下，的 AWS WorkSpaces托管 KMS 密钥具有所需的权限。

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

1. [将您的 WorkSpaces 管理员添加到 KMS 密钥的密钥策略中的密钥用户列表中](#kms-permissions-key-users)

1. [通过 IAM 策略为您的 WorkSpaces 管理员提供更多权限](#kms-permissions-iam-policy)

您的 WorkSpaces 管理员还需要获得使用权限 WorkSpaces。有关这些权限的更多信息，请参阅 [的身份和访问管理 WorkSpaces](workspaces-access-control.md)。

### 第 1 部分：将 WorkSpaces 管理员添加为关键用户
<a name="kms-permissions-key-users"></a>

要向 WorkSpaces 管理员授予他们所需的权限，您可以使用 AWS 管理控制台 或 AWS KMS API。

#### 将 WorkSpaces 管理员添加为 KMS 密钥的密钥用户（控制台）
<a name="kms-permissions-users-consoleAPI"></a>

1. 登录 AWS 管理控制台 并在 [https://console.aws.amazon.com/km](https://console.aws.amazon.com/kms) s 处打开 AWS Key Management Service (AWS KMS) 控制台。

1. 要更改 AWS 区域，请使用页面右上角的区域选择器。

1. 在导航窗格中，选择**客户托管密钥**。

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

1. 选择 **Key policy (密钥策略)** 选项卡。在 **Key users**（密钥用户）下，选择 **Add**（添加）。

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

#### 将 WorkSpaces 管理员添加为 KMS 密钥的密钥用户 (API)
<a name="kms-permissions-users-api"></a>

1. 使用[GetKeyPolicy](https://docs.aws.amazon.com/kms/latest/APIReference/API_GetKeyPolicy.html)操作获取现有密钥策略，然后将策略文档保存到文件中。

1. 在您的首选文本编辑器中打开策略文档。将与您的 WorkSpaces 管理员对应的 IAM 用户和角色添加到[向关键用户授予权限](https://docs.aws.amazon.com/kms/latest/developerguide/key-policies.html#key-policy-default-allow-users)的策略声明中。然后保存文件。

1. 使用[PutKeyPolicy](https://docs.aws.amazon.com/kms/latest/APIReference/API_PutKeyPolicy.html)操作将密钥策略应用于 KMS 密钥。

### 第 2 部分：使用 IAM 策略向 WorkSpaces 管理员授予额外权限
<a name="kms-permissions-iam-policy"></a>

如果您选择客户托管的 KMS 密钥用于加密，则必须建立 IAM 策略，允许 Amazon WorkSpaces 代表您的账户中启动加密的 IAM 用户使用 KMS 密钥 WorkSpaces。该用户还需要获得使用Amazon的权限 WorkSpaces。有关创建和编辑 IAM 用户策略的更多信息，请参阅《IAM 用户指南》**中的[管理 IAM 策略](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_manage.html)和 [的身份和访问管理 WorkSpaces](workspaces-access-control.md)。

WorkSpaces 加密需要对 KMS 密钥的有限访问权限。以下是您可以使用的一个示例密钥策略。此策略将可以管理 AWS KMS 密钥的主体与可以使用此密钥的主体分开。在使用此示例密钥策略之前，请将示例账户 ID 和 IAM 用户名替换为您账户中的实际值。

第一条语句与默认 AWS KMS 密钥策略相匹配。它授予您的账户使用 IAM 策略控制对 KMS 密钥的访问的权限。第二和第三条语句分别定义了 AWS 哪些委托人可以管理和使用密钥。第四条语句 AWS KMS 允许与集成的 AWS 服务代表指定的委托人使用密钥。该语句允许 AWS 服务创建和管理授权。该声明使用条件元素，将对 KMS 密钥的授予限制为 AWS 服务代表您账户中的用户进行的授权。

**注意**  
如果您的 WorkSpaces 管理员使用创建 WorkSpaces 加密卷，则管理员需要列出别名和列出密钥的权限（`"kms:ListAliases"`和`"kms:ListKeys"`权限）。 AWS 管理控制台 如果您的 WorkSpaces 管理员仅使用 Amazon WorkSpaces API（不使用控制台），则可以省略`"kms:ListAliases"`和`"kms:ListKeys"`权限。

------
#### [ JSON ]

****  

```
{
  "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:ReEncryptFrom",
        "kms:ReEncryptTo",
        "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 用户或角色。

------
#### [ JSON ]

****  

```
{
    "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 密钥的只读访问权限以及创建授权的能力。

------
#### [ JSON ]

****  

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

------

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

------
#### [ JSON ]

****  

```
{
  "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
<a name="encrypt_workspace"></a>

**要加密 WorkSpace**

1. 在 [https://console.aws.amazon.com/workspaces/v2/](https://console.aws.amazon.com/workspaces/v2/home) home 中打开 WorkSpaces 主机。

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

1. 对于 “**WorkSpaces 配置”** 步骤，请执行以下操作：

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

   1. 对于**加密密钥**，请选择一个 AWS KMS 密钥，即 Amazon 创建的 AWS 托管 KMS 密钥 WorkSpaces 或您创建的 KMS 密钥。您选择的 KMS 密钥必须是对称的。Amazon WorkSpaces 不支持非对称 KMS 密钥。

   1. 选择**下一步**。

1. 选择**启动 WorkSpaces**。

## 查看已加密 WorkSpaces
<a name="maintain_encryption"></a>

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