

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

# 对流媒体实例的访问权限 WorkSpaces 和脚本
对流媒体实例的访问权限 WorkSpaces 和脚本

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

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

**Topics**
+ [

## 将 IAM 角色与 WorkSpaces 流媒体实例配合使用的最佳实践
](#best-practices-for-using-iam-role-with-streaming-instances)
+ [

## 配置现有 IAM 角色以用于 WorkSpaces 流式处理实例
](#configuring-existing-iam-role-to-use-with-streaming-instances)
+ [

## 如何创建用于 WorkSpaces 流媒体实例的 IAM 角色
](#how-to-create-iam-role-to-use-with-streaming-instances)
+ [

## 如何将 IAM 角色用于 WorkSpaces 流式处理实例
](#how-to-use-iam-role-with-streaming-instances)

## 将 IAM 角色与 WorkSpaces 流媒体实例配合使用的最佳实践


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

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

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

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

## 配置现有 IAM 角色以用于 WorkSpaces 流式处理实例


本主题介绍如何配置现有 IAM 角色以便您可以将其与一起使用 WorkSpaces 。

**先决条件**

要与之配合使用的 IAM 角色 WorkSpaces 必须满足以下先决条件：
+ IAM 角色必须与 WorkSpaces 流媒体实例位于同一个亚马逊 Web Services 账户中。
+ IAM 角色不能是服务角色。
+ 附加到 IAM 角色的信任关系策略必须将 WorkSpaces 服务作为委托人。*委托*人是Amazon可以执行操作和访问资源的实体。该策略还必须包括 `sts:AssumeRole` 操作。此策略配置定义 WorkSpaces 为可信实体。

  
+ 如果您要将 IAM 角色应用于 WorkSpaces，则 WorkSpaces 必须运行在 2019 年 9 月 3 日当天或之后发布的 WorkSpaces 代理版本。如果您要将 IAM 角色应用于 WorkSpaces，则 WorkSpaces 必须使用使用在同一日期或之后发布的代理版本的映像。

**使 WorkSpaces 服务委托人能够担任现有 IAM 角色**

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

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

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

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

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

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

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

****  

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

------

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

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

## 如何创建用于 WorkSpaces 流媒体实例的 IAM 角色


本主题介绍如何创建新的 IAM 角色以便您可以将其用于 WorkSpaces

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

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

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

1. 从Amazon服务列表中选择**WorkSpaces**。

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

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

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

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

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

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

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

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

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

## 如何将 IAM 角色用于 WorkSpaces 流式处理实例


创建 IAM 角色后，您可以在启动 WorkSpaces 时将其应用于该角色 WorkSpaces。您也可以将 IAM 角色应用于现有角色 WorkSpaces。

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

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

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

以下示例显示了如何使用 **workspaces\$1machine\$1** role 凭据配置文件来描述流媒体实例（实EC2 例）和创建 Boto 客户端。Boto 是适用于 Python 的 Amazon Web Services（Amazon）SDK。

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

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

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

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

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

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

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