

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

# Amazon WorkSpaces 应用程序中的安全
<a name="security"></a>

云安全 AWS 是重中之重。作为 AWS 客户，您可以受益于专为满足大多数安全敏感型组织的要求而构建的数据中心和网络架构。

安全是双方共同承担 AWS 的责任。[责任共担模式](https://aws.amazon.com/compliance/shared-responsibility-model/)将此描述为云的安全性和云中的安全性：
+ **云安全** — AWS 负责保护在 AWS 云中运行 AWS 服务的基础架构。 AWS 还为您提供可以安全使用的服务。作为[AWS 合规计划合规计划合规计划合](https://aws.amazon.com/compliance/programs/)的一部分，第三方审计师定期测试和验证我们安全的有效性。有关适用于 WorkSpaces 应用程序的合规性计划的信息，请参阅按合规性计划提供的[范围内的AWS 服务按合规性计划](https://aws.amazon.com/compliance/services-in-scope/)。
+ **云端安全**-您的责任由您使用的 AWS 服务决定。您还需要对其他因素负责，包括您的数据的敏感性、您公司的要求以及适用的法律法规。

本文档可帮助您了解在使用 WorkSpaces 应用程序时如何应用分担责任模型。它向您展示了如何配置 WorkSpaces 应用程序以满足您的安全和合规性目标。您还将学习如何使用其他 AWS 服务来帮助您监控和保护您的 WorkSpaces 应用程序资源。

**Topics**
+ [Amazon AppStream 2.0 中的数据保护](data-protection.md)
+ [亚马逊 WorkSpaces 应用程序的身份和访问管理](controlling-access.md)
+ [Amazon AppStream 2.0 中的日志记录和监控](logging-monitoring-alerting.md)
+ [Amazon AppStream 2.0 的合规性验证](compliance-validation.md)
+ [Amazon AppStream 2.0 的故障恢复能力](disaster-recovery-resiliency.md)
+ [Amazon AppStream 2.0 中的基础设施安全性](infrastructure-security.md)
+ [Amazon WorkSpaces 应用程序中的安全组](managing-network-security-groups.md)
+ [Amazon AppStream 2.0 中的更新管理](update-management.md)
+ [Amazon WorkSpaces 应用程序跨服务混乱副手预防](confused-deputy.md)
+ [Amazon WorkSpaces 应用程序中的安全最佳实践](security-best-practices.md)

# Amazon AppStream 2.0 中的数据保护
<a name="data-protection"></a>

AWS [责任共担模式](https://aws.amazon.com/compliance/shared-responsibility-model/)适用于 Amazon AppStream 2.0 中的数据保护。如该模式中所述，AWS 负责保护运行所有 AWS 云 的全球基础结构。您负责维护对托管在此基础架构上的内容的控制。此内容包括您所使用的 AWS 服务 的安全配置和管理任务。有关数据隐私的更多信息，请参阅[数据隐私常见问题](https://aws.amazon.com/compliance/data-privacy-faq)。有关欧洲数据保护的信息，请参阅 AWS 安全性博客上的 [AWS 责任共担模式和 GDPR](https://aws.amazon.com/blogs/security/the-aws-shared-responsibility-model-and-gdpr/) 博客文章。**

出于数据保护目的，我们建议您保护 AWS 账户 凭证并使用 AWS Identity and Access Management（IAM）设置单个用户。这仅向每个用户授予履行其工作职责所需的权限。我们还建议您通过以下方式保护数据：
+ 对每个账户使用多重身份验证（MFA）。
+ 使用 SSL/TLS 与 AWS 资源进行通信。我们建议使用 TLS 1.2。
+ 使用 AWS CloudTrail 设置 API 和用户活动日志记录。
+ 使用 AWS 加密解决方案以及 AWS 服务中的所有默认安全控制。
+ 使用高级托管安全服务（例如 Amazon Macie），它有助于发现和保护存储在 Simple Storage Service（Amazon S3）中的个人数据。
+ 如果在通过命令行界面或 API 访问 AWS 时需要经过 FIPS 140-2 验证的加密模块，请使用 FIPS 端点。有关可用的 FIPS 端点的更多信息，请参阅[《美国联邦信息处理标准 (FIPS) 第 140-2 版》](https://aws.amazon.com/compliance/fips/)。

我们强烈建议您切勿将机密信息或敏感信息（例如您客户的电子邮件地址）放入标签或自由格式字段（例如**名称**字段）。这包括使用控制台、API、AWS CLI 或 AWS SDK 处理 AppStream 2.0 或其他 AWS 服务时。您在用于名称的标签或自由格式字段中输入的任何数据都可能会用于计费或诊断日志。当您向外部服务器提供 URL 时，强烈建议您不要在 URL 中包含凭证信息来验证您对该服务器的请求。

**Topics**
+ [静态加密](encryption-rest.md)
+ [传输中加密](encryption-transit.md)
+ [管理员控制](administrator-controls.md)
+ [应用程序访问](application-access.md)

# 静态加密
<a name="encryption-rest"></a>

AppStream 2.0 实例集实例本质上是短暂的。用户的流式传输会话完成后，将终止基础实例及其关联的 Amazon Elastic Block Store（Amazon EBS）卷。此外，AppStream 2.0 定期回收未使用的实例来保持新鲜度。

当您为用户启用[应用程序设置持久性](how-it-works-app-settings-persistence.md)、[主文件夹](home-folders-admin.md)、[会话脚本](enable-S3-bucket-storage-session-script-logs.md)或[使用情况报告](enable-usage-reports.md)时，由用户生成并存储在 Amazon Simple Storage Service 存储桶中的数据会静态加密。AWS Key Management Service 是一项将安全、高度可用的硬件和软件结合在一起的服务，提供针对云扩展的密钥管理系统。Amazon S3 使用 [AWS 托管 CMK](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#aws-managed-cmk) 来加密您的 Amazon S3 对象数据。

# 传输中加密
<a name="encryption-transit"></a>

下表提供了有关如何加密传输中数据的信息。若适用，还列出了其他适用于 AppStream 2.0 的数据保护方法。


| 数据 | 网络路径 | 保护方法 | 
| --- | --- | --- | 
|  Web 资产 此流量包括图像和 JavaScript 文件等资产。  |  在 AppStream 2.0 用户与 AppStream 2.0 之间  | 使用 TLS 1.2 加密 | 
| 像素和相关的流式传输流量 | 在 AppStream 2.0 用户与 AppStream 2.0 之间 |  使用 256 位高级加密标准 (AES-256) 加密 使用 TLS 1.2 传输  | 
| API 流量 | 在 AppStream 2.0 用户与 AppStream 2.0 之间 |  使用 TLS 1.2 加密 创建连接的请求使用 SigV4 签名  | 
| 用户生成的应用程序设置和主文件夹数据 在启用了应用程序设置持久性和主文件夹时适用。  | 在 AppStream 2.0 用户与 Amazon S3 之间 | 使用 Amazon S3 SSL 端点加密 | 
| AppStream 2.0 托管流量 |  在 AppStream 2.0 流实例与下列对象之间： [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/appstream2/latest/developerguide/encryption-transit.html)  | 使用 TLS 1.2 加密 创建连接的请求使用 SigV4 签名（在适用时） | 

# 管理员控制
<a name="administrator-controls"></a>

AppStream 2.0 提供了管理控制，您可以使用这些控制措施来限制用户在其本地计算机和 AppStream 2.0 实例集实例之间传输数据的方式。您可以在[创建或更新 AppStream 2.0 堆栈](set-up-stacks-fleets-install.md)时限制或禁用以下内容：
+ 剪贴板/复制和粘贴操作
+ 文件上传和下载，包括文件夹和驱动器重定向
+ 打印

创建 AppStream 2.0 映像时，您可以指定哪些 USB 设备可用于从适用于 Windows 的 AppStream 2.0 客户端重定向到 AppStream 2.0 实例集实例。您指定的 USB 设备将在用户的 AppStream 2.0 流式传输会话期间使用。有关更多信息，请参阅 [限定 USB 设备以用于流应用程序](qualify-usb-devices.md)。

# 应用程序访问
<a name="application-access"></a>

默认情况下，AppStream 2.0 使得您在映像中指定的应用程序能够在映像构建器和实例集实例上启动其他应用程序和可执行文件。这可确保依赖于其他应用程序的应用程序（例如，启动浏览器以导航到产品网站的应用程序）正常运行。请确保配置管理控制、安全组和其他安全软件，以向用户授予访问资源以及在其本地计算机与实例集实例之间传输数据所需的最低权限。

您可以使用应用程序控制软件（如 [Microsoft AppLocker](https://docs.microsoft.com/en-us/windows/security/threat-protection/windows-defender-application-control/applocker/applocker-overview)）和策略来控制用户可以运行的应用程序和文件。应用程序控制软件和策略可帮助您控制用户可以在 AppStream 2.0 映像构建器和实例集实例上运行的可执行文件、脚本、Windows 安装程序文件、动态链接库和应用程序包。

**注意**  
AppStream 2.0 代理软件依赖于 Windows 命令提示符和 Windows Powershell 来预置流实例。如果您选择阻止用户启动 Windows 命令提示符或 Windows Powershell，则策略不得应用于 Windows NT AUTHORITY\$1SYSTEM 或 Administrators 组中的用户。


| 规则类型 | 操作 | Windows 用户或组 | 名称/路径 | 状况 | 描述 | 
| --- | --- | --- | --- | --- | --- | 
| 可执行文件 | 允许 | NT AUTHORITY\$1System | \$1 | 路径 | AppStream 2.0 代理软件所必需 | 
| 可执行文件 | 允许 | BUILTIN\$1Administrators | \$1 | 路径 | AppStream 2.0 代理软件所必需 | 
| 可执行文件 | 允许 | Everyone | %PROGRAMFILES%\$1nodejs\$1\$1 | 路径 | AppStream 2.0 代理软件所必需 | 
| 可执行文件 | 允许 | Everyone | %PROGRAMFILES%\$1NICE\$1\$1 | 路径 | AppStream 2.0 代理软件所必需 | 
| 可执行文件 | 允许 | Everyone | %PROGRAMFILES%\$1Amazon\$1\$1 | 路径 | AppStream 2.0 代理软件所必需 | 
| 可执行文件 | 允许 | Everyone | %PROGRAMFILES%\$1<default-browser>\$1\$1 | 路径 | 使用持久性存储解决方案（如 Google Drive 或 Microsoft OneDrive for Business）时，对于 AppStream 2.0 代理软件是必需的。例外情况是使用 AppStream 2.0 主文件夹时不需要。 | 

# 亚马逊 WorkSpaces 应用程序的身份和访问管理
<a name="controlling-access"></a>

您的安全证书可以识别您的身份， AWS 并允许您无限制地使用您的 AWS 资源，例如您的 WorkSpaces 应用程序资源。您可以使用 WorkSpaces 应用程序和 AWS Identity and Access Management (IAM) 的功能允许其他用户、服务和应用程序使用您的 WorkSpaces 应用程序资源，而无需共享您的安全证书。

您可以使用 IAM 来控制其他用户如何使用您的 Amazon Web Services 账户中的资源，也可以使用安全组来控制对您的 WorkSpaces 应用程序流式传输实例的访问权限。您可以允许完全使用或限制使用您的 WorkSpaces 应用程序资源。

**Topics**
+ [对流实例的网络访问](network-access-to-streaming-instances.md)
+ [使用 AWS 托管策略和关联角色管理管理员对 WorkSpaces 应用程序资源的访问权限](controlling-administrator-access-with-policies-roles.md)
+ [使用 IAM 策略管理管理员对 Application Auto Scaling 的访问权限](autoscaling-iam-policy.md)
+ [使用 IAM 策略管理管理员对主文件夹和应用程序设置持久性 Amazon S3 存储桶的访问权限](s3-iam-policy.md)
+ [使用 IAM 角色向在应用程序流实例上 WorkSpaces 运行的应用程序和脚本授予权限](using-iam-roles-to-grant-permissions-to-applications-scripts-streaming-instances.md)
+ [SELinux 在红帽企业 Linux 和 Rocky Linux](selinux.md)
+ [亚马逊应用程序中基于 Cookie 的身份验证 WorkSpaces](cookie-auth.md)

# 对流实例的网络访问
<a name="network-access-to-streaming-instances"></a>

安全组充当状态防火墙，控制允许哪些流量到达您的流实例。启动 WorkSpaces 应用程序流式处理实例时，将其分配给一个或多个安全组。然后，添加规则至每个控制实例流量的安全组。您可以随时修改安全组的规则。新规则会自动应用于该安全组分配到的所有实例。

有关更多信息，请参阅 [Amazon WorkSpaces 应用程序中的安全组](managing-network-security-groups.md)。

# 使用 AWS 托管策略和关联角色管理管理员对 WorkSpaces 应用程序资源的访问权限
<a name="controlling-administrator-access-with-policies-roles"></a>

默认情况下，IAM 用户没有创建或修改 WorkSpaces 应用程序资源或使用 WorkSpaces 应用程序 API 执行任务所需的权限。这意味着这些用户无法在 WorkSpaces 应用程序控制台中或使用 WorkSpaces 应用程序 AWS CLI 命令来执行这些操作。如需允许 IAM 用户创建或修改资源并执行任务，请将 IAM 策略附加到需要这些权限的 IAM 用户或组。

在将策略附加到一个用户、用户组或 IAM 角色时，它会授权或拒绝用户使用指定资源执行指定任务。

**Topics**
+ [AWS 访问 WorkSpaces 应用程序资源所需的托管策略](managed-policies-required-to-access-appstream-resources.md)
+ [WorkSpaces 应用程序、Application Auto Scaling 和 Certificate M AWS anager 私有 CA 所需的角色](roles-required-for-appstream.md)
+ [检查 AmazonAppStreamServiceAccess 服务角色和策略](controlling-access-checking-for-iam-service-access.md)
+ [检查 ApplicationAutoScalingForAmazonAppStreamAccess 服务角色和策略](controlling-access-checking-for-iam-autoscaling.md)
+ [检查 `AWSServiceRoleForApplicationAutoScaling_AppStreamFleet` 服务相关角色和策略](controlling-access-checking-for-iam-service-linked-role-application-autoscaling-appstream-fleet.md)
+ [检查 AmazonAppStreamPCAAccess 服务角色和策略](controlling-access-checking-for-AppStreamPCAAccess.md)

# AWS 访问 WorkSpaces 应用程序资源所需的托管策略
<a name="managed-policies-required-to-access-appstream-resources"></a>

要提供对 WorkSpaces 应用程序的完全管理或只读访问权限，您必须将以下 AWS 托管策略之一附加到需要这些权限的 IAM 用户或群组。*AWS 托管策略* 是由 AWS创建和管理的独立策略。有关更多信息，请参阅《IAM 用户指南》**中的 [AWS 托管式策略](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_managed-vs-inline.html#aws-managed-policies)。

**注意**  
在中 AWS，IAM 角色用于向 AWS 服务授予权限，使其能够访问 AWS 资源。附加到角色的策略决定了服务可以访问哪些 AWS 资源以及它可以用这些资源做什么。对于 WorkSpaces 应用程序，除了拥有**AmazonAppStreamFullAccess**策略中定义的权限外，您的 AWS 账户中还必须拥有所需的角色。有关更多信息，请参阅 [WorkSpaces 应用程序、Application Auto Scaling 和 Certificate M AWS anager 私有 CA 所需的角色](roles-required-for-appstream.md)。

**AmazonAppStreamFullAccess**  
此托管策略提供对 WorkSpaces 应用程序资源的完全管理访问权限。要通过 AWS 命令行界面 (AWS CLI)、 AWS SDK 或 AWS 管理控制台管理 WorkSpaces 应用程序资源和执行 API 操作，您必须拥有此策略中定义的权限。  
如果您以 IAM 用户身份登录 WorkSpaces 应用程序控制台，则必须将此策略附加到您的 AWS 账户。如果通过控制台联合身份验证登录，则必须将此策略附加到用于联合身份验证的 IAM 角色。  
要查看此策略的权限，请参阅[AmazonAppStreamFullAccess](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonAppStreamFullAccess.html)。

**AmazonAppStreamReadOnlyAccess**  
此基于身份的策略向用户授予查看和监控 WorkSpaces 应用程序资源及相关服务配置的只读权限。用户可以访问 WorkSpaces 应用程序控制台来查看流媒体应用程序、队列状态、使用情况报告和相关资源，但不能进行任何更改。该策略还包括支持 IAM、Application Auto Scaling 等服务以及 CloudWatch 启用全面监控和报告功能所需的读取权限。  
要查看此策略的权限，请参阅[AmazonAppStreamReadOnlyAccess](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonAppStreamReadOnlyAccess.html)。

 WorkSpaces 应用程序控制台使用另一项操作来提供无法通过 AWS CLI 或 AWS SDK 提供的功能。**AmazonAppStreamFullAccess**和**AmazonAppStreamReadOnlyAccess**策略均为以下操作提供权限。


| Action | 说明 | 访问级别 | 
| --- | --- | --- | 
| DescribeImageBuilders | 授予权限以检索描述一个或多个指定映像生成器的列表（如果提供了映像生成器名称）。否则，将描述账户中的所有映像生成器。 | 读取 | 

**AmazonAppStreamPCAAccess**  
此托管策略提供对 AWS AWS 账户中 Certifice Manager 私有 CA 资源的完全管理权限，以进行基于证书的身份验证。  
要查看此策略的权限，请参阅[AmazonAppStreamPCAAccess](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonAppStreamPCAAccess.html)。

**AmazonAppStreamServiceAccess**  
此托管策略是 WorkSpaces 应用程序服务角色的默认策略。  
此角色权限策略允许 WorkSpaces 应用程序完成以下操作：  
+ 在您的账户中为 WorkSpaces 应用程序队列使用子网时， WorkSpaces 应用程序能够描述子网 VPCs、和可用区，并创建和管理与这些子网中的队列实例关联的所有弹性网络接口的生命周期。这其中还包括将这些子网中的安全组和 IP 地址连接到这些弹性网络接口的功能。
+ 使用 UPP 和等功能时 HomeFolders， WorkSpaces 应用程序能够在账户中创建和管理 Amazon S3 存储桶、对象及其生命周期、策略和加密配置。这些存储桶包含以下命名前缀：
  + `"arn:aws:s3:::appstream2-36fb080bb8-",`
  + `"arn:aws:s3:::appstream-app-settings-",`
  + `"arn:aws:s3:::appstream-logs-"`
要查看此策略的权限，请参阅[AmazonAppStreamServiceAccess](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonAppStreamServiceAccess.html)。

**ApplicationAutoScalingForAmazonAppStreamAccess**  
此托管策略允许应用程序自动缩放。 WorkSpaces   
要查看此策略的权限，请参阅[ApplicationAutoScalingForAmazonAppStreamAccess](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/ApplicationAutoScalingForAmazonAppStreamAccess.html)。

**AWSApplicationAutoscalingAppStreamFleetPolicy**  
此托管策略授予应用程序 Auto Scaling 访问 WorkSpaces 应用程序和的权限 CloudWatch 。  
要查看此策略的权限，请参阅[AWSApplicationAutoscalingAppStreamFleetPolicy](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AWSApplicationAutoscalingAppStreamFleetPolicy.html)。

## WorkSpaces AWS 托管策略的应用程序更新
<a name="security-iam-awsmanpol-updates"></a>



查看自该服务开始跟踪 WorkSpaces 应用程序 AWS 托管策略变更以来这些更新的详细信息。要获得有关此页面更改的自动提示，请订阅 [Amazon WorkSpaces 应用程序的文档历史记录](doc-history.md) 页面上的 RSS 源。




| 更改 | 描述 | 日期 | 
| --- | --- | --- | 
|  AmazonAppStreamServiceAccess — 改变  |   为`"ec2:DescribeImages"`策略 JSON 策略文档添加了允许权限  | 2025 年 11 月 17 日 | 
|  AmazonAppStreamReadOnlyAccess — 改变  |   已从 JSON 策略文档中移除 `"appstream:Get*",`  | 2025 年 10 月 22 日 | 
|  WorkSpaces 应用程序开始跟踪更改  |  WorkSpaces 应用程序开始跟踪其 AWS 托管策略的更改  | 2022 年 10 月 31 日 | 

# WorkSpaces 应用程序、Application Auto Scaling 和 Certificate M AWS anager 私有 CA 所需的角色
<a name="roles-required-for-appstream"></a>

在中 AWS，IAM 角色用于向 AWS 服务授予权限，使其能够访问 AWS 资源。附加到角色的策略决定了服务可以访问哪些 AWS 资源以及它可以用这些资源做什么。对于 WorkSpaces 应用程序，除了拥有**AmazonAppStreamFullAccess**策略中定义的权限外，您的 AWS 账户中还必须具有以下角色。

**Topics**
+ [AmazonAppStreamServiceAccess](#AmazonAppStreamServiceAccess)
+ [ApplicationAutoScalingForAmazonAppStreamAccess](#ApplicationAutoScalingForAmazonAppStreamAccess)
+ [AWSServiceRoleForApplicationAutoScaling\$1AppStreamFleet](#AWSServiceRoleForApplicationAutoScaling_AppStreamFleet)
+ [AmazonAppStreamPCAAccess](#AppStreamPCAAccess)

## AmazonAppStreamServiceAccess
<a name="AmazonAppStreamServiceAccess"></a>

此角色是一个服务角色，在您开始使用 AWS 区域中的 WorkSpaces 应用程序时会自动为您创建。有关服务角色的更多信息，请参阅 *IAM 用户指南*中的[创建角色以向 AWS 服务委派权限](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-service.html)。

在创建 WorkSpaces 应用程序资源时， WorkSpaces 应用程序服务通过担任此角色来代表您对其他 AWS 服务进行 API 调用。要创建实例集，您的账户中必须具有此角色。如果此角色不在您的 AWS 账户中，并且未附加所需的 IAM 权限和信任关系策略，则无法创建 WorkSpaces 应用程序队列。

有关更多信息，请参阅[检查 AmazonAppStreamServiceAccess 服务角色和策略](controlling-access-checking-for-iam-service-access.md)以检查**AmazonAppStreamServiceAccess**服务角色是否存在以及附加的策略是否正确。

**注意**  
此服务角色的权限可以不同于第一个开始使用 WorkSpaces 应用程序的用户。有关该角色权限的详细信息，请参阅中的 “AmazonAppStreamServiceAccess” [AWS 访问 WorkSpaces 应用程序资源所需的托管策略](managed-policies-required-to-access-appstream-resources.md)。

## ApplicationAutoScalingForAmazonAppStreamAccess
<a name="ApplicationAutoScalingForAmazonAppStreamAccess"></a>

此角色是一个服务角色，在您开始使用 AWS 区域中的 WorkSpaces 应用程序时会自动为您创建。有关服务角色的更多信息，请参阅 *IAM 用户指南*中的[创建角色以向 AWS 服务委派权限](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-service.html)。

自动缩放是 WorkSpaces 应用程序队列的一项功能。要配置扩展策略，您的 AWS 账户中必须具有此服务角色。如果此服务角色不在您的 AWS 账户中，并且未附加所需的 IAM 权限和信任关系策略，则无法扩展 WorkSpaces 应用程序队列。

有关更多信息，请参阅 [检查 ApplicationAutoScalingForAmazonAppStreamAccess 服务角色和策略](controlling-access-checking-for-iam-autoscaling.md)。

## AWSServiceRoleForApplicationAutoScaling\$1AppStreamFleet
<a name="AWSServiceRoleForApplicationAutoScaling_AppStreamFleet"></a>

此角色是自动为您创建的服务相关角色。有关更多信息，请参阅《Application Auto Scaling 用户指南》**中的[服务相关角色](https://docs.aws.amazon.com/autoscaling/application/userguide/application-auto-scaling-service-linked-roles.html)。

Application Auto Scaling 使用服务相关角色代表您执行自动扩展。*服务相关角色是直接链接*到 AWS 服务的 IAM 角色。此角色包括该服务代表您调用其他 AWS 服务所需的所有权限。

有关更多信息，请参阅 [检查 `AWSServiceRoleForApplicationAutoScaling_AppStreamFleet` 服务相关角色和策略](controlling-access-checking-for-iam-service-linked-role-application-autoscaling-appstream-fleet.md)。

## AmazonAppStreamPCAAccess
<a name="AppStreamPCAAccess"></a>

此角色是一个服务角色，在您开始使用 AWS 区域中的 WorkSpaces 应用程序时会自动为您创建。有关服务角色的更多信息，请参阅 *IAM 用户指南*中的[创建角色以向 AWS 服务委派权限](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-service.html)。

基于证书的身份验证是加入 Microsoft Active Directory 域的 WorkSpaces 应用程序队列的一项功能。要启用和使用基于证书的身份验证，您的 AWS 账户中必须具有此服务角色。如果此服务角色不在您的 AWS 账户中，并且未附加所需的 IAM 权限和信任关系策略，则无法启用或使用基于证书的身份验证。

有关更多信息，请参阅 [检查 AmazonAppStreamPCAAccess 服务角色和策略](controlling-access-checking-for-AppStreamPCAAccess.md)。

# 检查 AmazonAppStreamServiceAccess 服务角色和策略
<a name="controlling-access-checking-for-iam-service-access"></a>

完成此节中的步骤以检查 **AmazonAppStreamServiceAccess** 服务角色是否存在以及是否附加了正确的策略。如果此角色不在您的账户中且必须创建，则您或具有所需权限的管理员必须执行相应步骤才能开始使用您的 Amazon Web Services 账户中的 WorkSpaces 应用程序。

**检查 IA AmazonAppStreamServiceAccess M 服务角色是否存在**

1. 使用 [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/) 打开 IAM 控制台。

1. 在导航窗格中，选择**角色**。

1. 在搜索框中，键入 ama **zonappstreamservic** e 以缩小要选择的角色列表范围，然后选择。**AmazonAppStreamServiceAccess**如果此角色已列出，请选择它以查看角色 **Summary (摘要)** 页面。

1. 在**权限**选项卡上，确认 **AmazonAppStreamServiceAccess** 权限策略是否已附加。

1. 返回角色 **Summary (摘要)** 页面。

1. 在**信任关系**选项卡上，选择**显示策略文档**，然后确认 **AmazonAppStreamServiceAccess** 信任关系策略是否已附加并遵循正确的格式。如果是这样的话，则信任关系配置正确。选择**取消**并关闭 IAM 控制台。

## AmazonAppStreamServiceAccess 信任关系政策
<a name="controlling-access-service-access-trust-policy"></a>

**AmazonAppStreamServiceAccess**信任关系策略必须包括 WorkSpaces 应用程序服务作为委托人。*委托*人是 AWS 可以执行操作和访问资源的实体。此策略还必须包括 `sts:AssumeRole` 操作。以下策略配置将 WorkSpaces 应用程序定义为可信实体。

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
      "Service": "appstream.amazonaws.com"
    },
    "Action": "sts:AssumeRole"
    }
  ]
}
```

------

# 检查 ApplicationAutoScalingForAmazonAppStreamAccess 服务角色和策略
<a name="controlling-access-checking-for-iam-autoscaling"></a>

完成此节中的步骤以检查 **ApplicationAutoScalingForAmazonAppStreamAccess** 服务角色是否存在以及是否附加了正确的策略。如果此角色不在您的账户中且必须创建，则您或具有所需权限的管理员必须执行相应步骤才能开始使用您的 Amazon Web Services 账户中的 WorkSpaces 应用程序。

**检查 ApplicationAutoScalingForAmazonAppStreamAccessIAM 服务角色是否存在**

1. 使用 [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/) 打开 IAM 控制台。

1. 在导航窗格中，选择**角色**。

1. 在搜索框中，键入 **applicationautoscaling** 以缩小要选择的角色列表的范围，然后选择 **ApplicationAutoScalingForAmazonAppStreamAccess**。如果此角色已列出，请选择它以查看角色 **Summary (摘要)** 页面。

1. 在**权限**选项卡上，确认 **ApplicationAutoScalingForAmazonAppStreamAccess** 权限策略是否已附加。

1. 返回角色 **Summary (摘要)** 页面。

1. 在**信任关系**选项卡上，选择**显示策略文档**，然后确认 **ApplicationAutoScalingForAmazonAppStreamAccess** 信任关系策略是否已附加并遵循正确的格式。如果是这样的话，则信任关系配置正确。选择**取消**并关闭 IAM 控制台。

## ApplicationAutoScalingForAmazonAppStreamAccess 信任关系策略
<a name="controlling-access-autoscaling-trust-policy"></a>

**ApplicationAutoScalingForAmazonAppStreamAccess** 信任关系策略必须包含 Application Auto Scaling 服务作为主体。此策略还必须包括 `sts:AssumeRole` 操作。以下策略配置将 Application Auto Scaling 定义为可信实体。

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "Service": "application-autoscaling.amazonaws.com"
      },
      "Action": "sts:AssumeRole"
    }
  ]
}
```

------

# 检查 `AWSServiceRoleForApplicationAutoScaling_AppStreamFleet` 服务相关角色和策略
<a name="controlling-access-checking-for-iam-service-linked-role-application-autoscaling-appstream-fleet"></a>

完成此节中的步骤以检查 `AWSServiceRoleForApplicationAutoScaling_AppStreamFleet` 服务相关角色是否存在以及是否附加了正确的策略。如果此角色不在您的账户中且必须创建，则您或具有所需权限的管理员必须执行相应步骤才能开始使用您的 Amazon Web Services 账户中的 WorkSpaces 应用程序。

**检查 `AWSServiceRoleForApplicationAutoScaling_AppStreamFleet` IAM 服务相关角色是否存在**

1. 使用 [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/) 打开 IAM 控制台。

1. 在导航窗格中，选择**角色**。

1. 在搜索框中，键入 **applicationautoscaling** 以缩小要选择的角色列表的范围，然后选择 `AWSServiceRoleForApplicationAutoScaling_AppStreamFleet`。如果此角色已列出，请选择它以查看角色 **Summary (摘要)** 页面。

1. 在**权限**选项卡上，确认 `AWSApplicationAutoscalingAppStreamFleetPolicy` 权限策略是否已附加。

1. 返回 **Role (角色)** 摘要页面。

1. 在**信任关系**选项卡上，选择**显示策略文档**，然后确认 `AWSServiceRoleForApplicationAutoScaling_AppStreamFleet` 信任关系策略是否已附加并遵循正确的格式。如果是这样的话，则信任关系配置正确。选择**取消**并关闭 IAM 控制台。

## AWSServiceRoleForApplicationAutoScaling\$1AppStreamFleet 信任关系政策
<a name="controlling-access-application-autoscaling-appstream-fleet-trust-policy"></a>

`AWSServiceRoleForApplicationAutoScaling_AppStreamFleet` 信任关系策略必须包括 **appstream.application-autoscaling.amazonaws.com** 作为主体。此策略还必须包括 `sts:AssumeRole` 操作。以下策略配置将 **appstream.application-autoscaling.amazonaws.com** 定义为可信实体。

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "Service": "appstream.application-autoscaling.amazonaws.com"
      },
      "Action": "sts:AssumeRole"
    }
  ]
}
```

------

# 检查 AmazonAppStreamPCAAccess 服务角色和策略
<a name="controlling-access-checking-for-AppStreamPCAAccess"></a>

完成此节中的步骤以检查 **AmazonAppStreamPCAAccess** 服务角色是否存在以及是否附加了正确的策略。如果此角色不在您的账户中且必须创建，则您或具有所需权限的管理员必须执行相应步骤才能开始使用您的 Amazon Web Services 账户中的 WorkSpaces 应用程序。

**检查 IA AmazonAppStream PCAAccess M 服务角色是否存在**

1. 使用 [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/) 打开 IAM 控制台。

1. 在导航窗格中，选择**角色**。

1. 在搜索框中，键入 **appstreampca** 以缩小要选择的角色列表范围，然后选择。**AmazonAppStreamPCAAccess**如果此角色已列出，请选择它以查看角色 **Summary (摘要)** 页面。

1. 在**权限**选项卡上，确认 **AmazonAppStreamPCAAccess ** 权限策略是否已附加。

1. 返回 **Role (角色)** 摘要页面。

1. 在**信任关系**选项卡上，选择**显示策略文档**，然后确认 **AmazonAppStreamPCAAccess ** 信任关系策略是否已附加并遵循正确的格式。如果是这样的话，则信任关系配置正确。选择**取消**并关闭 IAM 控制台。

## AmazonAppStreamPCAAccess 信任关系政策
<a name="controlling-access-amazonappstreampcaaccess-trust-policy"></a>

**AmazonAppStreamPCAAccess**信任关系政策必须将 prod.euc.ecm.amazonaws.com 列为委托人。此策略还必须包括 `sts:AssumeRole` 操作。以下策略配置将 ECM 定义为可信实体。

**使用 AWS CLI 创建 AmazonAppStreamPCAAccess 信任关系策略**

1. 使用以下文本创建名为 `AmazonAppStreamPCAAccess.json` 的 JSON 文件。

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

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Effect": "Allow",
               "Principal": {
                   "Service": [
                       "prod.euc.ecm.amazonaws.com"
                   ]
               },
               "Action": "sts:AssumeRole",
               "Condition": {}
           }
       ]
   }
   ```

------

1. 根据需要调整`AmazonAppStreamPCAAccess.json`路径并运行以下 AWS CLI 命令来创建信任关系策略并附加 AmazonAppStreamPCAAccess 托管策略。有关托管策略的更多信息，请参阅 [AWS 访问 WorkSpaces 应用程序资源所需的托管策略](managed-policies-required-to-access-appstream-resources.md)。

   ```
   aws iam create-role --path /service-role/ --role-name AmazonAppStreamPCAAccess --assume-role-policy-document file://AmazonAppStreamPCAAccess.json
   ```

   ```
   aws iam attach-role-policy —role-name AmazonAppStreamPCAAccess —policy-arn arn:aws:iam::aws:policy/AmazonAppStreamPCAAccess
   ```

# 使用 IAM 策略管理管理员对 Application Auto Scaling 的访问权限
<a name="autoscaling-iam-policy"></a>

通过 WorkSpaces 应用程序、Amazon CloudWatch 和应用程序 Auto Scaling 的组合，可以实现队列的自动扩展 APIs。 WorkSpaces 应用程序队列是使用 WorkSpaces 应用程序创建的，警报是使用创建的，扩展策略是使用 A CloudWatch pplication Auto Scaling 创建的。

除了拥有[AmazonAppStreamFullAccess](managed-policies-required-to-access-appstream-resources.md)策略中定义的权限外，访问队列扩展设置的 IAM 用户还必须拥有支持动态扩展的服务所需的权限。IAM 用户必须具有使用以下示例策略中的操作的权限。

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
          "appstream:*",
          "application-autoscaling:*",
          "cloudwatch:DeleteAlarms",
          "cloudwatch:DescribeAlarmsForMetric",
          "cloudwatch:DisableAlarmActions",
          "cloudwatch:DescribeAlarms",
          "cloudwatch:EnableAlarmActions",
          "cloudwatch:ListMetrics",
          "cloudwatch:PutMetricAlarm",
          "iam:ListRoles"
      ],
      "Resource": "*"
    },
    {
      "Sid": "iamPassRole",
      "Effect": "Allow",
      "Action": [
          "iam:PassRole"
      ],
      "Resource": "*",
      "Condition": {
         "StringEquals": {
             "iam:PassedToService": "application-autoscaling.amazonaws.com"
          }
      }
    }
  ]
}
```

------

您还可以创建自己的 IAM 策略，以设置对 Application Auto Scaling API 的调用的更具体权限。有关更多信息，请参阅 *Application Auto Scaling 用户指南*中的[身份验证和访问控制](https://docs.aws.amazon.com/autoscaling/application/userguide/auth-and-access-control.html)。

# 使用 IAM 策略管理管理员对主文件夹和应用程序设置持久性 Amazon S3 存储桶的访问权限
<a name="s3-iam-policy"></a>

以下示例显示如何使用 IAM 策略管理对用于主文件夹和应用程序设置持久性的 Amazon S3 存储桶的访问权限。

**Topics**
+ [删除用于主文件夹和应用程序设置持久性的 Amazon S3 存储桶](s3-iam-policy-delete.md)
+ [限制管理员访问用于主文件夹和应用程序设置持久性的 Amazon S3 存储桶](s3-iam-policy-restricted-access.md)

# 删除用于主文件夹和应用程序设置持久性的 Amazon S3 存储桶
<a name="s3-iam-policy-delete"></a>

WorkSpaces 应用程序在其创建的存储桶中添加 Amazon S3 存储桶策略，以防止这些存储桶被意外删除。要删除 S3 存储桶，必须先删除 S3 存储桶策略。下面是必须删除的用于主文件夹和应用程序设置持久性的存储桶策略。

**主文件夹策略**

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "PreventAccidentalDeletionOfBucket",
      "Effect": "Deny",
      "Principal": "*",
      "Action": "s3:DeleteBucket",
      "Resource": "arn:aws:s3:::appstream2-36fb080bb8-region-code-123456789012-without-hyphens"
    }
  ]
}
```

