

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

# Amazon AppStream 2.0 中的基础设施安全性
<a name="infrastructure-security"></a>

作为一项托管式服务，Amazon AppStream 2.0 受 AWS 全球网络安全保护。有关 AWS 安全服务以及 AWS 如何保护基础设施的信息，请参阅 [AWS 云安全性](https://aws.amazon.com/security/)。要按照基础设施安全最佳实践设计您的 AWS 环境，请参阅《安全性支柱 AWS Well‐Architected Framework》**中的[基础设施保护](https://docs.aws.amazon.com/wellarchitected/latest/security-pillar/infrastructure-protection.html)。

您可以使用 AWS 发布的 API 调用通过网络访问 AppStream 2.0。客户端必须支持以下内容：
+ 传输层安全性协议（TLS）。我们要求使用 TLS 1.2，建议使用 TLS 1.3。
+ 具有完全向前保密（PFS）的密码套件，例如 DHE（临时 Diffie-Hellman）或 ECDHE（临时椭圆曲线 Diffie-Hellman）。大多数现代系统（如 Java 7 及更高版本）都支持这些模式。

以下主题提供了有关 AppStream 2.0 基础设施安全性的更多信息。

**Topics**
+ [网络隔离](network-isolation.md)
+ [物理主机上的隔离](physical-isolation.md)
+ [控制网络流量](control-network-traffic.md)
+ [WorkSpaces 应用程序接口 VPC 终端节点](interface-vpc-endpoints.md)
+ [使用 FIPS 端点保护传输中的数据](protecting-data-in-transit-FIPS-endpoints.md)

# 网络隔离
<a name="network-isolation"></a>

Virtual Private Cloud (VPC) 是 Amazon Web Services 云内您自己的逻辑隔离区域中的虚拟网络。可以使用单独的 VPC 按工作负载或组织实体隔离基础设施。

子网是 VPC 中的 IP 地址范围。在启动实例时，您可以在 VPC 上的子网中启动该实例。可以使用子网隔离单个 VPC 中的应用程序层（例如，Web、应用程序和数据库）。如果不应直接从 Internet 访问实例，请使用私有子网访问。

您可以从 VPC 中的 AppStream 2.0 流实例进行流式传输，而无需通过公共 Internet。为此，请使用接口 VPC 端点（接口端点）。有关更多信息，请参阅 [教程：从接口 VPC 端点创建和流式传输](creating-streaming-from-interface-vpc-endpoints.md)。

您也可以从 VPC 调用 AppStream 2.0 API 操作，而无需使用接口端点通过公共 Internet 发送流量。有关信息，请参阅[通过接口 VPC 终端节点访问 WorkSpaces 应用程序 API 操作和 CLI 命令](access-api-cli-through-interface-vpc-endpoint.md)。

# 物理主机上的隔离
<a name="physical-isolation"></a>

同一物理主机上的不同流实例彼此隔离，就好像它们位于不同的物理主机上一样。管理程序隔离 CPU 和内存，并为实例提供虚拟化磁盘，而不是访问原始磁盘设备。

在停止或终止流实例时，管理程序将清理分配给实例的内存（即，将其设置为零），然后再将内存分配给新实例并重置每个存储块。这可确保不会向另一个实例公开您的数据。

# 控制网络流量
<a name="control-network-traffic"></a>

如需帮助控制传输到 AppStream 2.0 流实例的网络流量，请考虑以下选项：
+ 在启动 Amazon AppStream 流实例时，您可以在 VPC 上的子网中启动该实例。如果要不允许从 Internet 访问流实例，您可以在私有子网中部署流实例。
+ 如需提供对私有子网中流实例的 Internet 访问，请使用 NAT 网关。有关更多信息，请参阅 [配置具有私有子网和 NAT 网关的 VPC](managing-network-internet-NAT-gateway.md)。
+ 利用属于您的 VPC 的安全组，您可以控制 AppStream 2.0 流实例与 VPC 资源（例如许可证服务器、文件服务器、数据库服务器等）之间的网络流量。安全组还会隔离您的流实例与 AppStream 2.0 管理服务之间的流量。

  使用安全组可限制对您的流实例的访问。例如，您可以仅允许来自公司网络地址范围的流量。有关更多信息，请参阅 [Amazon WorkSpaces 应用程序中的安全组](managing-network-security-groups.md)。
+ 您可以从 VPC 中的 AppStream 2.0 流实例进行流式传输，而无需通过公共 Internet。为此，请使用接口 VPC 端点（接口端点）。有关更多信息，请参阅 [教程：从接口 VPC 端点创建和流式传输](creating-streaming-from-interface-vpc-endpoints.md)。

  您也可以从 VPC 调用 AppStream 2.0 API 操作，而无需使用接口端点通过公共 Internet 发送流量。有关更多信息，请参阅 [通过接口 VPC 终端节点访问 WorkSpaces 应用程序 API 操作和 CLI 命令](access-api-cli-through-interface-vpc-endpoint.md)。
+ 使用 IAM 角色和策略管理管理员对 AppStream 2.0、应用程序自动扩缩和 Amazon S3 存储桶的访问权限。有关更多信息，请参阅以下主题：
  + [使用 AWS 托管策略和关联角色管理管理员对 WorkSpaces 应用程序资源的访问权限](controlling-administrator-access-with-policies-roles.md)
  + [使用 IAM 策略管理管理员对 Application Auto Scaling 的访问权限](autoscaling-iam-policy.md)
  + [限制管理员访问用于主文件夹和应用程序设置持久性的 Amazon S3 存储桶](s3-iam-policy-restricted-access.md)
+ 您可以使用 SAML 2.0 对 AppStream 2.0 进行联合身份验证。有关更多信息，请参阅 [亚马逊 WorkSpaces 应用程序服务配额](limits.md)。
**注意**  
对于较小的 AppStream 2.0 部署，您可以使用 AppStream 2.0 用户池。默认情况下，用户池最多支持 50 个用户。有关 AppStream 2.0 配额（也称为限制）的更多信息，请参阅[亚马逊 WorkSpaces 应用程序服务配额](limits.md)。对于必须支持 100 个或更多 AppStream 2.0 用户的部署，建议使用 SAML 2.0。

# WorkSpaces 应用程序接口 VPC 终端节点
<a name="interface-vpc-endpoints"></a>

Virtual Private Cloud (VPC) 是 Amazon Web Services Cloud 内您自己的逻辑隔离区域中的虚拟网络。如果您使用 Amazon Virtual Private Cloud 托管AWS资源，则可以在您的 VPC 和 WorkSpaces 应用程序之间建立私有连接。您可以使用此连接使 WorkSpaces 应用程序无需通过公共 Internet 即可与您的 VPC 上的资源进行通信。

接口终端节点由一项技术提供支持 AWSPrivateLink，该技术允许您使用私有 IP 地址将流式传输流量保持在您指定的 VPC 内。当您将 VPC 与Direct Connect或AWS Virtual Private Network隧道一起使用时，您可以将流式传输流量保留在您的网络中。

以下主题提供有关 WorkSpaces 应用程序接口端点的信息。

**Topics**
+ [教程：从接口 VPC 端点创建和流式传输](creating-streaming-from-interface-vpc-endpoints.md)
+ [通过接口 VPC 终端节点访问 WorkSpaces 应用程序 API 操作和 CLI 命令](access-api-cli-through-interface-vpc-endpoint.md)

# 教程：从接口 VPC 端点创建和流式传输
<a name="creating-streaming-from-interface-vpc-endpoints"></a>

您可以使用亚马逊 Web Services 账户中的接口 VPC 终端节点，将您的亚马逊 VPC 和 WorkSpaces 应用程序之间的所有网络流量限制到亚马逊网络。创建此端点后，将 WorkSpaces 应用程序堆栈或映像生成器配置为使用它。

**先决条件**

在为 WorkSpaces 应用程序设置接口 VPC 终端节点之前，请注意以下先决条件：
+ 需要互联网连接才能对用户进行身份验证并交付 WorkSpaces 应用程序运行所需的 Web 资产。流式接口端点用于维护 VPC 内的流式传输流量。流式传输流量包括像素、USB、用户输入、音频、剪贴板、文件上传和下载以及打印机流量。要允许此流量，您必须允许[允许的域](allowed-domains.md)中列出的域。创建 VPC 终端节点后，必须允许 WorkSpaces 应用程序用户身份验证域。但是，对于流媒体网关，您可以将访问权限限制为 < vpc-endpoint-id >.streaming.appstream。 <aws-region>.vpce.amazonaws.com。不要求允许列出到 \$1.amazonappstream.com。VPC 端点完全限定域名取代了这种依赖关系。
+ 用户设备所连接的网络必须能够将流量路由到接口端点。
+ 与接口端点关联的安全组必须允许从用户连接的 IP 地址范围对端口 443 (TCP) 和端口1400-1499 (TCP) 进行入站访问。
+ 子网的网络访问控制列表必须允许从短暂网络端口 1024-65535 (TCP) 到用户连接的 IP 地址范围的出站流量。
+ 您的中必须有一个 IAM 权限策略AWS 账户，该策略提供执行 `ec2:DescribeVpcEndpoints` API 操作的权限。默认情况下，此权限是在附加到该 AmazonAppStreamServiceAccess 角色的 IAM 策略中定义的。如果您拥有所需的权限，则在您开始使用某个AWS区域的 WorkSpaces 应用程序服务时，该服务角色将由应用程序自动创建，并附加所需的 IAM 策略。 WorkSpaces 有关更多信息，请参阅 [亚马逊 WorkSpaces 应用程序的身份和访问管理](controlling-access.md)。

**创建接口端点**

1. 打开位于 [https://console.aws.amazon.com/vpc/](https://console.aws.amazon.com/vpc/) 的 Amazon VPC 控制台。

1. 在导航窗格中，选择**端点**、**创建端点**。

1. 选择**创建端点**。

1. 对于**服务类别**，请确保选择了**AWS服务**。

1. 对于**服务名称**，选择 **com.amazonaws.***<AWS 区域>***.appstream.streaming**。

1. 指定以下信息。完成后，选择 **Create Endpoint**。
   + 对于 **VPC**，选择要在其中创建接口端点的 VPC。您可以选择不同于具有 WorkSpaces 应用程序资源的 VPC 的 VPC。
   + 对于**子网**，选择要在其中创建端点网络接口的子网（可用区）。我们建议您在至少两个可用区中选择子网。
   + 对于 **IP 地址类型**，请选择 IPV6 或 IPV4。
   + 确保 **Enable Private DNS Name (启用私有 DNS 名称)** 复选框处于选中状态。
**注意**  
如果您的用户使用网络代理访问流式实例，请禁用与私有端点相关联的域和 DNS 名称上的任何代理缓存。应允许通过代理使用 VPC 端点 DNS 名称。
   + 对于 **Security group (安全组)**，选择要与端点网络接口关联的安全组。
**注意**  
该安全组必须从用户连接的 IP 地址范围提供对端口的入站访问。

在创建接口端点时，控制台中端点的状态显示为 **Pending (待定)**。在创建端点之后，状态将变为 **Available (可用)**。

 要更新堆栈以使用您为流式传输会话创建的接口端点，请执行以下步骤。

**更新堆栈以使用新接口端点**

1. 在[https://console.aws.amazon.com/appstream2/家](https://console.aws.amazon.com/appstream2/home)中打开 WorkSpaces 应用程序控制台。

   确保在与要使用的接口终端节点相同的AWS区域中打开控制台。

1. 在导航窗格中，选择 **Stacks (堆栈)**，然后选择您想要的堆栈。

1. 选择 **VPC 端点**选项卡，然后选择**编辑**。

1. 在**编辑 VPC 端点**对话框中，对于**流式传输端点**，选择要通过其流式传输流量的端点。

1. 选择**更新**。

新的流式传输会话的流量都将路由通过此端点。但是，当前流式传输会话的流量将继续通过先前指定的端点进行路由。

**注意**  
指定接口端点时，用户无法使用 Internet 端点进行流式传输。

# 通过接口 VPC 终端节点访问 WorkSpaces 应用程序 API 操作和 CLI 命令
<a name="access-api-cli-through-interface-vpc-endpoint"></a>

如果您使用 Amazon Virtual Private Cloud 托管AWS资源，则可以通过虚拟私有云 (VPC) 中的接口 [VPC 终端节点（接口终端节点](https://docs.aws.amazon.com/vpc/latest/userguide/vpce-interface.html)）直接连接到 WorkSpaces 应用程序 API 操作或命令行界面 (CLI) 命令，而不必通过互联网进行连接。接口终端节点由一项技术提供支持 AWSPrivateLink，该技术允许您使用私有 IP 地址将流式传输流量保持在您指定的 VPC 内。当您使用接口终端节点时，您的 VPC 和 WorkSpaces 应用程序之间的通信将在AWS网络内完全安全地进行。

**注意**  
本主题介绍如何通过接口端点访问 WorkSpaces 应用程序 API 操作和 CLI 命令。有关如何创建 WorkSpaces 应用程序接口端点并从中进行流式传输的信息，请参阅[教程：从接口 VPC 端点创建和流式传输](creating-streaming-from-interface-vpc-endpoints.md)。

**先决条件**

要使用接口端点，您必须满足以下先决条件：
+ 与接口端点关联的安全组必须允许从用户连接的 IP 地址范围对端口 443 (TCP) 进行入站访问。
+ 子网的网络访问控制列表必须允许从短暂网络端口 1024-65535 (TCP) 到用户连接的 IP 地址范围的出站流量。

**Topics**
+ [创建用于访问 WorkSpaces 应用程序 API 操作和 CLI 命令的接口端点](access-api-cli-through-interface-vpc-endpoint-create-interface-endpoint.md)
+ [使用接口端点访问 WorkSpaces 应用程序 API 操作和 CLI 命令](how-to-access-api-cli-through-interface-vpc-endpoint.md)

# 创建用于访问 WorkSpaces 应用程序 API 操作和 CLI 命令的接口端点
<a name="access-api-cli-through-interface-vpc-endpoint-create-interface-endpoint"></a>

执行以下步骤来创建接口端点。

1. 打开位于 [https://console.aws.amazon.com/vpc/](https://console.aws.amazon.com/vpc/) 的 Amazon VPC 控制台。

1. 在导航窗格中，选择**端点**、**创建端点**。

1. 选择**创建端点**。

1. 对于**服务类别**，请确保选择了**AWS服务**。

1. 对于**服务名称**，选择 **com.amazonaws.***<AWS 区域>***.appstream.api**。

1. 指定以下信息。完成后，选择 **Create Endpoint**。
   + 对于 **VPC**，选择要在其中创建接口端点的 VPC。
   + 对于 **Subnets（子网）**，选择要在其中创建端点网络接口的子网（可用区）。我们建议您在至少两个可用区中选择子网。
   + （可选）您可以选中 **Enable Private DNS Name (启用私有 DNS 名称)** 复选框。
**注意**  
如果您选择此选项，请确保您根据需要配置 VPC 和 DNS 以支持私有 DNS。有关更多信息，请参阅《Amazon VPC 用户指南》**中的[私有 DNS](https://docs.aws.amazon.com/vpc/latest/userguide/vpce-interface.html#vpce-private-dns)。
   + 对于 **Security group（安全组）**，选择要与端点网络接口关联的安全组。
**注意**  
该安全组必须从用户连接的 IP 地址范围提供对端口的入站访问。

在创建接口端点时，控制台中端点的状态显示为 **Pending (待定)**。在创建端点之后，状态将变为 **Available (可用)**。

# 使用接口端点访问 WorkSpaces 应用程序 API 操作和 CLI 命令
<a name="how-to-access-api-cli-through-interface-vpc-endpoint"></a>

在您创建的接口 VPC 终端节点的状态更改为**可用**后，您可以使用该终端节点访问 WorkSpaces 应用程序 API 操作和 CLI 命令。为此，请在使用这些操作和命令时使用接口端点的 DNS 名称指定 `endpoint-url` 参数。DNS 名称是可公开解析的，但它只能成功路由您的 VPC 中的流量。

以下示例显示如何在使用 **describe-fleets** CLI 命令时指定接口端点的 DNS 名称：

```
aws appstream describe-fleets --endpoint-url <vpc-endpoint-id>.api.appstream.<aws-region>.vpce.amazonaws.com
```

以下示例说明在实例化 WorkSpaces 应用程序 Boto3 Python 客户端时如何指定接口终端节点的 DNS 名称：

```
appstream2client = boto3.client('appstream',region_name='<aws-region>',endpoint_url='<vpc-endpoint-id>.api.appstream.<aws-region>.vpce.amazonaws.com'
```

使用 `appstream2client` 对象的后续命令会自动使用您指定的接口端点。

如果在接口端点上启用了专用 DNS 主机名，则无需指定端点 URL。API 和 CLI 默认使用的 WorkSpaces 应用程序 API DNS 主机名将在您的 VPC 中解析。有关私有 DNS 主机名的更多信息，请参阅《Amazon VPC 用户指南》**中的[私有 DNS](https://docs.aws.amazon.com/vpc/latest/userguide/vpce-interface.html#vpce-private-dns)。

# 使用 FIPS 端点保护传输中的数据
<a name="protecting-data-in-transit-FIPS-endpoints"></a>

默认情况下，当您与 AppStream 2.0 服务进行通信时，无论您是作为使用 AppStream 2.0 控制台、AWS 命令行界面（AWS CLI）或 AWS SDK 的管理员，还是作为从映像生成器或实例集实例流式传输数据的用户，传输中的所有数据都会使用 TLS 1.2 进行加密。

如果在通过命令行界面或 API 访问 AWS 时需要经过 FIPS 140-2 验证的加密模块，请使用 FIPS 端点。AppStream 2.0 在所有提供 AppStream 2.0 的美国 AWS 区域提供 FIPS 端点。当您使用 FIPS 端点时，传输中的所有数据都会使用符合联邦信息处理标准 (FIPS) 140-2 的加密标准进行加密。有关 FIPS 端点的信息（包括 AppStream 2.0 端点列表），请参阅[联邦信息处理标准（FIPS）140-2](https://aws.amazon.com/compliance/fips)。

**Topics**
+ [用于管理的 FIPS 端点](FIPS-for-administrative-use.md)
+ [用户流式传输会话的 FIPS 端点](FIPS-for-user-streaming-sessions.md)
+ [异常](FIPS-exceptions.md)

# 用于管理的 FIPS 端点
<a name="FIPS-for-administrative-use"></a>

要在为 AppStream 2.0 运行 AWS CLI 命令时指定 FIPS 端点，请使用 `endpoint-url` 参数。以下示例使用美国西部（俄勒冈）区域的 AppStream 2.0 FIPS 端点来检索该区域中所有堆栈的列表：

```
aws appstream describe-stacks --endpoint-url https://appstream2-fips.us-west-2.amazonaws.com
```

要为 AppStream 2.0 API 操作指定 FIPS 端点，请使用 AWS SDK 中的过程指定自定义端点。

# 用户流式传输会话的 FIPS 端点
<a name="FIPS-for-user-streaming-sessions"></a>

如果使用 SAML 2.0 或流式传输 URL 对用户进行身份验证，则可以为用户流式传输会话配置符合 FIPS 标准的连接。

要对使用 SAML 2.0 进行身份验证的用户使用符合 FIPS 标准的连接，请在配置联合身份验证的中继状态时指定 AppStream 2.0 FIPS 端点。有关使用 SAML 2.0 为身份联合验证构建中继状态 URL 的更多信息，请参阅 [设置 SAML](external-identity-providers-setting-up-saml.md)。

要为通过流式传输 URL 进行身份验证的用户配置符合 FIPS 标准的连接，请在从 AWS CLI 或 AWS 开工发具包调用 [CreateStreamingURL](https://docs.aws.amazon.com/appstream2/latest/APIReference/API_CreateStreamingURL.html) 或 [CreateImageBuilderStreamingURL](https://docs.aws.amazon.com/appstream2/latest/APIReference/API_CreateImageBuilderStreamingURL.html) 操作时指定 AppStream 2.0 FIPS 端点。使用生成的 URL 连接到流实例的用户将通过符合 FIPS 标准的连接进行连接。以下示例使用美国东部（弗吉尼亚）区域的 AppStream 2.0 FIPS 端点生成符合 FIPS 标准的流式传输 URL：

```
aws appstream create-streaming-url --stack-name stack-name --fleet-name fleet-name --user-id user-id --endpoint-url https://appstream2-fips.us-east-1.amazonaws.com
```

# 异常
<a name="FIPS-exceptions"></a>

以下情况中不支持符合 FIPS 标准的连接：
+ 通过 AppStream 2.0 控制台管理 AppStream 2.0
+ 使用 AppStream 2.0 用户池功能进行身份验证的用户的流式传输会话
+ 使用接口 VPC 端点进行流式传输。
+ 通过 AppStream 2.0 控制台生成符合 FIPS 标准的流式传输 URL
+ 存储提供商未提供 FIPS 端点的 Google Drive 或 OneDrive 存储账户的连接