对流媒体实例的访问权限 WorkSpaces 和脚本 - Amazon WorkSpaces
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

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

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

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

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

当您将 IAM 角色用于 WorkSpaces 流式处理实例时,我们建议您遵循以下做法:

  • 限制您授予 Amazon API 操作和资源的权限。

    在创建 IAM 策略并将其附加到与 WorkSpaces 流媒体实例关联的 IAM 角色时,请遵循最低权限原则。当您使用需要访问 Amazon API 操作或资源的应用程序或脚本时,请确定所需的特定操作和资源。然后,创建允许应用程序或脚本仅执行这些操作的策略。有关更多信息,请参阅 IAM 用户指南中的授予最低权限

  • 为每个 WorkSpaces 资源创建一个 IAM 角色。

    为每个 WorkSpaces 资源创建唯一的 IAM 角色是一种遵循最低权限原则的做法。这样做还允许您修改一个资源的权限,而不会影响其他资源。

  • 限制可以使用凭证的位置。

    通过 IAM 策略,您可以定义可使用 IAM 角色访问资源的条件。例如,您可以包含条件以指定请求可以来自的 IP 地址范围。这样做可以防止在您的环境之外使用凭证。有关更多信息,请参阅《IAM 用户指南》中的使用策略条件来增强安全性

配置现有 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/ 打开 IAM 控制台。

  2. 在导航窗格中,选择角色

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

  4. 选择 信任关系 选项卡,然后选择 编辑信任关系

  5. 策略文档下,验证信任关系策略是否包含 workspaces.amazonaws.com 服务主体的 sts:AssumeRole 操作:

    JSON
    { "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": [ "workspaces.amazonaws.com" ] }, "Action": "sts:AssumeRole" } ] }
  6. 在编辑完信任策略后,请选择更新信任策略以保存所做更改。

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

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

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

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

  2. 在导航窗格中,选择角色,然后选择创建角色

  3. 对于Select type of trusted entity(选择受信任实体的类型),选择 Amazon service(服务)

  4. 从Amazon服务列表中选择WorkSpaces

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

  6. 如果可能,选择要用作权限策略的策略,或选择 Create policy(创建策略)以打开新的浏览器选项卡并从头开始创建新策略。有关更多信息,请参阅《IAM 用户指南》创建 IAM 策略(控制台)过程的步骤 4。

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

  7. (可选)设置权限边界。这是一项高级功能,可用于服务角色,但不可用于服务相关角色。有关更多信息,请参阅《IAM 用户指南》中的 IAM 实体的权限边界

  8. 选择下一步:标签。您可以选择附加标签作为键值对。有关更多信息,请参阅《IAM 用户指南》中的标记 IAM 用户和角色

  9. 选择下一步:审核

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

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

  12. 检查该角色,然后选择创建角色

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

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

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

当您进行 API 调用时,请将 workspaces_machine_role 指定为凭证配置文件。否则,由于权限不足,操作将失败。

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

以下示例显示了如何使用 workspaces_machine_ 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。

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

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

session = boto3.Session(profile_name=workspaces_machine_role')