------

**应用程序设置持久性策略**

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "PreventAccidentalDeletionOfBucket",
      "Effect": "Deny",
      "Principal": "*",
      "Action": "s3:DeleteBucket",
      "Resource": "arn:aws:s3:::appstream-app-settings-region-code-123456789012-without-hyphens-unique-identifier"
     }
   ]
}
```

------

 有关更多信息，请参阅《Amazon Simple Storage Service 用户指南》**中的[删除或清空存储桶](https://docs.aws.amazon.com/AmazonS3/latest/userguide/delete-or-empty-bucket.html)。

# 限制管理员访问用于主文件夹和应用程序设置持久性的 Amazon S3 存储桶
<a name="s3-iam-policy-restricted-access"></a>

默认情况下，可以访问 WorkSpaces 应用程序创建的 Amazon S3 存储桶的管理员可以查看和修改用户主文件夹和永久应用程序设置中的内容。要限制管理员对包含用户文件的 S3 存储桶的访问，我们建议根据以下模板应用 S3 存储桶访问策略：

```
{
  "Sid": "RestrictedAccess",
  "Effect": "Deny",
  "NotPrincipal": 
  {
    "AWS": [
      "arn:aws:iam::account:role/service-role/AmazonAppStreamServiceAccess",
      "arn:aws:sts::account:assumed-role/AmazonAppStreamServiceAccess/PhotonSession",
      "arn:aws:iam::account:user/IAM-user-name"
    ]
  },
    "Action": "s3:*",
    "Resource": "arn:aws:s3:::home-folder-or-application-settings-persistence-s3-bucket-region-account"
  }
 ]
}
```

此策略仅允许指定用户和 WorkSpaces 应用程序服务访问 S3 存储桶。对于应具备访问权限的每个 IAM 用户，复制下面的行：

```
"arn:aws:iam::account:user/IAM-user-name"
```

在以下示例中，策略允许除 IAM 用户 marymajor 和 johnstiles 之外的任何用户访问主文件夹 S3 存储桶。它还允许账户编号为 123456789012 的美国西部 AWS 地区（俄勒冈州）访问 WorkSpaces 应用程序服务。

```
{
  "Sid": "RestrictedAccess",
  "Effect": "Deny",
  "NotPrincipal": 
  {
    "AWS": [
      "arn:aws:iam::123456789012:role/service-role/AmazonAppStreamServiceAccess",
      "arn:aws:sts::123456789012:assumed-role/AmazonAppStreamServiceAccess/PhotonSession",
      "arn:aws:iam::123456789012:user/marymajor",
      "arn:aws:iam::123456789012:user/johnstiles"
    ]
  },
    "Action": "s3:*",
    "Resource": "arn:aws:s3:::appstream2-36fb080bb8-us-west-2-123456789012"
  }
 ]
}
```

# 使用 IAM 角色向在应用程序流实例上 WorkSpaces 运行的应用程序和脚本授予权限
<a name="using-iam-roles-to-grant-permissions-to-applications-scripts-streaming-instances"></a>

在应用程序流式处理实例上运行的 WorkSpaces 应用程序和脚本必须在 AWS API 请求中包含 AWS 凭据。您可以创建一个 IAM 角色来管理这些凭证。IAM 角色指定了一组可用于访问 AWS 资源的权限。但是，此角色并非与一个人唯一关联。相反，任何需要它的人都可以代入该角色。

您可以将 IAM 角色应用于 WorkSpaces 应用程序流式处理实例。当流实例切换到（代入）角色时，该角色提供临时安全凭证。您的应用程序或脚本使用这些凭据在流媒体实例上执行 API 操作和管理任务。 WorkSpaces 应用程序会为您管理临时凭证切换。

**Topics**
+ [将 IAM 角色与 WorkSpaces 应用程序流媒体实例配合使用的最佳实践](best-practices-for-using-iam-role-with-streaming-instances.md)
+ [配置现有 IAM 角色以用于 WorkSpaces 应用程序流式处理实例](configuring-existing-iam-role-to-use-with-streaming-instances.md)
+ [如何创建用于 WorkSpaces 应用程序流式处理实例的 IAM 角色](how-to-create-iam-role-to-use-with-streaming-instances.md)
+ [如何将 IAM 角色用于 WorkSpaces 应用程序流式处理实例](how-to-use-iam-role-with-streaming-instances.md)

# 将 IAM 角色与 WorkSpaces 应用程序流媒体实例配合使用的最佳实践
<a name="best-practices-for-using-iam-role-with-streaming-instances"></a>

当您将 IAM 角色用于 WorkSpaces 应用程序流式处理实例时，我们建议您遵循以下做法：
+ 限制您授予 AWS API 操作和资源的权限。

  在创建 IAM 策略并将其附加到与 WorkSpaces 应用程序流媒体实例关联的 IAM 角色时，请遵循最低权限原则。当您使用需要访问 AWS API 操作或资源的应用程序或脚本时，请确定所需的特定操作和资源。然后，创建允许应用程序或脚本仅执行这些操作的策略。有关更多信息，请参阅 *IAM 用户指南*中的[授予最低权限](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html#grant-least-privilege)。
+ 为每个 WorkSpaces 应用程序资源创建一个 IAM 角色。

  为每个 WorkSpaces 应用程序资源创建唯一的 IAM 角色是一种遵循最低权限原则的做法。这样做还允许您修改一个资源的权限，而不会影响其他资源。
+ 限制可以使用凭证的位置。

  通过 IAM 策略，您可以定义可使用 IAM 角色访问资源的条件。例如，您可以包含条件以指定请求可以来自的 IP 地址范围。这样做可以防止在您的环境之外使用凭证。有关更多信息，请参阅《IAM 用户指南》**中的[使用策略条件来增强安全性](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html#use-policy-conditions)。

# 配置现有 IAM 角色以用于 WorkSpaces 应用程序流式处理实例
<a name="configuring-existing-iam-role-to-use-with-streaming-instances"></a>

本主题介绍如何配置现有 IAM 角色，以便您可以将其与映像生成器和实例集流实例一起使用。

**先决条件**

您要与 WorkSpaces 应用程序映像生成器或队列流式传输实例一起使用的 IAM 角色必须满足以下先决条件：
+ IAM 角色必须与 WorkSpaces 应用程序流媒体实例位于同一个 Amazon Web Services 账户中。
+ IAM 角色不能是服务角色。
+ 附加到 IAM 角色的信任关系策略必须包括 WorkSpaces 应用程序服务作为委托人。*委托*人是 AWS 可以执行操作和访问资源的实体。该策略还必须包括 `sts:AssumeRole` 操作。此策略配置将 WorkSpaces 应用程序定义为可信实体。

  
+ 如果您将 IAM 角色应用于映像生成器，则映像生成器必须运行 2019 年 9 月 3 日当天或之后发布的 WorkSpaces 应用程序代理版本。如果要将 IAM 角色应用于一个实例集，则该实例集必须使用一个映像，该映像使用在同一日期或之后发布的代理版本。有关更多信息，请参阅 [WorkSpaces 应用程序代理发行说明](agent-software-versions.md)。

**使 WorkSpaces 应用程序服务委托人能够代入现有 IAM 角色**

要执行以下步骤，您必须以具有列出和更新 IAM 角色所需权限的 IAM 用户身份登录账户。如果您没有所需的权限，则要求您的 Amazon Web Services 账户管理员在您的账户中执行这些步骤或授予您所需权限。

1. 使用 [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/) 打开 IAM 控制台。

1. 在导航窗格中，选择**角色**。

1. 在您的账户的角色列表中，选择要修改的角色的名称。

1. 选择 **信任关系** 选项卡，然后选择 **编辑信任关系**。

1. 在**策略文档**下，验证信任关系策略是否包含 `appstream.amazonaws.com` 服务主体的 `sts:AssumeRole` 操作：

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

****  

   ```
   {
     "Version":"2012-10-17",		 	 	 
     "Statement": [
       {
         "Effect": "Allow",
         "Principal": {
           "Service": [
             "appstream.amazonaws.com"
           ]
         },
         "Action": "sts:AssumeRole"
       }
     ]
   }
   ```

------

1. 在编辑完信任策略后，请选择**更新信任策略**以保存所做更改。

1. 您选择的 IAM 角色将显示在 WorkSpaces 应用程序控制台中。此角色授予对应用程序和脚本的权限，以便在流实例上执行 API 操作和管理任务。

# 如何创建用于 WorkSpaces 应用程序流式处理实例的 IAM 角色
<a name="how-to-create-iam-role-to-use-with-streaming-instances"></a>

本主题介绍了如何创建新 IAM 角色，以便用于映像生成器和实例集流实例。

1. 使用 [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/) 打开 IAM 控制台。

1. 在导航窗格中，选择**角色**，然后选择**创建角色**。

1. 对于**Select type of trusted entity（选择受信任实体的类型）**，选择 **AWS service（服务）**。

1. 从 AWS 服务列表中选择 “**WorkSpaces 应用程序**”。

1. 在 **“选择您的用例”** 下，“**WorkSpaces WorkSpaces 应用程序-允许应用程序实例代表您调用 AWS 服务**” 已被选中。选择**下一步: 权限**。

1. 如果可能，选择要用作权限策略的策略，或选择 **Create policy**（创建策略）以打开新的浏览器选项卡并从头开始创建新策略。有关更多信息，请参阅《IAM 用户指南》**中[创建 IAM 策略（控制台）](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create.html#access_policies_create-start)过程的步骤 4。

   在您创建策略后，关闭该选项卡并返回到您的原始选项卡。选中您希望 WorkSpaces 应用程序拥有的权限策略旁边的复选框。

1. （可选）设置权限边界。这是一项高级功能，可用于服务角色，但不可用于服务相关角色。有关更多信息，请参阅《IAM 用户指南》**中的 [IAM 实体的权限边界](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_boundaries.html)。

1. 选择**下一步：标签**。您可以选择附加标签作为键值对。有关更多信息，请参阅《IAM 用户指南》**中的[标记 IAM 用户和角色](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_tags.html)。

1. 选择**下一步：审核**。

1. 对于**角色名称**，请键入在 Amazon Web Services 账户中唯一的角色名称。由于其他 AWS 资源可能会引用该角色，因此您无法在角色创建后对其名称进行编辑。

1. 对于 **Role description (角色描述)**，请保留默认角色描述或键入新角色描述。

1. 检查该角色，然后选择**创建角色**。

# 如何将 IAM 角色用于 WorkSpaces 应用程序流式处理实例
<a name="how-to-use-iam-role-with-streaming-instances"></a>

创建 IAM 角色后，可以在启动映像生成器或创建实例集时将其应用于映像生成器或实例集流实例。您也可以将 IAM 角色应用到现有实例集。有关在启动映像生成器时如何应用 IAM 角色的信息，请参阅[启动映像生成器来安装和配置流应用程序](tutorial-image-builder-create.md)。有关在创建实例集时如何应用 IAM 角色的信息，请参阅[在 Amazon WorkSpaces 应用程序中创建舰队](set-up-stacks-fleets-create.md)。

当您将 IAM 角色应用于映像生成器或队列流式传输实例时， WorkSpaces 应用程序会检索临时证书并在该实例上创建 **appstream\$1machine\$1role 凭证配置文件**。临时凭证有效期为 1 小时，每小时检索一次新凭证。以前的凭证不会过期，因此只要它们有效，您就可以使用它们。您可以使用您选择的语言使用 AWS 命令行界面 (CL AWS I)、 AWS 工具或 AWS SDK，以编程方式使用凭证配置文件来调用 AWS 服务。 PowerShell

当您进行 API 调用时，请将 **appstream\$1machine\$1role** 指定为凭证配置文件。否则，由于权限不足，操作将失败。

WorkSpaces 在预配置流式处理实例时，应用程序将扮演指定的角色。由于 WorkSpaces 应用程序使用连接到您的 VPC 的弹性网络接口进行 AWS API 调用，因此您的应用程序或脚本必须等待弹性网络接口可用后才能进行 AWS API 调用。如果在弹性网络接口可用之前进行 API 调用，则调用将失败。

以下示例演示如何使用 **appstream\$1machine\$1role** 凭证配置文件描述流实例（EC2 实例）和创建 Boto 客户端。Boto 是适用于 Python 的 Amazon Web Services（AWS）SDK。

**使用 AWS CLI 描述流式处理实例（EC2 实例）**

```
aws ec2 describe-instances --region us-east-1 --profile appstream_machine_role
```

**使用以下 AWS 工具描述流式处理实例（EC2 实例） PowerShell**

您必须使用适用于 3.3.563.1 或更高 PowerShell 版本的 AWS 工具，以及适用于.NET 的 Amazon Web Services SDK 版本 3.3.103.22 或更高版本。[您可以从 PowerShell网站的 AWS 工具中下载适用于 Windows 的工具安装程序，其中包括适用于.NET 的 AWS 工具 PowerShell 和适用于.NET 的 Amazon Web Ser AWS vices SDK。](https://aws.amazon.com/powershell/)

```
Get-EC2Instance -Region us-east-1 -ProfileName appstream_machine_role
```

**使用适用于 Python 的 AWS 软件开发工具包创建 Boto 客户端**

```
session = boto3.Session(profile_name='appstream_machine_role')
```

# SELinux 在红帽企业 Linux 和 Rocky Linux
<a name="selinux"></a>

默认情况下，对于由红帽企业 Linux `enabled` 和 Rocky Linux 提供支持的 WorkSpaces 应用程序映像生成器和流媒体实例，安全增强型 Linux (SELinux) 设置为`enforcing`模式。在`enforcing`模式下，会强制执行权限拒绝。 SELinux 是内核功能和实用程序的集合，用于为内核的主要子系统提供强大、灵活的强制访问控制 (MAC) 架构。

SELinux 提供了一种增强的机制，用于根据保密和完整性要求强制信息分离。这种信息分离减少了篡改和绕过应用程序安全机制的威胁，也限制了恶意或有缺陷的应用程序可能导致的损害。

SELinux 包括一组安全策略配置文件示例，旨在满足日常安全目标。有关 SELinux 特性和功能的更多信息，请参阅[什么是 SELinux](https://www.redhat.com/en/topics/linux/what-is-selinux)？

# 亚马逊应用程序中基于 Cookie 的身份验证 WorkSpaces
<a name="cookie-auth"></a>

WorkSpaces 应用程序使用浏览器 Cookie 对直播会话进行身份验证，并允许用户无需每次都重新输入登录凭据即可重新连接到活动会话。每种身份验证场景的身份验证令牌都存储在浏览器 Cookie 中。虽然 Cookie 是许多在线服务所必需的，但它们可能会面临 Cookie 被盗的风险。我们强烈建议您采取主动措施来防范 Cookie 被盗，例如为您用户的设备实施强大的端点保护解决方案。此外，为了减轻 Cookie 被盗事件的潜在影响，我们建议您考虑以下措施：
+ **强制执行单会话限制**：对于您的 WorkSpaces 应用程序 Windows 映像，请在下`HKEY_USERS\S-1-5-18\Software\GSettings\com\nicesoftware\dcv\session-management`创建一个注册表项，名称**max-concurrent-clients**设置为 1，以便一次只允许一个连接。这会将并发会话的数量限制为一个，并阻止对活动会话进行镜像。有关更多信息，请参阅 [session-management Parameters](https://docs.aws.amazon.com/dcv/latest/adminguide/config-param-ref.html#session_management)。
+ **强制会话到期并重新进行身份验证**
  + 减少该 SessionDuration 值，使身份验证令牌在用户成功启动直播会话后过期。在 SessionDuration 到期后重复使用身份验证 Cookie 需要用户重新进行身份验证。 SessionDuration 指定在要求重新进行身份验证之前，用户的联合流媒体会话可以保持活动状态的最长时间。默认值为 60 分钟。有关更多信息，请参阅 [步骤 5：为 SAML 身份验证响应创建断言](external-identity-providers-setting-up-saml.md#external-identity-providers-create-assertions)。
  + 为了最大限度地提高安全性，用户应使用工具栏正确结束会话（终止会话），而不是关闭流式传输窗口。通过工具栏结束会话会同时终止用户会话和流式传输实例。这要求在未来访问时重新进行身份验证，以防止滥用 Cookie。如果用户在没有结束会话的情况下关闭流式传输窗口，则会话和实例将在可配置的断开连接超时时间（以分钟为单位）内保持活动状态。断开连接超时必须是 1 到 5760 之间的数字，默认值为 15 分钟。为防止滥用非活动会话，我们建议设置一个较短的断开连接超时时间。有关更多信息，请参阅 [在 Amazon WorkSpaces 应用程序中创建舰队](set-up-stacks-fleets-create.md)。
+ 将@@ ** WorkSpaces 应用程序流式传输访问权限限制在您的 IP 范围内**：我们建议您实施基于 IP 的 IAM 策略。这样可以确保只能从 IP 地址属于授权 IP 范围的客户端访问 WorkSpaces 应用程序会话。即使客户端的 IP 地址位于授权范围之外的用户提供了其他有效的身份验证 Cookie（可能是从其他用户那里盗取的），其发起的所有连接尝试也都将被拒绝。有关更多信息，请参阅[限制对您的 IP 范围的 Amazon AppStream 2.0 应用程序的访问权限](https://aws.amazon.com/blogs/desktop-and-application-streaming/limit-access-to-stream-amazon-appstream-2-0-applications-to-your-ip-ranges/)。
+ **添加其他身份验证**：要启动加入域的流式传输实例，您可以将 WorkSpaces 应用程序始终在线和按需 Windows 队列以及映像生成器加入到 Microsoft Active Directory 中的域，并使用现有的 Active Directory 域（基于云或本地）。在执行基于 SAML 的初始身份验证后，系统将提示您的用户提供其域凭据，以便针对组织域进行额外的身份验证。有关更多信息，请参阅 [将活动目录与 WorkSpaces 应用程序配合使用](active-directory.md)。

 如果您有任何疑虑或需要帮助，请联系 [AWS 支持 中心](https://console.aws.amazon.com/support/home#/)。

# Amazon AppStream 2.0 中的日志记录和监控
<a name="logging-monitoring-alerting"></a>

要保持 Amazon AppStream 2.0 的可靠性、可用性和性能，监控是一个重要环节。本主题介绍了 AWS 提供用于监控您的 Amazon AppStream 2.0 资源和响应潜在事件的服务和工具。

**Amazon CloudWatch 警报**  
使用 Amazon CloudWatch 警报，您可以在指定时间段内监控某个指标。如果指标超过给定阈值，则会向 Amazon Simple Notification Service 主题或 AWS Auto Scaling 策略发送通知。CloudWatch 警报将不会调用处于特定状态的操作。相反，必须在状态已改变并在指定的若干个时间段内保持不变后才调用。有关更多信息，请参阅 [监控 Amazon WorkSpaces 应用程序资源](monitoring.md)。  
AppStream 2.0 当前无法配置为 CloudWatch Events 的目标。有关可以配置为 CloudWatch Events 目标的服务列表，请参阅[什么是 Amazon CloudWatch Events](https://docs.aws.amazon.com/AmazonCloudWatch/latest/events/WhatIsCloudWatchEvents.html)。

**AWS CloudTrail**  
AWS CloudTrail 提供用户、角色或 AWS 服务在 AppStream 2.0 中执行的操作的记录。通过此记录，您可以确定向 AppStream 2.0 发出了什么请求、发出请求的 IP 地址、何人发出的请求、请求的发出时间以及其他详细信息。有关更多信息，请参阅 [使用 AWS CloudTrail 记录 AppStream 2.0 API 调用](logging-using-cloudtrail.md)。

**AWS Trusted Advisor**  
AWS Trusted Advisor 将检查您的 AWS 环境，然后提供可节省资金、提高系统可用性和性能或帮助弥补安全漏洞的方法。Trusted Advisor 使用从广泛的 AWS 客户那里收集的最佳实践。所有 AWS 客户均有权访问五个 Trusted Advisor 检查。如果您有商业或企业支持计划，则可以查看所有 Trusted Advisor 检查。  
当您为用户启用[应用程序设置持久性](how-it-works-app-settings-persistence.md)或[主文件夹](home-folders-admin.md)时，用户生成的数据将存储在 Amazon S3 存储桶中。Trusted Advisor 包含与 Amazon S3 相关的下列检查：  
+ Amazon S3 存储桶的日志记录配置。
+ 具有开放访问权限的 Amazon S3 存储桶的安全性检查。
+ 未启用版本控制或已暂停版本控制的 Amazon S3 存储桶的容错检查。
有关更多信息，请参阅《AWS 支持 用户指南》**中的 [AWS Trusted Advisor](https://docs.aws.amazon.com/awssupport/latest/user/trusted-advisor.html)。

**Amazon S3 访问日志**  
如果您的用户将应用程序设置数据或主文件夹数据存储在 Amazon S3 存储桶中，请考虑查看 Amazon S3 服务器访问日志来监视访问情况。这些日志提供有关对存储桶做出的请求的详细记录。对于许多应用程序而言，服务器访问日志很有用。例如，访问日志信息可能在安全和访问权限审核方面很有用。有关更多信息，请参阅《Amazon Simple Storage Service 用户指南》**中的 [mazon S3 服务器访问日志记录](https://docs.aws.amazon.com/AmazonS3/latest/dev/ServerLogs.html)。

**AppStream 2.0 使用情况报告**  
您可以订阅 AppStream 2.0 使用情况报告，以接收有关您的用户如何使用此服务的详细报告。这些报告包括用户流式传输的时间长度及其启动的应用程序。有关更多信息，请参阅 [WorkSpaces 应用程序使用情况报告](configure-usage-reports.md)。

# Amazon AppStream 2.0 的合规性验证
<a name="compliance-validation"></a>

作为多个 AWS 合规性计划的一部分，第三方审计员将评估 Amazon AppStream 2.0 的安全性和合规性。其中包括以下各项：[SOC](https://aws.amazon.com/compliance/soc-faqs/)、[PCI](https://aws.amazon.com/compliance/pci-dss-level-1-faqs)、[ISO](https://aws.amazon.com/compliance/iso-certified/)、[FedRAMP](https://aws.amazon.com/compliance/fedramp/)、[HIPAA](https://aws.amazon.com/compliance/hipaa-compliance/)、[MTCS](https://aws.amazon.com/compliance/aws-multitiered-cloud-security-standard-certification/)、[ENS High](https://aws.amazon.com/compliance/esquema-nacional-de-seguridad/)、[HITRUST CSF](https://aws.amazon.com/compliance/hitrust/)、[VPAT](https://aws.amazon.com/compliance/vpat/) 以及其他。

**注意**  
AppStream 2.0 支持 [FIPS 140-2](https://aws.amazon.com/compliance/fips/)。有关如何将 AppStream 2.0 FIPS 端点用于管理或流式传输的信息，请参阅[使用 FIPS 端点保护传输中的数据](protecting-data-in-transit-FIPS-endpoints.md)。  
AppStream 2.0 还正在接受[美国国防部（DoD）云计算安全要求指南（SRG）](https://aws.amazon.com/compliance/dod/)评估。

有关特定合规性计划范围内的 AWS 服务列表，请参阅[合规性计划范围内的 AWS 服务](https://aws.amazon.com/compliance/services-in-scope/)。有关常规信息，请参阅[AWS合规性计划](https://aws.amazon.com/compliance/programs/)。

您可以使用 AWS Artifact 下载第三方审计报告。有关更多信息，请参阅[在 AWS Artifact 中下载报告](https://docs.aws.amazon.com/artifact/latest/ug/downloading-documents.html)、。

您使用 AppStream 2.0 的合规性责任取决于您数据的敏感度、贵公司的合规性目标以及适用的法律法规。AWS 提供以下资源来帮助满足合规性：
+ [安全性与合规性 Quick Start 指南](https://aws.amazon.com/quickstart/?awsf.quickstart-homepage-filter=categories%23security-identity-compliance) - 这些部署指南讨论了架构注意事项，并提供了在 AWS 上部署基于安全性和合规性的基准环境的步骤。
+ [《设计符合 HIPAA 安全性和合规性要求的架构》白皮书](https://d0.awsstatic.com/whitepapers/compliance/AWS_HIPAA_Compliance_Whitepaper.pdf) – 此白皮书介绍公司如何使用AWS创建符合 HIPAA 标准的应用程序。
+ [AWS合规性资源](https://aws.amazon.com/compliance/resources/) – 此业务手册和指南集合可能适用于您的行业和位置。
+ *AWS Config 开发人员指南*中的[使用规则评估资源](https://docs.aws.amazon.com/config/latest/developerguide/evaluate-config.html) – 此 AWS Config 服务评估您的资源配置对内部实践、行业指南和法规的遵循情况。
+ [AWS Security Hub CSPM](https://docs.aws.amazon.com/securityhub/latest/userguide/what-is-securityhub.html) – 此AWS服务提供了AWS中安全状态的全面视图，可帮助您检查是否符合安全行业标准和最佳实践。

# Amazon AppStream 2.0 的故障恢复能力
<a name="disaster-recovery-resiliency"></a>

AWS 全球基础设施围绕 AWS 区域和可用区构建。区域提供多个在物理上独立且隔离的可用区，这些可用区通过延迟低、吞吐量高且冗余性高的网络连接在一起。利用可用区，您可以设计和操作在可用区之间无中断地自动实现故障转移的应用程序和数据库。与传统的单个或多个数据中心基础设施相比，可用区具有更高的可用性、容错能力和可扩展性。

有关 AWS 区域和可用区的更多信息，请参阅 [AWS全球基础设施](https://aws.amazon.com/about-aws/global-infrastructure/)。

# 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 存储账户的连接

# Amazon WorkSpaces 应用程序中的安全组
<a name="managing-network-security-groups"></a>

通过将队列中的流媒体实例或 Amazon A WorkSpaces pplications 中的映像生成器与 VPC 安全组关联，您可以对您的 VPC 提供额外的访问控制。属于您的 VPC 的安全组允许您控制 WorkSpaces 应用程序流实例与 VPC 资源（例如许可证服务器、文件服务器和数据库服务器）之间的网络流量。有关更多信息，请参阅《Amazon VPC 用户指南》**中的 [VPC 的安全组](https://docs.aws.amazon.com/vpc/latest/userguide/VPC_SecurityGroups.html)。

当安全组与实例集或映像生成器相关联时，系统将应用您为 VPC 安全组定义的规则。安全组规则确定允许您的流实例发出哪些网络流量。有关更多信息，请参阅《Amazon VPC 用户指南》**中的[安全组规则](https://docs.aws.amazon.com/vpc/latest/userguide/VPC_SecurityGroups.html#SecurityGroupRules)。

启动新映像生成器或创建新实例集时，您可以关联最多五个安全组。您还可以将安全组与现有实例集关联或更改实例集的安全组（要更改实例集的安全组，必须先停止此实例集）。有关更多信息，请参阅 *Amazon VPC 用户指南*中的[使用安全组](https://docs.aws.amazon.com/vpc/latest/userguide/VPC_SecurityGroups.html#WorkingWithSecurityGroups)。

如果您未选择安全组，则映像生成器或实例集将关联到您的 VPC 的默认安全组。有关更多信息，请参阅《Amazon VPC 用户指南》**中的 [VPC 的默认安全组](https://docs.aws.amazon.com/vpc/latest/userguide/VPC_SecurityGroups.html#DefaultSecurityGroup)。

在 WorkSpaces 应用程序中使用安全组时，请考虑以下其他注意事项。
+ 所有最终用户数据（例如 Internet 流量、主文件夹数据或应用程序与 VPC 资源的通信）都会受到与流实例关联的安全组的影响。
+ 流式传输像素数据不受安全组影响。
+ 如果您为实例集或映像生成器启用了默认 Internet 访问，则关联的安全组的规则必须允许 Internet 访问。

您可以为安全组创建或编辑规则，或使用 Amazon VPC 控制台创建新的安全组。
+ **将安全组关联到映像生成器** - 按照[启动映像生成器来安装和配置流应用程序](tutorial-image-builder-create.md)中的说明操作。
+ **将安全组关联到实例集**
  + *创建实例集时* - 按照[在 Amazon WorkSpaces 应用程序中创建舰队](set-up-stacks-fleets-create.md)中的说明操作。
  + *对于现有实例集* - 使用 AWS 管理控制台编辑实例集设置。

您也可以使用 AWS CLI 和 SDKs将安全组与队列关联起来。
+ **AWS CLI** – 使用 [create-fleet](https://docs.aws.amazon.com/cli/latest/reference/appstream/create-fleet.html) 和 [update-fleet](https://docs.aws.amazon.com/cli/latest/reference/appstream/update-fleet.html) 命令。
+ **AWS SDKs**— 使用[CreateFleet](https://docs.aws.amazon.com/appstream2/latest/APIReference/API_CreateFleet.html)和 [UpdateFleet](https://docs.aws.amazon.com/appstream2/latest/APIReference/API_UpdateFleet.html)API 操作。

有关更多信息，请参阅 [AWS Command Line Interface 用户指南](https://docs.aws.amazon.com/cli/latest/userguide/)和[用于 Amazon Web Services 的工具](https://aws.amazon.com/tools/)。

# Amazon AppStream 2.0 中的更新管理
<a name="update-management"></a>

AppStream 2.0 提供了一种自动化方法，来用较新的 AppStream 2.0 软件更新您的映像生成器。当您的映像配置为始终使用最新的 AppStream 2.0 代理版本时，将自动使用 AWS 提供的最新功能、性能改进和安全更新来更新您的流实例。有关如何管理 AppStream 2.0 代理版本的信息，请参阅[管理 WorkSpaces 应用程序代理版本](base-images-agent.md)。

您负责安装和维护 Windows 操作系统、应用程序及其依赖项的更新。有关更多信息，请参阅 [保留您的 Amazon WorkSpaces 应用程序图片 Up-to-Date](keep-image-updated.md)。

您可以使用托管的 AppStream 2.0 映像更新来及时更新 AppStream 2.0 映像。此更新方法提供最新的 Windows 操作系统更新和驱动程序更新，以及最新的 AppStream 2.0 代理软件。有关更多信息，请参阅 [使用托管 WorkSpaces 应用程序图像更新更新映像](keep-image-updated-managed-image-updates.md)。

要在流实例上管理应用程序的更新，您可以使用提供的任何自动更新服务。您还可以按照应用程序供应商针对安装更新提供的建议进行操作。

# Amazon WorkSpaces 应用程序跨服务混乱副手预防
<a name="confused-deputy"></a>

混淆代理问题是一个安全问题，即没有执行操作权限的实体可能会迫使更具权限的实体执行该操作。在 AWS中，跨服务模拟可能会使账户资源容易受到混淆代理问题的影响。一项服务（*调用服务*）调用另一项服务（*被调用服务*）时，可能会发生跨服务模拟。调用服务可以操纵被调用服务使用其权限对客户的资源进行操作，而调用服务本身没有执行这些操作的权限。为了防止这种情况，我们 AWS 提供了一些工具，帮助您保护所有服务的数据，这些服务委托人有权访问您账户中的资源。

我们建议在资源策略中使用 `aws:SourceArn` 和 `aws:SourceAccount` 全局条件上下文键，以限制访问这些资源时的权限。以下指南详细介绍了使用这些键保护资源时的建议和要求：
+ 如果您只希望将一个资源与跨服务访问相关联，请使用 `aws:SourceArn`。
+ 如果您想允许指定账户中的任何资源与跨服务使用相关联，请使用 `aws:SourceAccount`。
+ 如果 `aws:SourceArn` 键不包含账户 ID，您必须使用两个全局条件上下文键（`aws:SourceArn` 和 `aws:SourceAccount`）来限制权限。
+ 如果使用两个全局条件上下文键，并且 `aws:SourceArn` 值包含账户 ID，则在同一策略语句中使用时，`aws:SourceAccount` 键必须使用相同的账户 ID。

防止混淆代理问题的有效方法是使用要允许的资源的确切 Amazon 资源名称（ARN）。如果您不知道资源的完整 ARN，请针对 ARN 未知部分使用带有通配符（如 \$1）的 `aws:SourceArn` 全局条件上下文键。如果要指定多个资源，也可以在 ARN 中使用通配符。例如，您可以将 ARN 格式化为 `arn:aws:servicename::region-name::your AWS 账户 ID:*`。

**Topics**
+ [示例： WorkSpaces 应用程序服务角色跨服务混淆副手预防](example-confused-deputy.md)
+ [示例： WorkSpaces 应用程序舰队机器角色跨服务混淆副手预防](example-fleet-machine.md)
+ [示例： WorkSpaces 应用程序弹性队列会话脚本 Amazon S3 存储桶策略跨服务混淆副手预防](example-elastic-fleets.md)
+ [示例： WorkSpaces 应用程序应用程序 Amazon S3 存储桶策略跨服务混淆了副手预防](example-s3-bucket.md)

# 示例： WorkSpaces 应用程序服务角色跨服务混淆副手预防
<a name="example-confused-deputy"></a>

WorkSpaces 应用程序使用各种资源扮演服务角色 ARNs，这会导致复杂的条件语句。我们建议使用通配符资源类型，以防止 WorkSpaces 应用程序资源出现意外故障。

**Example `aws:SourceAccount` 条件：**    
****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "Service": [
                    "appstream.amazonaws.com"
                ]
            },
            "Action": "sts:AssumeRole",
            "Condition": {
                "StringEquals": {
                    "aws:SourceAccount": "your AWS 账户 ID"
                }
            }
        }
    ]
}
```

