正在设置 SAML - 亚马逊 AppStream 2.0

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

正在设置 SAML

要使用户能够使用其现有凭据登录 AppStream 2.0 并启动流式传输应用程序,您可以使用 SAML 2.0 设置联合身份验证。为此,请使用IAM角色和中继状态URL来配置SAML符合 2.0 标准的身份提供商 (IdP),并启用 AWS 以允许您的联合用户访问 2.0 堆栈。 AppStream 该IAM角色向用户授予访问堆栈的权限。中继状态是在 AWS成功进行身份验证后将用户引导到的堆栈门户。

前提条件

在配置 SAML 2.0 连接之前,请完成以下先决条件。

  1. 配置您的SAML基于 IdP 以与之建立信任关系。 AWS

    • 在组织的网络中,将您的身份存储配置为与SAML基于基础的 IdP 配合使用。有关配置资源的信息,请参阅 AppStream 2.0 与 SAML 2.0 集成

    • 使用SAML基于您的 IdP 生成和下载将您的组织描述为 IdP 的联合元数据文档。此签名XML文件用于建立依赖方信任。将此文件保存到稍后可以从IAM控制台访问的位置。

  2. 使用 AppStream 2.0 管理控制台创建 AppStream 2.0 堆栈。您需要使用堆栈名称来创建IAM策略和配置 IdP 与 AppStream 2.0 的集成,如本主题后面所述。

    您可以使用 AppStream 2.0 管理控制台或 AppStream 2.0 创建 2. AppStream 0 堆栈API。 AWS CLI有关更多信息,请参阅 创建 Amazon AppStream 2.0 舰队和堆栈

步骤 1:在中创建SAML身份提供商 AWS IAM

首先,在中创建一个 SAML IdP。 AWS IAM此 IdP 使用组织中 IdP 软件生成的元数据文档定义贵组织的 IdP AWS 信任关系。有关更多信息,请参阅IAM用户指南中的创建和管理SAML身份提供商(Amazon Web Services 管理控制台)。有关在 AWS GovCloud (US) 区域中使用的信息,请参阅《AWS GovCloud (US) 用户指南》SAML IdPs 中的 Ident AWS ity and Access Managem ent

步骤 2:创建 SAML 2.0 联合IAM角色

接下来,创建 SAML 2.0 联合IAM角色。此步骤在与您组织的 IdP IAM 之间建立信任关系,这会将您的 IdP 标识为可信的联合实体。

为 I SAML dP 创建IAM角色
  1. 打开IAM控制台,网址为https://console.aws.amazon.com/iam/

  2. 在导航窗格中,选择 Roles(角色)和 Create role(创建角色)。

  3. 对于角色类型,选择 SAML2.0 联合

  4. 对于SAML提供者,选择您创建的 SAML IdP。

    重要

    请勿选择两种 SAML 2.0 访问方法中的任何一种(仅允许编程访问或允许编程访问和 Amazon Web Services 管理控制台)。

  5. 在 “属性” 中,选择:a SAML ud。

  6. 对于,请输入 https://signin.aws.amazon.com/saml。此值限制角色对包含SAML主题类型断言且值为 persistent 的SAML用户流式传输请求的访问权限。如果:sub_type SAML 是永久性的,则您的 IdP 会在来自特定用户的所有请求中为 nameID 元素发送相同的唯一值。SAML有关:sub_type SAML 断言的更多信息,请参阅使用基于联合身份验证的访问权限中的 “在基于SAML联合身份验证中唯一标识用户” 部分。SAML API AWS

  7. 查看您的 SAML 2.0 信任信息,确认正确的受信任实体和条件,然后选择 “下一步:权限”。

  8. Attach permissions policies (附加权限策略) 页面上,选择 Next: Tags (下一步:标签)

  9. (可选)为要添加的每个标签输入键和值。有关更多信息,请参阅为IAM用户和角色添加标签

  10. 完成此操作后,选择 Next: Review (下一步:审核)。稍后您将为此角色创建并嵌入内联策略。

  11. 对于角色名称,输入有助于标识此角色作用的名称。由于多个实体可能引用该角色,因此,角色创建完毕后,您将无法编辑角色名称。

  12. (可选)对于角色描述,输入新角色的描述。

  13. 检查角色详细信息,然后选择 Create role

  14. (可选)如果您计划使用第三方 SAML 2.0 身份提供商或基于证书的身份验证来使用会话上下文或基于属性的应用程序授权,则必须将 sts: TagSession 权限添加到新IAM角色的信任策略中。有关更多信息,请参阅使用第三方 SAML 2.0 身份提供商基于属性的应用程序授权在 AWS STS中传递会话标签

    在新IAM角色的详细信息中,选择信任关系选项卡,然后选择编辑信任关系。“编辑信任关系”策略编辑器启动。添加 sts: TagSession 权限,如下所示:

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Federated": "arn:aws:iam::ACCOUNT-ID-WITHOUT-HYPHENS:saml-provider/IDENTITY-PROVIDER" }, "Action": [ "sts:AssumeRoleWithSAML", "sts:TagSession" ], "Condition": { "StringEquals": { "SAML:sub_type": "persistent" } } } ] }

    Replace(替换) IDENTITY-PROVIDER使用您在步骤 1 中创建的 SAML IdP 的名称。然后选择更新信任策略

