本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
设置 SAML
要使用户能够使用其现有凭据登录 AppStream 2.0 并启动流式传输应用程序,您可以使用 SAML 2.0 设置联合身份验证。为此,请使用 IAM 角色和中继状态 URL 来配置符合 SAML 2.0 标准的身份提供商 (IdP),并启用 AWS 以允许您的联合用户访问 2.0 堆栈。 AppStream IAM 角色向用户授予对堆栈的访问权限。中继状态是在 AWS成功进行身份验证后将用户引导到的堆栈门户。
内容
前提条件
请在配置您的 SAML 2.0 连接之前满足以下先决条件。
-
配置基于 SAML 的 IdP 以建立与 AWS的信任关系。
-
在组织的网络内部配置身份存储,与基于 SAML 的 IdP 配合工作。有关配置资源的信息,请参阅 AppStream 2.0 与 SAML 2.0 集成。
-
使用基于 SAML 的 IdP 生成和下载联合身份元数据文档,该文档将您的组织作为 IdP 进行介绍。此签名 XML 文档用于建立信赖方信任关系。将该文件保存您稍后可通过 IAM 控制台访问的位置。
-
-
使用 AppStream 2.0 管理控制台创建 AppStream 2.0 堆栈。您需要使用堆栈名称来创建 IAM 策略和配置 IdP 与 AppStream 2.0 的集成,如本主题后面所述。
您可以使用 AppStream 2.0 管理控制台或 AppStream 2.0 API 创建 AppStream 2.0 堆栈。 AWS CLI有关更多信息,请参阅 创建 Amazon AppStream 2.0 舰队和堆栈。
步骤 1:在 IAM 中 AWS 创建 SAML 身份提供商
首先,在 IAM 中创建一个 SAML IdP AWS 。此 IdP 使用组织中 IdP 软件生成的元数据文档定义贵组织的 IdP AWS 信任关系。有关更多信息,请参阅《IAM 用户指南》中的创建和管理 SAML 身份提供商(Amazon Web Services 管理控制台)。有关在 AWS GovCloud (US) 各区域使用 SAML 的信息,请参阅《AWS GovCloud (US) 用户指南》 IdPs 中的 Ident AWS ity and Access Managem ent。
步骤 2:创建 SAML 2.0 联合身份验证 IAM 角色
接下来创建 SAML 2.0 联合身份验证 IAM 角色。此步骤在 IAM 与您的组织的 IdP 之间建立信任关系,将您的 IdP 作为可信实体进行联合身份验证。
为 SAML IdP 创建 IAM 角色
使用 https://console.aws.amazon.com/iam/
打开 IAM 控制台。 -
在导航窗格中,选择 Roles(角色)和 Create role(创建角色)。
-
对于 Role type,选择 SAML 2.0 federation。
-
对于 SAML Provider,选择您创建的 SAML IdP。
重要
请勿选择两个 SAML 2.0 访问方法(只允许编程访问或允许编程访问和 Amazon Web Services 管理控制台访问)中的任何一个。
-
对于 Attribute,选择 SAML:sub_type。
-
对于值,请输入
https://signin.aws.amazon.com/saml
。该值将角色访问权限仅局限于 SAML 用户的流式传输请求,其中包括值为 persistent 的 SAML 主题类型断言。如果 SAML:sub_type 为 persistent,则在来自特定用户的所有 SAML 请求中,您的 IdP 会为 NameID 元素发送相同的唯一值。有关 SAML: sub_type 断言的更多信息,请参阅使用基于 SAML 的联合身份验证进行 API 访问中的 “在基于 SAML 的联合身份中唯一标识用户” 部分。 AWS注意
尽管
https://signin.aws.amazon.com/saml
终端节点高度可用,但它仅托管在 us-east-1 区域。 AWS为了防止在某个区域终端节点的可用性受到影响的情况下出现服务中断,请使用区域终端节点并设置其他 SAML 登录终端节点以进行故障转移。有关更多信息,请参阅如何使用区域 SAML 终端节点进行故障转移。 -
检查您的 SAML 2.0 信任信息,确认正确的可信实体和条件,然后选择 Next: Permissions。
-
在 Attach permissions policies (附加权限策略) 页面上,选择 Next: Tags (下一步:标签)。
(可选)为要添加的每个标签输入键和值。有关更多信息,请参阅标记 IAM 用户和角色。
完成此操作后,选择 Next: Review (下一步:审核)。稍后您将为此角色创建并嵌入内联策略。
-
对于角色名称,输入有助于标识此角色作用的名称。由于多个实体可能引用该角色,因此,角色创建完毕后,您将无法编辑角色名称。
-
(可选)对于角色描述,输入新角色的描述。
-
检查角色详细信息,然后选择 Create role。
-
(可选)如果您计划使用第三方 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" } } } ] }将
IDENTITY-PROVIDER
替换为在步骤 1 中创建的 SAML IdP 的名称。然后选择更新信任策略。
步骤 3:为 IAM 角色嵌入内联策略
接下来为您创建的角色嵌入内联 IAM 策略。嵌入内联策略时,策略中的权限不能意外分配给错误的主体实体。内联策略为联合用户提供访问您创建的 AppStream 2.0 堆栈的权限。
在您创建的 IAM 角色的详细信息中,选择权限选项卡,然后选择添加内联策略。“创建策略”向导将启动。
在 Create policy (创建策略) 中,选择 JSON 选项卡。
-
将以下 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}" } } } ] }REGION-CODE
替换为您的 AppStream 2.0 堆栈所在的 AWS 区域。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
(可选)如果您计划使用的基于属性的应用程序授权将第三方 SAML 2.0 身份提供商与 SAML 2.0 多栈应用程序目录结合使用,则您的 IAM 角色内联策略中的资源必须是
"Resource": "arn:aws:appstream:
,以允许应用程序授权控制对堆栈的流式访问权限。要对堆栈资源实施额外保护,可以在策略中添加显式拒绝。有关更多信息,请参阅使用第三方 SAML 2.0 身份提供商的基于属性的应用程序授权和策略评估逻辑。REGION-CODE
:ACCOUNT-ID-WITHOUT-HYPHENS
:stack/*"完成后,选择 Review policy (审核策略)。策略验证程序将报告任何语法错误。
步骤 4:配置基于 SAML 的 IdP
接下来,根据您的基于 SAML 的 IdP,您可能需要手动更新您的 IdP,使其 AWS 成为值得信赖的服务提供商,方法是将文件上传到您的 IdP(位saml-metadata.xml
于 saml-metadata.xml)到您的 IdP。https://signin.aws.amazon.com/static/
如果您的 IdP 中尚未配置此更新,请查看您的 IdP 提供的文档,了解有关如何更新元数据的信息。一些提供商为您提供了键入 URL 并由 IdP 获取并安装该文件的选项。另一些提供商则要求您从该 URL 处下载该文件,然后将其作为本地文件提供。
步骤 5:为 SAML 身份验证响应创建断言
接下来,您可能需要在其身份验证响应中将 IdP 发送到的信息配置 AWS 为 SAML 属性。根据您的 IdP,此信息可能已经预先配置好。如果是这样,请跳过此步骤并继续执行步骤 6,
如果您的 IdP 中尚未配置此信息,请提供以下内容:
-
SAML 主题 NameID – 登录用户的唯一标识符。
注意
对于包含已加入域的队列的堆栈,必须以 “”(使用 s Name)或
“” 的格式提供用户的 nameID 值。AMAccountdomain
\usernameusername@domain.com
userPrincipalName如果您使用的是AMAccount名称格式,则可以使用 NetBIOS 名称或完全限定域名 (FQDN) 来指定。
对于 Active Directory 单向信任方案,必须使用 s AMAccount 名称格式。有关更多信息,请参阅 在 AppStream 2.0 中使用活动目录。domain
-
SAML 主题类型(值设为
persistent
)– 将值设为persistent
可确保在来自特定用户的所有 SAML 请求中,您的 IdP 会为NameID
元素发送相同的唯一值。请确保您的 IAM 策略包含一个条件,仅允许 SAML sub_type 设置为persistent
的 SAML 请求(如步骤 2:创建 SAML 2.0 联合身份验证 IAM 角色中所述)。 -
Attribute
Name
属性设置为 “ https://aws.amazon.com/SAML/属性/角色” 的元素 — 此元素包含一个或多个元素,这些AttributeValue
元素列出了您的 IDP 将用户映射到的 IAM 角色和 SAML IdP。角色和 IdP 以逗号分隔的一对指定。 ARNs -
Attribute
Name
属性设置为 A https://aws.amazon.com/SAML/ ttributes/ 的元素 RoleSessionName — 此元素包含一个AttributeValue
元素,该元素为为 SSO 颁发的 AWS 临时证书提供标识符。AttributeValue
元素中的值长度必须介于 2 到 64 个字符之间,只能包含字母数字字符、下划线和以下字符:+(加号)、=(等号)、,(逗号)、.(句点)、@(at 符)和 -(连字符)。它不能含有空格。该值通常为用户 ID (bobsmith) 或电子邮件地址 (bobsmith@example.com)。该值不应包含空格,如用户的显示名称 (Bob Smith)。 -
Attribute
Name
属性设置为 A https://aws.amazon.com/SAML/ ttributes/PrincipalTag:SessionContext(可选)的元素 — 此元素包含一个AttributeValue
元素,该元素提供的参数可用于将会话上下文参数传递给您的流媒体应用程序。有关更多信息,请参阅 亚马逊 AppStream 2.0 中的会话背景。 -
Attribute
Name
属性设置为 A https://aws.amazon.com/SAML/ ttributes/PrincipalTag:ObjectSid(可选)的元素 — 此元素包含一个为登录用户提供 Active Directory 安全标识符 (SID) 的AttributeValue
元素。此参数与基于证书的身份验证一起使用,以启用到 Active Directory 用户的强映射。 -
Attribute
Name
属性设置为 At https://aws.amazon.com/SAML/ tributes/: DomainPrincipalTag(可选)的元素 — 此元素包含一个为登录用户提供 Active Directory DNS 完全限定域名 (FQDN) 的元素AttributeValue
。当用户的 Active DirectoryuserPrincipalName
包含备用后缀时,此参数用于基于证书的身份验证。必须以domain.com
格式提供该值,包括所有子域名。 -
Attribute
SessionDuration
属性设置为 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
请根据以下信息构造您的中继状态 URL:您的 Amazon Web Services 账户 ID、堆栈名以及与堆栈所在区域关联的中继状态端点。
(可选)可以指定您希望自动启动的应用程序的名称。要查找应用程序名称,请在 AppStream 2.0 控制台中选择图像,选择 “应用程序” 选项卡,并记下 “应用程序名称” 列中显示的名称。或者,如果您尚未创建映像,请连接到已安装应用程序的映像生成器,然后打开 Image Assistant。应用程序名称显示在 Add Apps (添加新应用程序) 选项卡中。
如果您的实例集启用了桌面流视图,您也可以选择直接启动到操作系统桌面。为此,请在中继状态 URL 的末尾、&app=
后面指定 Desktop
。
使用由身份提供商 (IdP) 启动的流程,在系统默认浏览器中,在用户登录 IdP 并从 IdP 用户门户中选择 2.0 AppStream 应用程序后,他们将被重定向到系统默认浏览器中的 AppStream 2.0 登录页面,其中包含以下选项:
-
继续使用浏览器
-
打开 AppStream 2.0 客户端
在该页面上,用户可以选择在浏览器中启动会话,也可以选择使用 AppStream 2.0 客户端应用程序启动会话。此外,您还可以指定应为 SAML 2.0 联合身份验证使用哪个客户端。为此,请在中继状态 URL 的末尾、&client=
后面指定 native
或 web
。当参数出现在中继状态 URL 中时,相应的会话将自动在指定的客户端中启动,用户无需做出选择。
注意
仅当您使用新的中继状态区域端点(见下表 1)来构造中继状态 URL,并使用 AppStream 2.0 客户端版本 1.1.1300 及更高版本时,此功能才可用。此外,用户应始终使用其系统默认浏览器登录 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 中的中继状态端点与 AppStream 2.0 网络浏览器访问(版本 2) 和 Windows 客户端应用程序版本 1.1.1300 及更高版本兼容。如果您使用的是较旧版本的 Windows 客户端,则应使用表 2 中列出的旧中继状态端点来配置您 SAML 2.0 联合身份验证。如果您希望用户使用符合 FIPS 标准的连接进行流式传输,则必须使用符合 FIPS 标准的端点。有关 FIPS 端点的更多信息,请参阅 使用 FIPS 端点保护传输中的数据。
区域 | 中继状态端点 |
---|---|
美国东部(弗吉尼亚州北部) |
(FIPS) |
美国东部(俄亥俄州) | https://appstream2.euc-sso.us-east-2.aws.amazon.com/saml |
美国西部(俄勒冈州) |
(FIPS) |
亚太地区(孟买) | 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 (美国东部) |
(FIPS) 注意有关在 AWS GovCloud (US) 区域中使用 AppStream 2.0 的更多信息,请参阅AWS GovCloud (US) 用户指南中的 Amazon AppStream 2.0。 |
AWS GovCloud (美国西部) |
(FIPS) 注意有关在 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 会话的连接。
区域 | 中继状态端点 |
---|---|
美国东部(弗吉尼亚州北部) |
(FIPS) |
美国东部(俄亥俄州) | https://appstream2.us-east-2.aws.amazon.com/saml |
美国西部(俄勒冈州) |
(FIPS) |
亚太地区(孟买) | 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 (美国东部) |
(FIPS) 注意有关在 AWS GovCloud (US) 区域中使用 AppStream 2.0 的更多信息,请参阅AWS GovCloud (US) 用户指南中的 Amazon AppStream 2.0。 |
AWS GovCloud (美国西部) |
(FIPS) 注意有关在 AWS GovCloud (US) 区域中使用 AppStream 2.0 的更多信息,请参阅AWS GovCloud (US) 用户指南中的 Amazon AppStream 2.0。 |
南美洲(圣保罗) | https://appstream2.sa-east-1.aws.amazon.com/saml |
下表 3 列出了可用于构造中继状态 URL 的所有可用参数。
参数 | 必需 | 格式 | 支持 |
---|---|---|---|
accountId | 必需 | 12 个字符 AWS 账户 的身份证 | 表 1 和表 2 中的新旧端点 |
堆栈 | 可选 | 堆栈名称 | 表 1 和表 2 中的新旧端点 |
应用程序 | 可选 | 应用程序名称或“桌面” | 表 1 和表 2 中的新旧端点 |
客户端 | 可选 | “原生”或“ Web” | 仅表 1 中的新端点 |