**Example `aws:SourceArn` 条件：**    
****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "Service": [
                    "appstream.amazonaws.com"
                ]
            },
            "Action": "sts:AssumeRole",
            "Condition": {
                "ArnLike": {                   
                "aws:SourceArn": "arn:aws:appstream:us-east-1:111122223333:*"
                }
            }
        }
    ]
}
```

# 示例： WorkSpaces 应用程序舰队机器角色跨服务混淆副手预防
<a name="example-fleet-machine"></a>

**Example `aws:SourceAccount` 条件：**    
****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "Service": [
                    "appstream.amazonaws.com"
                ]
            },
            "Action": "sts:AssumeRole",
            "Condition": {
                "StringEquals": {
                    "aws:SourceAccount": "your AWS 账户 ID"
                }
            }
        }
    ]
}
```

**Example `aws:SourceArn` 条件：**  
如果您想为多个队列使用一个 IAM 角色，我们建议使用带通配符 (\$1) 的`aws:SourceArn`全局上下文条件密钥来匹配多个 WorkSpaces 应用程序队列资源。  
****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "Service": [
                    "appstream.amazonaws.com"
                ]
            },
            "Action": "sts:AssumeRole",
            "Condition": {
                "ArnLike": {
                "aws:SourceArn": "arn:aws:appstream:us-east-1:111122223333:fleet/your-fleet-name"
                }
            }
        }
    ]
}
```

# 示例： WorkSpaces 应用程序弹性队列会话脚本 Amazon S3 存储桶策略跨服务混淆副手预防
<a name="example-elastic-fleets"></a>

**Example `aws:SourceAccount` 条件：**    
****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "Service": [
                    "appstream.amazonaws.com"
                ]
            },
            "Action": "s3:GetObject",
            "Resource": "arn:aws:s3:::your-bucket-name/your-session-script-path",
            "Condition": {
                "StringEquals": {
                    "aws:SourceAccount": "your AWS 账户 ID"
                } 
            }
        }
    ]
}
```