步骤 3:为IAM角色嵌入内联策略

接下来,为您创建的角色嵌入内联IAM策略。嵌入内联策略时,策略中的权限不能意外分配给错误的主体实体。内联策略为联合用户提供访问您创建的 AppStream 2.0 堆栈的权限。

  1. 在您创建的IAM角色的详细信息中,选择权限选项卡,然后选择添加内联策略。“创建策略”向导将启动。

  2. 创建策略中,选择JSON选项卡。

  3. 将以下JSON策略复制并粘贴到JSON窗口中。然后,通过输入您的 AWS 区域 代码、账户 ID 和堆栈名称来修改资源。在以下策略中,"Action": "appstream:Stream"该操作向您的 AppStream 2.0 用户提供了在您创建的堆栈上连接到流媒体会话的权限。

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "appstream:Stream", "Resource": "arn:aws:appstream:REGION-CODE:ACCOUNT-ID-WITHOUT-HYPHENS:stack/STACK-NAME", "Condition": { "StringEquals": { "appstream:userId": "${saml:sub}" } } } ] }

    Replace(替换) REGION-CODE 与您的 AppStream 2.0 堆栈所在的 AWS 区域相同。Replace(替换) STACK-NAME 使用堆栈的名称。STACK-NAME 区分大小写,并且必须与 AppStream 2.0 管理控制台的 Stacks 控制面板中显示的堆栈名称完全匹配大小写和拼写。

    对于 AWS GovCloud (US) 区域中的资源,请使用以下格式ARN:

    arn:aws-us-gov:appstream:REGION-CODE:ACCOUNT-ID-WITHOUT-HYPHENS:stack/STACK-NAME

  4. (可选)如果您计划使用第三方 SAML 2.0 身份提供商和 2.0 多栈应用程序目录使用基于属性的应用程序授权,则IAM角色中的资源内联策略必须允许应用程序授权控制"Resource": "arn:aws:appstream:REGION-CODE:ACCOUNT-ID-WITHOUT-HYPHENS:stack/*"对堆栈的流式访问权限。SAML要对堆栈资源实施额外保护,可以在策略中添加显式拒绝。有关更多信息,请参阅使用第三方 SAML 2.0 身份提供商基于属性的应用程序授权策略评估逻辑

  5. 完成后,选择 Review policy (审核策略)策略验证程序将报告任何语法错误。

步骤 4:配置您的SAML基于 IdP

接下来,根据您所在的 SAML IdP,您可能需要手动更新您的 IdP,使其 AWS 成为值得信赖的服务提供商,方法是将 saml-metadata.xml 中的saml-metadata.xml文件上传https://signin.aws.amazon.com/static/到您的 IdP。此步骤会更新您的 IdP 的元数据。对于某些人来说 IdPs,更新可能已经配置好了。如果是这样,请继续下一步。

如果您的 IdP 中尚未配置此更新,请查看您的 IdP 提供的文档,了解有关如何更新元数据的信息。有些提供商允许您选择键入URL,然后 IdP 会为您获取并安装文件。其他人则要求您从下载文件,URL然后将其作为本地文件提供。

步骤 5:为SAML身份验证响应创建断言

接下来,您可能需要将您的 IdP 发送到的信息配置 AWS 为身份验证SAML响应中的属性。根据您的 IdP,此信息可能已经预先配置好。如果是这样,请跳过此步骤并继续执行步骤 6,

