使用 IAM 角色向在 AppStream 2.0 流实例上运行的应用程序和脚本授予权限 - Amazon AppStream on

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

使用 IAM 角色向在 AppStream 2.0 流实例上运行的应用程序和脚本授予权限

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

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

在 AppStream 2.0 流媒体实例中使用 IAM 角色的最佳实践

当您在 AppStream 2.0 流媒体实例中使用 IAM 角色时,我们建议您遵循以下做法:

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

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

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

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

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

    IAM 策略允许您定义在哪些情况下您的 IAM 角色可用于访问资源。例如,您可以包含条件以指定请求可以来自的 IP 地址范围。这样做可以防止在您的环境之外使用凭证。有关更多信息,请参阅 IAM 用户指南中的使用策略条件提高安全性

配置现有 IAM 角色以用于 AppStream 2.0 流媒体实例

本主题介绍如何配置现有 IAM 角色,以便您可以将其用于映像生成器和舰队流实例。

先决条件

您要在 AppStream 2.0 镜像生成器或舰队流实例中使用的 IAM 角色必须满足以下先决条件:

  • IAM 角色必须与 AppStream 2.0 流媒体实例位于同一个Amazon Web Services 账户中。

  • IAM 角色不能是服务角色。

  • 附加到 IAM 角色的信任关系策略必须包含 AppStream 2.0 服务作为委托人。委托人是AWS可以执行操作和访问资源的实体。该策略还必须包括 sts:AssumeRole 操作。此策略配置将 AppStream 2.0 定义为可信实体。

  • 如果您将 IAM 角色应用于映像生成器,则映像生成器必须运行 2019 年 9 月 3 日或之后发布的 AppStream 2.0 代理版本。如果要将 IAM 角色应用于一个队列,则该队列必须使用一个映像,该映像使用在同一日期或之后发布的代理版本。有关更多信息,请参阅AppStream 2.0 代理版本说明

让 AppStream 2.0 服务委托人代入现有 IAM 角色

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

  1. 通过以下网址打开 IAM 控制台:https://console.aws.amazon.com/iam/

  2. 在导航窗格中,选择 Roles(角色)。

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

  4. 选择 Trust relationships (信任关系) 选项卡,然后选择 Edit trust relationship (编辑信任关系)

  5. Policy Document (策略文档) 下,验证信任关系策略是否包含 appstream.amazonaws.com 服务委托人的 sts:AssumeRole 操作:

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

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

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

本主题介绍如何创建新的 IAM 角色,以便您可以将其用于映像生成器和舰队流实例。

  1. 访问:https://console.aws.amazon.com/iam/,打开 IAM 控制台。

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

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

  4. 从AWS服务列表中选择 AppStream 2.0

  5. “选择您的用例” 下,AppStream 已选择 AppStream 2.0 — 允许 2.0 实例代表您调用AWS服务。选择Next: Permissions(下一步: 权限)

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

    在您创建策略后,关闭该选项卡并返回到您的原始选项卡。选中您希望 AppStream 2.0 具有的权限策略旁边的复选框。

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

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

  9. 选择 Next: Review(下一步: 审核)

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

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

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

如何在 AppStream 2.0 流媒体实例中使用 IAM 角色

创建 IAM 角色后,可以在启动映像生成器或创建队列时将其应用于映像生成器或队列流媒体实例。您还可以将 IAM 角色应用于现有队列。有关如何在启动映像生成器时应用 IAM 角色的信息,请参阅启动映像生成器来安装和配置流式处理应用程序。有关在创建队列时如何应用 IAM 角色的信息,请参阅创建机群

在将 IAM 角色应用到您的映像生成器或队列流实例时, AppStream 2.0 检索临时凭证,并在实例上创建 appstream_machine_ role 凭证配置文件。临时证书的有效期为 1 小时,新证书每小时检索一次。以前的凭证不会过期,因此只要它们有效,您就可以使用它们。您可以使用凭证配置文件以编程方式调用AWS服务,方法是使用AWS命令行界面 (AWSCLI)、TAWS ools for 或AWS SDK,使用您选择的语言。 PowerShell

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

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

以下示例演示如何使用 appstream_machine_role 凭证配置文件描述流实例(EC2 实例)和创建 Boto 客户端。Boto 是适用于 Python 的Amazon Web Services (AWS) 软件开发工具包。

使用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网站下载适用于 Windows 的AWS工具安装程序,其中包括适用于.NET 的AWS工具 PowerShell 和适用于.NET 的Amazon Web Serv AWSices SDK。

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

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

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