**Example `aws:SourceArn` 条件：**    
****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "Service": [
                    "appstream.amazonaws.com"
                ]
            },
            "Action": "s3:GetObject",
            "Resource": "arn:aws:s3:::bucket/AppStream2/*",
            "Condition": {
                "ArnLike": {
                "aws:SourceArn": "arn:aws:appstream:us-east-1:111122223333:fleet/yourFleetName"
                }
            }
        }
    ]
}
```

# 示例： WorkSpaces 应用程序应用程序 Amazon S3 存储桶策略跨服务混淆了副手预防
<a name="example-s3-bucket"></a>

当您将数据存储在 Amazon S3 存储桶时，该存储桶可能会出现混淆代理问题。这可能会使弹性实例集、应用程序块、设置脚本、应用程序图标和会话脚本等数据容易受到恶意行为者的攻击。

为防止出现混淆代理问题，您可以在 Amazon S3 存储桶策略中为 `ELASTIC-FLEET-EXAMPLE-BUCKET` 指定 `aws:SourceAccount` 条件或 `aws:SourceArn` 条件。

下面的资源策略说明了如何通过以下任一方法防止出现混淆代理问题：
+ `aws:SourceAccount`带有您的 AWS 账户 ID 的
+ 全局条件上下文键 `aws:SourceArn`

WorkSpaces 应用程序目前不支持对应用程序图标进行混淆副手防护。该服务仅支持 VHD 文件和设置脚本。如果您尝试为应用程序图标添加其他条件，则这些图标将不会显示给最终用户。

在以下示例中，存储桶策略仅允许所有者账户中的 A WorkSpaces pplications Elastic 队列资源进行访问`ELASTIC_FLEET_EXAMPLE_BUCKET`。

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "ConfusedDeputyPreventionExamplePolicy",
            "Effect": "Allow",
            "Principal": {
                "Service": "appstream.amazonaws.com"
            },
            "Action": "s3:GetObject",
            "Resource": [
                "arn:aws:s3:::ELASTIC-FLEET-EXAMPLE-BUCKET/vhd-folder/*",
                "arn:aws:s3:::ELASTIC-FLEET-EXAMPLE-BUCKET/scripts/*"
            ],
            "Condition": {
                "StringEquals": {
                    "aws:SourceAccount": "your AWS 账户 ID"
                }
            }
        },
        {
            "Sid": "AllowRetrievalPermissionsToS3AppIconsForAppStream",
            "Effect": "Allow",
            "Principal": {
                "Service": "appstream.amazonaws.com"
            },
            "Action": "s3:GetObject",
            "Resource": "arn:aws:s3:::ELASTIC-FLEET-EXAMPLE-BUCKET/app-icons/*"
        }
    ]
}
```