如果您的 IdP 中尚未配置此信息,请提供以下内容:

  • SAML主题名称 ID-正在登录的用户的唯一标识符。

    注意

    对于包含已加入域的队列的堆栈,必须以 “”(使用sAMAccount名称)或 domain\username “” 的格式提供用户的 nameID 值。username@domain.com userPrincipalName如果您使用的是sAMAccount名称格式,则可以使用网络BIOS名称或完全限定域名 (FQDN) 来指定。domainActive Directory 单向信任方案需要使用sAMAccount名称格式。有关更多信息,请参阅 在 AppStream 2.0 中使用活动目录

  • SAML主题类型(值设置为persistent)-将该值设置为persistent可确保您的 IdP 在来自特定用户的所有SAML请求中为该NameID元素发送相同的唯一值。请确保您的IAM策略包含一个仅允许 SAML sub_type 设置为的SAML请求的条件persistent,如中所述。步骤 2:创建 SAML 2.0 联合IAM角色

  • AttributeName属性设置为 “ https://aws.amazon.com/SAML/属性/角色” 的元素 — 此元素包含一个或多个元素,这些AttributeValue元素列出了您的 I SAML dP 将用户映射到的角色IAM和 IdP。角色和 IdP 以逗号分隔的一对指定。ARNs

  • AttributeName属性设置为 A https://aws.amazon.com/SAML/ ttributes/ 的元素 RoleSessionName — 此元素包含一个为其颁发的 AWS 临时证书提供标识符的AttributeValue元素。SSOAttributeValue 元素中的值长度必须介于 2 到 64 个字符之间,只能包含字母数字字符、下划线和以下字符:+(加号)、=(等号)、,(逗号)、.(句点)、@(at 符)和 -(连字符)。它不能含有空格。该值通常为用户 ID (bobsmith) 或电子邮件地址 (bobsmith@example.com)。该值不应包含空格,如用户的显示名称 (Bob Smith)。

  • AttributeName属性设置为 A https://aws.amazon.com/SAML/ ttributes/PrincipalTag:SessionContext(可选)的元素 — 此元素包含一个AttributeValue元素,该元素提供的参数可用于将会话上下文参数传递给您的流媒体应用程序。有关更多信息,请参阅 亚马逊 AppStream 2.0 中的会话背景

  • AttributeName属性设置为 A https://aws.amazon.com/SAML/ ttributes/PrincipalTag:ObjectSid(可选)的元素 — 此元素包含一个为登录用户提供 Active Directory 安全标识符 (SID) 的AttributeValue元素。此参数与基于证书的身份验证一起使用,以启用到 Active Directory 用户的强映射。

  • AttributeName属性设置为 At https://aws.amazon.com/SAML/ tributes/: DomainPrincipalTag(可选)的元素- 此元素包含一个为登录用户提供 Active Directory 完全DNS限定域名 () FQDN 的元素AttributeValue。当用户的 Active Directory userPrincipalName 包含备用后缀时,此参数用于基于证书的身份验证。必须以 domain.com 格式提供该值,包括所有子域名。

  • AttributeSessionDuration属性设置为 A https://aws.amazon.com/SAML/ ttributes/SessionDuration(可选)的元素 — 此元素包含一个AttributeValue元素,用于指定在要求重新进行身份验证之前,用户的联合流媒体会话可以保持活动状态的最长时间。默认值为 60 分钟(3600 秒)。有关更多信息,请参阅为身份验证响应配置SAML断言中的 SessionDuration 属性设置为 A https://aws.amazon.com/SAML/ ttributes/ 的可选属性元素SessionDuration部分。

    注意

    尽管它SessionDuration是一个可选属性,但我们建议您在SAML响应中包含该属性。如果您未指定此属性,则会话持续时间将设置为默认值 60 分钟。

    如果您的用户使用 AppStream 2.0 原生客户端或在新体验中使用 Web 浏览器访问其流媒体应用程序,则他们的会话将在会话持续时间到期后断开连接。 AppStream 如果您的用户在旧/经典体验中 AppStream使用网络浏览器访问其流媒体应用程序,则在用户的会话持续时间到期并刷新浏览器页面后,他们的会话将断开连接。

有关如何配置这些元素的更多信息,请参阅IAM用户指南》中的为身份验证响应配置SAML断言。有关 IdP 的具体配置要求信息,请参阅您的 IdP 提供的文档。

步骤 6:配置您的联合身份验证的中继状态

最后,使用您的 IdP 将联盟的中继状态配置为指向 AppStream 2.0 堆栈中继状态。URL成功通过身份验证后 AWS,用户将被定向到 AppStream 2.0 堆栈入口,该门户被定义为SAML身份验证响应中的中继状态。

中继状态的格式URL如下:

https://relay-state-region-endpoint?stack=stackname&accountId=aws-account-id-without-hyphens

根据您的 Amazon Web Services 账户 ID、堆栈名称以及与堆栈所在区域关联的中继状态终端节点构建您的中继状态。URL

(可选)可以指定您希望自动启动的应用程序的名称。要查找应用程序名称,请在 AppStream 2.0 控制台中选择图像,选择 “应用程序” 选项卡,并记下 “应用程序名称” 列中显示的名称。或者,如果您尚未创建映像,请连接到已安装应用程序的映像生成器,然后打开 Image Assistant。应用程序名称显示在 Add Apps (添加新应用程序) 选项卡中。

如果您的实例集启用了桌面流视图,您也可以选择直接启动到操作系统桌面。为此,请在中继状态DesktopURL结束后指定&app=

使用由身份提供商 (IdP) 启动的流程,在系统默认浏览器中,在用户登录 IdP 并从 IdP 用户门户中选择 2.0 AppStream 应用程序后,他们将被重定向到系统默认浏览器中的 AppStream 2.0 登录页面,其中包含以下选项:

  • 继续使用浏览器

  • 打开 AppStream 2.0 客户端

在该页面上,用户可以选择在浏览器中启动会话,也可以选择使用 AppStream 2.0 客户端应用程序启动会话。或者,您也可以指定应将哪个客户端用于 SAML 2.0 联合。为此,请在中继状态结束后指定其中一个nativeweb在中继状态结束URL时&client=。当参数处于中继状态时URL,相应的会话将自动在指定的客户端中启动,用户无需做出选择。

注意

仅当您使用新的中继状态区域端点(见下表 1)来构造中继状态,并使用 AppStream 2.0 客户端版本 1.1.1300 及更高版本时URL,此功能才可用。此外,用户应始终使用其系统默认浏览器登录 IdP。如果他们使用非默认浏览器,则该功能将无法使用。

通过使用第三方 SAML 2.0 身份提供商的基于属性的应用程序授权,您可以允许从单个中继状态访问多个堆栈。URL从中继状态中移除堆栈和应用程序(如果存在)参数URL,如下所示:

https://relay-state-region-endpoint?accountId=aws-account-id-without-hyphens

当用户联合到 AppStream 2.0 应用程序目录时,他们将看到应用程序授权已将一个或多个应用程序与用户匹配的所有堆栈,这些堆栈的账户 ID 和中继状态端点与您的堆栈所在区域关联的中继状态端点。当用户选择目录时,应用程序授权将仅显示该用户有权使用的应用程序。

注意

用户不能同时从多个堆栈流式传输。

有关更多信息,请参阅 使用第三方 SAML 2.0 身份提供商基于属性的应用程序授权

下表 1 列出了可用 AppStream 2.0 的区域的中继状态端点。表 1 中的中继状态端点与 Windows 客户端应用程序版本 1.1.1300 AppStream 2.0 网络浏览器访问(版本 2) 及更高版本兼容。如果您使用的是较旧版本的 Windows 客户端,则应使用表 2 中列出的旧中继状态端点来配置 SAML 2.0 联合。如果您希望用户使用兼容的连接进行流式传输,则必须使用FIPS兼容的终端节FIPS点。有关FIPS终端节点的更多信息,请参阅使用FIPS端点保护传输中的数据

表 1: AppStream 2.0 中继状态区域终端节点(推荐)
区域 中继状态端点
美国东部(弗吉尼亚州北部)

https://appstream2.euc-sso.us-east-1.aws.amazon.com/saml

(FIPS) https://appstream2.euc-sso-fips.us-east-1.aws.amazon.com/saml

美国东部(俄亥俄州) https://appstream2.euc-sso.us-east-2.aws.amazon.com/saml
美国西部(俄勒冈州)

https://appstream2.euc-sso.us-west-2.aws.amazon.com/saml

(FIPS) https://appstream2.euc-sso-fips.us-west-2.aws.amazon.com/saml

亚太地区(孟买) https://appstream2.euc-sso.ap-south-1.aws.amazon.com/saml
亚太地区(首尔) https://appstream2.euc-sso.ap-northeast-2.aws.amazon.com/saml
亚太地区(新加坡) https://appstream2.euc-sso.ap-southeast-1.aws.amazon.com/saml
亚太地区(悉尼) https://appstream2.euc-sso.ap-southeast-2.aws.amazon.com/saml
亚太地区(东京) https://appstream2.euc-sso.ap-northeast-1.aws.amazon.com/saml

加拿大(中部)

https://appstream2.euc-sso.ca-central-1.aws.amazon.com/saml
欧洲地区(法兰克福) https://appstream2.euc-sso.eu-central-1.aws.amazon.com/saml
欧洲地区(爱尔兰) https://appstream2.euc-sso.eu-west-1.aws.amazon.com/saml
欧洲地区(伦敦) https://appstream2.euc-sso.eu-west-2.aws.amazon.com/saml
AWS GovCloud (美国东部)