------

您也可以使用 `aws:SourceArn` 条件来限制特定资源的资源访问权限。

**注意**  
如果您不知道资源的完整 ARN，或者您要指定多个资源，请针对 ARN 未知部分使用带有通配符（\$1）的 `aws:SourceArn` 全局条件上下文键。

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "ConfusedDeputyPreventionExamplePolicy",
            "Effect": "Allow",
            "Principal": {
                "Service": "appstream.amazonaws.com"
            },
            "Action": "s3:GetObject",
            "Resource": [
                "arn:aws:s3:::ELASTIC-FLEET-EXAMPLE-BUCKET/vhd-folder/*",
                "arn:aws:s3:::ELASTIC-FLEET-EXAMPLE-BUCKET/scripts/*"
            ],
            "Condition": {
                "ArnLike": {
                    "aws:SourceArn": "arn:aws:appstream:us-east-1:111122223333:app-block/*"
                }
            }
        },
        {
            "Sid": "AllowRetrievalPermissionsToS3AppIconsForAppStream",
            "Effect": "Allow",
            "Principal": {
                "Service": "appstream.amazonaws.com"
            },
            "Action": "s3:GetObject",
            "Resource": "arn:aws:s3:::ELASTIC-FLEET-EXAMPLE-BUCKET/app-icons/*"
        }
    ]
}
```

------

您可以使用 `aws:SourceArn` 和 `aws:SourceAccount` 条件来限制特定资源和账户的资源访问权限。

**注意**  
如果您不知道资源的完整 ARN，或者您要指定多个资源，请针对 ARN 未知部分使用带有通配符（\$1）的 `aws:SourceArn` 全局条件上下文键。

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "ConfusedDeputyPreventionExamplePolicy",
            "Effect": "Allow",
            "Principal": {
                "Service": "appstream.amazonaws.com"
            },
            "Action": "s3:GetObject",
            "Resource": [
                "arn:aws:s3:::ELASTIC-FLEET-EXAMPLE-BUCKET/vhd-folder/*",
                "arn:aws:s3:::ELASTIC-FLEET-EXAMPLE-BUCKET/scripts/*"
            ],
            "Condition": {
                "ArnLike": {
                "aws:SourceArn": "arn:aws:appstream:us-east-1:111122223333:app-block/*"
                },
                "StringEquals": {
                    "aws:SourceAccount": "your AWS account ID"
                }
            }
        },
        {
            "Sid": "AllowRetrievalPermissionsToS3AppIconsForAppStream",
            "Effect": "Allow",
            "Principal": {
                "Service": "appstream.amazonaws.com"
            },
            "Action": "s3:GetObject",
            "Resource": "arn:aws:s3:::ELASTIC-FLEET-EXAMPLE-BUCKET/app-icons/*"
        }
    ]
}
```

------

# Amazon WorkSpaces 应用程序中的安全最佳实践
<a name="security-best-practices"></a>

 云安全性一直是 Amazon Web Services（AWS）的重中之重。安全和合规是客户共同承担 AWS 的责任。有关更多信息，请参阅[https://aws.amazon.com/compliance/shared-responsibility-model/](https://aws.amazon.com/compliance/shared-responsibility-model/)。作为 AWS 和 WorkSpaces 应用领域的客户，在堆栈、队列、映像和网络等不同层面上实施安全措施非常重要。

 由于其短暂性， WorkSpaces 应用程序通常是应用程序和桌面交付的安全解决方案的首选。对于要预定义并在用户会话结束时清除的环境的使用案例，请考虑在 Windows 部署中常见的防病毒解决方案是否有意义。防病毒软件会增加虚拟化实例的开销，因此最好是减少不必要的活动。例如，在启动时扫描系统卷（临时卷）并不能提高应用程序的整体安全性。 WorkSpaces 

 安全 WorkSpaces 应用程序的两个关键问题集中在：
+  是否需要在会话之外保留用户状态？ 
+  用户在会话中应拥有多少访问权限？ 

**Topics**
+ [保护持久性数据](securing-persistent-data.md)
+ [端点安全和防病毒](endpoint-security-antivirus.md)
+ [网络排除项](network-exclusions.md)
+ [保护 WorkSpaces 应用程序会话](securing-session.md)
+ [防火墙和路由](firewalls-routing.md)
+ [数据丢失防护](data-loss-prevention.md)
+ [控制出口流量](controlling-egress-traffic.md)
+ [使用 AWS 服务](using-services.md)

# 保护持久性数据
<a name="securing-persistent-data"></a>

 WorkSpaces 应用程序的部署可能要求用户状态以某种形式保持不变。它可能是为了保留个人用户的数据，或者是为了使用共享文件夹进行协作而保留数据。 AppStream2.0 实例存储是临时性的，没有加密选项。

 WorkSpaces 应用程序通过 Amazon S3 中的主文件夹和应用程序设置提供用户状态持久性。某些使用案例需要更好地控制用户状态的持久性。对于这些使用案例， AWS 建议使用服务器消息块 (SMB) 文件共享。

## 用户状态和数据
<a name="user-state-and-data"></a>

由于大多数 Windows 应用程序在与用户创建的应用程序数据位于同一 AWS 区域 位置时性能最好、最安全，因此最佳做法是将这些数据与 WorkSpaces 应用程序队列保持一致。最好能加密这些数据。用户主文件夹的默认行为是使用密钥管理服务中的 Amazon S3 托管加密密钥对静态文件和文件夹进行加密（）AWS KMS。 AWS 请务必注意，有权访问 AWS 控制台或 Amazon S3 存储桶的 AWS 管理用户将能够直接访问这些文件。

在需要使用 Windows 文件共享的服务器消息块 (SMB) 来存储用户文件和文件夹的设计中，该过程要么是自动的，要么需要配置。

 *表 5 — 保护用户数据的选项* 


|   **中小型企业目标**   |  **Encryption-at-rest**  |  **Encryption-in-transit**  |   **防病毒软件 (AV)**   | 
| --- | --- | --- | --- | 
|  FSx 适用于 Windows 文件服务器  |  [https://docs.aws.amazon.com/fsx/latest/WindowsGuide/encryption-at-rest.html](https://docs.aws.amazon.com/fsx/latest/WindowsGuide/encryption-at-rest.html)  |  [https://docs.aws.amazon.com/fsx/latest/WindowsGuide/encryption-in-transit.html](https://docs.aws.amazon.com/fsx/latest/WindowsGuide/encryption-in-transit.html)  |   安装在远程实例上的 AV 在映射的驱动器上执行扫描   | 
|   **文件网关、 AWS Storage Gateway**   |  默认情况下，存储在 S3 中的所有数据均 AWS Storage Gateway 在服务器端使用 Amazon S3 托管加密密钥 (SSE-S3) 进行加密。您可以选择配置不同的网关类型以使用 AWS Key Management Service (KMS) 加密存储的数据  |  任何类型的网关设备和 AWS 存储设备之间传输的所有数据均使用 SSL 进行加密。 |   安装在远程实例上的 AV 在映射的驱动器上执行扫描   | 
|  基于 EC2 的 Windows 文件服务器  |  [启用 EBS 加密](https://docs.aws.amazon.com/kms/latest/developerguide/services-ebs.html)  |  PowerShell; Set- SmbServerConfiguration – EncryptData \$1True  |   安装在服务器上的 AV 在本地驱动器上执行扫描   | 

# 端点安全和防病毒
<a name="endpoint-security-antivirus"></a>

Applications 实例的 WorkSpaces 短暂性质以及数据缺乏持久性意味着需要采用不同的方法来确保用户体验和性能不会因为持久性桌面上所需的活动而受到损害。当有组织策略或用于外部数据输入（例如电子邮件、文件传入、外部网页浏览）时，端点安全代理会安装在 WorkSpaces 应用程序映像中。

## 移除唯一标识符
<a name="removing-unique-iidentifiers"></a>

端点安全代理可能具有全局唯一标识符 (GUID)，必须在实例集实例创建过程中重置该标识符。供应商有关于使用映像安装产品的说明，这将确保为从映像生成的每个实例生成一个新的 GUID。

为确保不会生成 GUID，请在运行 WorkSpaces 应用程序助手生成映像之前安装端点安全代理作为最后一个操作。

## 性能优化
<a name="performance-optimization"></a>

端点安全供应商提供可优化 WorkSpaces 应用程序性能的交换机和设置。设置因供应商而异，可以在他们的文档中找到，通常可在有关 VDI 的章节中找到。一些常见设置包括但不限于：
+ 关闭启动扫描以确保最大限度地缩短实例创建、启动和登录时间
+ 关闭计划的扫描以防止不必要的扫描
+ 关闭签名缓存以防止文件枚举
+ 启用 VDI 优化的 IO 设置
+ 应用程序为确保性能而需要排除的项目

端点安全供应商提供了虚拟桌面环境的使用说明，用于优化性能。
+ 趋势科技 Office Scan [支持虚拟桌面基础架构——Apex One/ OfficeScan (](https://success.trendmicro.com/solution/1055260-best-practice-for-setting-up-virtual-desktop-infrastructure-vdi-in-officescan)trendmicro.com)
+ CrowdStrike 以及[如何在数据中心安装 CrowdStrike 猎鹰](https://www.crowdstrike.com/blog/tech-center/install-falcon-datacenter/)
+ Sophos 和 [Sophos Central Endpoint：如何安装在金色映像上以避免重复的身份](https://support.sophos.com/support/s/article/KB-000035040?language=en_US)和 [Sophos Central：在虚拟桌面环境中安装 Windows 端点的最佳实践](https://support.sophos.com/support/s/article/KB-000039009?language=en_US)
+ McAfee 以及在[虚拟桌面基础架构系统上配置和部署McAfee 代理](https://kc.mcafee.com/corporate/index?page=content&id=KB87654)
+ Microsoft 端点安全和[为非永久性 VDI 计算机配置 Microsoft Defender 防病毒软件 — Microsoft 科技社区](https://techcommunity.microsoft.com/t5/microsoft-defender-for-endpoint/configuring-microsoft-defender-antivirus-for-non-persistent-vdi/ba-p/1489633)

## 扫描排除项
<a name="scanning-exclusions"></a>

 如果在 WorkSpaces 应用程序实例中安装了安全软件，则安全软件不得干扰以下进程。

 *表 6 — WorkSpaces 应用程序进程安全软件不得干扰以下进程。*


|  **服务**  |  **进程**  | 
| --- | --- | 
|  AmazonCloudWatchAgent  |  “C:\$1Program Files\$1 Amazon\$1AmazonCloudWatchAgent\$1 start-amazon-cloudwatch-agent.exe”  | 
|  AmazonSSMAgent  |  “C:\$1Program Files\$1 Amazon\$1 SSM\$1 amazon-ssm-agent .exe”  | 
|  NICE DCV  |  "C:\$1Program Files\$1NICE\$1DCV\$1Server\$1bin\$1dcvserver.exe" "C:\$1Program Files\$1NICE\$1DCV\$1Server\$1bin\$1dcvagent.exe" | 
|  WorkSpaces 应用程序  |   “C:\$1Program Files\$1 Amazon\$1 AppStream 2\$1StorageConnector\$1 StorageConnector .exe”   在文件夹 "C:\$1Program Files\$1Amazon\$1Photon\$1"  “。 \$1 Agent\$1 PhotonAgent .exe”  ".\$1Agent\$1s5cmd.exe"  “。 \$1WebServer\$1 PhotonAgentWebServer .exe”  “。 \$1CustomShell\$1 PhotonWindowsAppSwitcher .exe”  “。 \$1CustomShell\$1 PhotonWindowsCustomShell .exe”  “。 \$1CustomShell\$1 PhotonWindowsCustomShellBackground .exe”   | 

## 文件夹
<a name="folders"></a>

 如果在 WorkSpaces 应用程序实例中安装了安全软件，则该软件不得干扰以下文件夹：

**Example**  

```
    C:\Program Files\Amazon\* 
    C:\ProgramData\Amazon\* 
    C:\Program Files (x86)\AWS Tools\* 
    C:\Program Files (x86)\AWS SDK for .NET\* 
    C:\Program Files\NICE\* 
    C:\ProgramData\NICE\* 
    C:\AppStream\*
```

## 端点安全控制台清洁
<a name="endpoint-security-console-hygiene"></a>

WorkSpaces 每当用户在空闲和断开连接超时之后进行连接时，应用程序都会创建新的唯一实例。这些实例将具有唯一的名称，并将在端点安全管理控制台中构建。将超过 4 天或更长时间（或更短时间，具体取决于 WorkSpaces 应用程序会话超时）的未使用过期计算机设置为删除，可以最大限度地减少控制台中过期实例的数量。

# 网络排除项
<a name="network-exclusions"></a>

 WorkSpaces 应用程序实例中的任何安全/防火墙或防病毒解决方案都不应阻止 WorkSpaces 应用程序管理网络范围 (`198.19.0.0/16`) 以及以下端口和地址。

 *表 7 — WorkSpaces 应用程序流媒体实例中的端口安全软件不得干扰* 


|  **端口**： |   **使用情况**   | 
| --- | --- | 
|  8300  |   它用于建立流式连接   | 
|  3128  |  它用于通过 WorkSpaces 应用程序管理流式传输实例  | 
|  8000  |   它用于通过 WorkSpaces 应用程序管理流式传输实例   | 
|  8443  |   它用于通过 WorkSpaces 应用程序管理流式传输实例   | 
|  53  |   DNS   | 

 *表 8- WorkSpaces 应用程序托管服务地址安全软件不得干扰* 


|  **端口**： |  **使用情况**  | 
| --- | --- | 
|  169.254.169.123  |  NTP  | 
|  169.254.169.249  |  NVIDIA 网格许可服务  | 
|  169.254.169.250  |  KMS  | 
|  169.254.169.251  |  KMS  | 
|  169.254.169.253  |  DNS  | 
|  169.254.169.254  |  元数据  | 

# 保护 WorkSpaces 应用程序会话
<a name="securing-session"></a>

## 限制应用程序和操作系统的控制
<a name="limiting-application-and-operating-system-controls"></a>

 WorkSpaces 应用程序使管理员能够准确指定哪些应用程序可以在应用程序流模式下从网页启动。但是，这并不能保证只能运行指定的应用程序。

 Windows实用程序和应用程序可以通过其他方式通过操作系统启动。 AWS 建议使用 [https://aws.amazon.com/blogs/desktop-and-application-streaming/using-microsoft-applocker-to-manage-application-experience-on-amazon-appstream-2-0/](https://aws.amazon.com/blogs/desktop-and-application-streaming/using-microsoft-applocker-to-manage-application-experience-on-amazon-appstream-2-0/) 来确保只有你的组织需要的应用程序才能运行。必须修改默认规则，因为它们授予所有人访问关键系统目录的路径权限。

**注意**  
 Windows Server 2016 和 2019 要求运行 Windows 应用程序身份服务才能强制执行 AppLocker 规则。《[AppStream 管理指南》详细介绍了使用 Micro AppLocker soft 的 WorkSpaces 应用程序访问应用程序。](https://docs.aws.amazon.com/appstream2/latest/developerguide/data-protection.html#application-access)

 对于加入 Active Directory 域的队列实例，请使用组策略对象 (GPOs) 提供用户和系统设置，以保护用户的应用程序和资源访问权限。

# 防火墙和路由
<a name="firewalls-routing"></a>

 创建 WorkSpaces 应用程序队列时，必须分配子网和安全组。子网已分配了网络访问控制列表 (NACLs) 和路由表。在启动新的映像生成器或创建新实例集时，您[最多可以关联五个安全组](https://docs.aws.amazon.com/appstream2/latest/developerguide/managing-network-security-groups.html)。安全组最多可以继承[现有安全组的五个指定设置](https://docs.aws.amazon.com/appstream2/latest/developerguide/managing-network-security-groups.html)。对于每个安全组，您需要添加规则以控制进出实例的出站和入站网络数据流

网络 ACL (NACL) 是 VPC 的一个可选安全层，可作为防火墙来控制进出子网的流量。您可以使用 ACLs 与您的安全组相似的规则来设置网络，以便为您的 VPC 增加额外的安全层。有关安全组和网络之间差异的更多信息 ACLs，请参阅[比较安全组和 NACLs 页面](https://docs.aws.amazon.com/vpc/latest/userguide/VPC_Security.html#VPC_Security_Comparison)。

在设计和应用安全组和 NACL 规则时，请考虑 AWS Well-Architected 最佳实践以实现最低权限。*最低权限*的原则是只授予完成任务所需的权限。

对于拥有将本地环境连接到 AWS（通过 AWS Direct Connect）的高速私有网络的客户，您可以考虑使用 VPC 终端节点，这意味着流媒体流量将通过您的私有网络连接而不是通过公共互联网进行路由。 AppStream有关此主题的更多信息，请参阅本文档的 WorkSpaces 应用程序流接口 VPC 终端节点部分。

# 数据丢失防护
<a name="data-loss-prevention"></a>

我们将介绍两种数据丢失防护。

## 客户端到 AppStream 2.0 实例的数据传输控制
<a name="client-to-AppStream-instance-data-transfer-controls"></a>

 *表 9 — 数据传入和传出控制指南* 


|  **设置**  |  **Options**  |  **指南**  | 
| --- | --- | --- | 
|  剪贴板  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/appstream2/latest/developerguide/data-loss-prevention.html)  |  禁用此设置不会禁用会话中的复制和粘贴。如果需要将数据复制到会话中，请选择“仅粘贴到远程会话”，以最大限度地减少数据泄露的可能性。 | 
|  文件传输  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/appstream2/latest/developerguide/data-loss-prevention.html)  |  避免启用此设置以防止数据泄露。 | 
|  打印到本地设备  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/appstream2/latest/developerguide/data-loss-prevention.html)  |  如果需要打印，请使用由您的组织控制和监控的网络映射打印机。 | 

 思考一下现有组织数据传输解决方案相对于堆栈设置的优势。这些配置并不是为了取代全面的安全数据传输解决方案而设计的。

# 控制出口流量
<a name="controlling-egress-traffic"></a>

在担心数据丢失的地方，重要的是要掩盖用户进入其 WorkSpaces 应用程序实例后可以访问的内容。网络出口（或传出）路径是什么样子？ 通常要求最终用户在其 WorkSpaces 应用程序实例内访问公共互联网，因此需要考虑在网络路径中放置 WebProxy 或内容过滤解决方案。其他注意事项包括本地防病毒应用程序和 AppStream 实例内部的其他端点安全措施（有关更多信息，请参阅 “端点安全和防病毒” 部分）。

# 使用 AWS 服务
<a name="using-services"></a>

## AWS Identity and Access Management
<a name="aws-identity-and-access-management"></a>

 使用 IAM 角色访问 AWS 服务，并在与之关联的 IAM 策略中具体说明，是一种最佳实践，它规定只有 WorkSpaces 应用程序会话中的用户才能访问服务，而无需管理其他证书。遵循在[https://docs.aws.amazon.com/appstream2/latest/developerguide/using-iam-roles-to-grant-permissions-to-applications-scripts-streaming-instances.html#best-practices-for-using-iam-role-with-streaming-instances](https://docs.aws.amazon.com/appstream2/latest/developerguide/using-iam-roles-to-grant-permissions-to-applications-scripts-streaming-instances.html#best-practices-for-using-iam-role-with-streaming-instances)。

 创建 [https://docs.aws.amazon.com/appstream2/latest/developerguide/s3-iam-policy.html](https://docs.aws.amazon.com/appstream2/latest/developerguide/s3-iam-policy.html)，这些存储桶是为了在主文件夹和应用程序设置中保留用户数据而创建的。这样[https://docs.aws.amazon.com/appstream2/latest/developerguide/s3-iam-policy.html#s3-iam-policy-restricted-access](https://docs.aws.amazon.com/appstream2/latest/developerguide/s3-iam-policy.html#s3-iam-policy-restricted-access)进行访问。

## VPC 端点
<a name="vpc-endpoints-1"></a>

 VPC 终端节点可在您的 VPC 与支持的 AWS 服务以及由提供支持的 VPC 终端节点服务之间建立私有连接 AWS PrivateLink。 AWS PrivateLink 是一种允许您使用私有 IP 地址私密访问服务的技术。VPC 和其他服务之间的通信不会离开 Amazon 网络。如果仅 AWS 服务需要访问公共互联网，则 VPC 终端节点将完全取消对 NAT 网关和互联网网关的要求。

 在自动化例程或开发人员需要对应用程序进行 API 调用的环境中，为 WorkSpaces 应用程序 [https://docs.aws.amazon.com/appstream2/latest/developerguide/access-api-cli-through-interface-vpc-endpoint.html](https://docs.aws.amazon.com/appstream2/latest/developerguide/access-api-cli-through-interface-vpc-endpoint.html)。 WorkSpaces 例如，如果私有子网中有 EC2 实例没有公共互联网访问权限，则可以使用 WorkSpaces 应用程序 API 的 VPC 终端节点来调用 AppStream 2.0 API 操作，例如 [https://docs.aws.amazon.com/appstream2/latest/APIReference/API_CreateStreamingURL.html](https://docs.aws.amazon.com/appstream2/latest/APIReference/API_CreateStreamingURL.html)。下图显示了一个示例设置，其中 Lambda 函数和 EC2 实例使用 WorkSpaces 应用程序 API 和流式 VPC 终端节点。

![\[VPC 端点的参考架构图\]](http://docs.aws.amazon.com/zh_cn/appstream2/latest/developerguide/images/vpc-endpoint.jpeg)


 *VPC 端点* 

 流式传输 VPC 端点允许您通过 VPC 端点流式传输会话。流式接口端点用于维护 VPC 内的流式传输流量。流式传输流量包括像素、USB、用户输入、音频、剪贴板、文件上传和下载以及打印机流量。要使用 VPC 终端节点，必须在 WorkSpaces 应用程序堆栈中启用 VPC 终端节点设置。相比从互联网访问能力有限的地点通过公共互联网流式传输用户会话，这可以作为一种替代方案，并且它可以通过 Direct Connect 实例进行访问。通过 VPC 端点流式传输用户会话需要满足以下条件：
+  与接口端点关联的安全组必须允许从用户连接的 IP 地址范围对端口 `443` (TCP) 和端口 `1400–1499` (TCP) 进行入站访问。
+  子网的网络访问控制列表必须允许从短暂网络端口 `1024-65535` (TCP) 到用户连接的 IP 地址范围的出站流量。
+  需要互联网连接才能对用户进行身份验证并交付 WorkSpaces 应用程序运行所需的 Web 资产。

 要详细了解如何使用 WorkSpaces 应用程序限制 AWS 服务流量，请参阅有关[https://docs.aws.amazon.com/appstream2/latest/developerguide/creating-streaming-from-interface-vpc-endpoints.html](https://docs.aws.amazon.com/appstream2/latest/developerguide/creating-streaming-from-interface-vpc-endpoints.html)的管理指南。

 当需要完全的公共互联网访问时，最好在映像生成器上禁用 Internet Explorer 增强安全配置 (ESC)。有关更多信息，请参阅[https://docs.aws.amazon.com/appstream2/latest/developerguide/customize-fleets.html#customize-fleets-disable-ie-esc](https://docs.aws.amazon.com/appstream2/latest/developerguide/customize-fleets.html#customize-fleets-disable-ie-esc)的 WorkSpaces 应用程序管理指南。

## 在您的实例上配置实例元数据服务 (IMDS)
<a name="configuring-imds"></a>

本主题介绍实例元数据服务（IMDS）。

*实例元数据*是有关 Amazon Elastic Compute Cloud (Amazon EC2) 实例的数据，可供应用程序用来配置或管理正在运行的实例。实例元数据服务（IMDS）是实例上的组件，在实例上进行编码，用于安全访问实例元数据。有关更多信息，请参阅《Amazon EC2 用户指南**》中的[实例元数据和用户数据](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-instance-metadata.html)。

代码可以使用以下两种方法之一从正在运行的实例访问实例元数据：实例元数据服务版本 1 (IMDSv1) 或实例元数据服务版本 2 (IMDSv2)。 IMDSv2 使用面向会话的请求并缓解了几种可用于尝试访问 IMDS 的漏洞。有关这两种方法的信息，请参阅《*Amazon EC2 用户指南*》中的[配置实例元数据服务](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/configuring-instance-metadata-service.html)。

### 为 IMDS 提供的资源支持
<a name="imds-resource-support"></a>

Always-On、按需、单会话和多会话队列以及所有映像生成器在运行 WorkSpaces 应用程序映像 IMDSv2 时，均 IMDSv1 支持 2024 年 1 月 16 日或之后发布的代理版本或托管映像更新。

Elastic Fleets 和 AppBlock Builders 实例也同时支持 IMDSv1 和。 IMDSv2

### IMDS 属性设置示例
<a name="imds-examples"></a>

以下是选择IMDS方法的两个示例：

#### Java v2 开发工具包示例
<a name="java-sdk-example"></a>

以下示例 IMDSv1 使用`disableIMDSV1`属性禁用请求

```
CreateFleetRequest request = CreateFleetRequest.builder()
 .name("TestFleet")
 .imageArn("arn:aws:appstream:us-east-1::image/TestImage")
 .instanceType("stream.standard.large")
 .fleetType(FleetType.ALWAYS_ON)
 .computeCapacity(ComputeCapacity.builder()
 .desiredInstances(5)
 .build())
 .description("Test fleet description")
 .displayName("Test Fleet Display Name")
 .enableDefaultInternetAccess(true)
 .maxUserDurationInSeconds(3600)
 .disconnectTimeoutInSeconds(900)
 .idleDisconnectTimeoutInSeconds(600)
 .iamRoleArn("arn:aws:iam::123456789012:role/TestRole")
 .streamView(StreamView.APP)
 .platform(PlatformType.WINDOWS)
 .maxConcurrentSessions(10)
 .maxSessionsPerInstance(2)
 .tags(tags)
 .disableIMDSV1(true)
 .build();
```

将**禁用**设置为 true IMDSV1 以禁用 IMDSv1 和强制执行 IMDSv2。

将**禁用**设置IMDSV1为 false 可同时启用 IMDSv1 和 IMDSv2。

#### CLI 示例
<a name="cli-example"></a>

以下示例 IMDSv1 使用`--disable-imdsv1`属性禁用请求

```
aws appstream create-fleet --name test-fleet --image-arn "arn:aws:appstream:us-east-1::image/test-image" --disable-imdsv1 --instance-type stream.standard.small --compute-capacity DesiredInstances=2 --max-user-duration-in-seconds 57600 --disconnect-timeout-in-seconds 57600 --region us-east-1
```

设置`--disable-imdsv1`为 true 可禁用 IMDSv1 和强制执行 IMDSv2。

设置`--no-disable-imdsv1`为 false 可同时启用 IMDSv1 和 IMDSv2。