https://appstream2.euc-sso.us-gov-east-1.amazonaws-us-gov.com/saml

(FIPS) https://appstream2.euc-sso-fips.us-gov-east-1.amazonaws-us-gov.com/saml

注意

有关在 AWS GovCloud (US) 区域中使用 AppStream 2.0 的更多信息,请参阅AWS GovCloud (US) 用户指南中的 Amazon AppStream 2.0

AWS GovCloud (美国西部)

https://appstream2.euc-sso.us-gov-west-1.amazonaws-us-gov.com/saml

(FIPS) https://appstream2.euc-sso-fips.us-gov-west-1.amazonaws-us-gov.com/saml

注意

有关在 AWS GovCloud (US) 区域中使用 AppStream 2.0 的更多信息,请参阅AWS GovCloud (US) 用户指南中的 Amazon AppStream 2.0

南美洲(圣保罗) https://appstream2.euc-sso.sa-east-1.aws.amazon.com/saml

下表 2 列出了仍然可用的旧中继状态端点。但是,建议您使用表 1 中列出的新的中继状态端点来配置 SAML 2.0 联合。特别是,借助新的中继状态端点,您可以让您的用户从 IDP 启动的流式传输会话中启动 AppStream 2.0 客户端应用程序(版本 1.1.1300 及更高版本)。表 1 中的新中继状态端点还允许用户在同一 Web 浏览器的不同选项卡中登录其他 AWS 应用程序,而不会影响正在进行的 AppStream 2.0 流式传输会话。表 2 中的旧中继状态端点不支持此功能。有关更多信息,请参阅 我的 AppStream 2.0 客户端用户每 60 分钟就会断开与 AppStream 2.0 会话的连接。

表 2:旧的 AppStream 2.0 中继状态区域终端节点(不推荐)
区域 中继状态端点
美国东部(弗吉尼亚州北部)

https://appstream2.us-east-1.aws.amazon.com/saml

(FIPS) https://appstream2-fips.us-east-1.aws.amazon.com/saml

美国东部(俄亥俄州) https://appstream2.us-east-2.aws.amazon.com/saml
美国西部(俄勒冈州)

https://appstream2.us-west-2.aws.amazon.com/saml

(FIPS) https://appstream2-fips.us-west-2.aws.amazon.com/saml

亚太地区(孟买) https://appstream2.ap-south-1.aws.amazon.com/saml
亚太地区(首尔) https://appstream2.ap-northeast-2.aws.amazon.com/saml
亚太地区(新加坡) https://appstream2.ap-southeast-1.aws.amazon.com/saml
亚太地区(悉尼) https://appstream2.ap-southeast-2.aws.amazon.com/saml
亚太地区(东京) https://appstream2.ap-northeast-1.aws.amazon.com/saml

加拿大(中部)

https://appstream2.ca-central-1.aws.amazon.com/saml
欧洲地区(法兰克福) https://appstream2.eu-central-1.aws.amazon.com/saml
欧洲地区(爱尔兰) https://appstream2.eu-west-1.aws.amazon.com/saml
欧洲地区(伦敦) https://appstream2.eu-west-2.aws.amazon.com/saml
AWS GovCloud (美国东部)

https://appstream2.us-gov-east-1.amazonaws-us-gov.com/saml

(FIPS) https://appstream2-fips.us-gov-east-1.amazonaws-us-gov.com/saml

注意

有关在 AWS GovCloud (US) 区域中使用 AppStream 2.0 的更多信息,请参阅AWS GovCloud (US) 用户指南中的 Amazon AppStream 2.0

AWS GovCloud (美国西部)

https://appstream2.us-gov-west-1.amazonaws-us-gov.com/saml

(FIPS) https://appstream2-fips.us-gov-west-1.amazonaws-us-gov.com/saml

注意

有关在 AWS GovCloud (US) 区域中使用 AppStream 2.0 的更多信息,请参阅AWS GovCloud (US) 用户指南中的 Amazon AppStream 2.0

南美洲(圣保罗) https://appstream2.sa-east-1.aws.amazon.com/saml

下表 3 列出了可用于构造中继状态的所有可用参数URL。

表 3:继电器状态URL参数
参数 必需 格式 支持
accountId 必需 12 个字符 AWS 账户 的身份证 表 1 和表 2 中的新旧终端节点
堆栈 可选 堆栈名称 表 1 和表 2 中的新旧终端节点
应用程序 可选 应用程序名称或 “桌面” 表 1 和表 2 中的新旧终端节点
客户端 可选 “原生” 或 “网络” 仅表 1 中的新终端节点