设置 SAML
要允许用户使用其现有的凭证登录到 AppStream 2.0 并启动流应用程序,您可以使用 SAML 2.0 设置身份联合验证。要执行此操作,请使用 IAM 角色和一个中继状态 URL 配置符合 SAML 2.0 标准的身份提供商(IdP),并且让 AWS 允许您的联合身份用户访问 AppStream 2.0 堆栈。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 管理控制台、AWS CLI 或 AppStream 2.0 API 创建 AppStream 2.0 堆栈。有关更多信息,请参阅 创建 Amazon AppStream 2.0 实例集和堆栈。
步骤 1:在 AWS IAM 中创建 SAML 身份提供商
首先,在 AWS IAM 中创建 SAML IdP。该 IdP 通过组织中的 IdP 软件生成的元数据文档,定义了组织中 IdP 与 AWS 之间的信任关系。有关更多信息,请参阅《IAM 用户指南》中的创建和管理 SAML 身份提供商(Amazon Web Services 管理控制台)。有关在 AWS GovCloud (US)区域使用 SAML IdP 的更多信息,请参阅《AWS GovCloud (US)用户指南》中的 AWS 身份和访问权限管理。
步骤 2:创建 SAML 2.0 联合身份验证 IAM 角色
接下来创建 SAML 2.0 联合身份验证 IAM 角色。此步骤在 IAM 与您的组织的 IdP 之间建立信任关系,将您的 IdP 作为可信实体进行联合身份验证。
为 SAML IdP 创建 IAM 角色
通过以下网址打开 IAM 控制台:https://console.aws.amazon.com/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 的联合身份验证来对 AWS 进行 API 访问中的唯一标识基于 SAML 的联合中的用户。注意
尽管
https://signin.aws.amazon.com/saml端点高度可用,但它仅托管在 AWS 的 us-east-1 区域。为了防止某个区域端点的可用性受到影响时(罕见但可能发生)出现服务中断,请使用区域端点并设置其他 SAML 登录端点以实现失效转移。有关更多信息,请参阅 How to use regional SAML endpoints for failover。 -
检查您的 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 权限,如下所示:
将
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 用户提供权限,以便与您创建的堆栈上的流式传输会话进行连接。将
REGION-CODE替换为您的 AppStream 2.0 堆栈所在的 AWS 区域。用堆栈名称替换STACK-NAME。STACK-NAME区分大小写,并且其大小写和拼写必须与 AppStream 2.0 管理控制台堆栈控制面板中显示的堆栈名称完全匹配。对于 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 成为受信任的服务提供商,方法是将 saml-metadata.xml 文件(位于 https://signin.aws.amazon.com/static/saml-metadata.xml
如果您的 IdP 中尚未配置此更新,请查看您的 IdP 提供的文档,了解有关如何更新元数据的信息。一些提供商为您提供了键入 URL 并由 IdP 获取并安装该文件的选项。另一些提供商则要求您从该 URL 处下载该文件,然后将其作为本地文件提供。
步骤 5:为 SAML 身份验证响应创建断言
接下来,您可能需要配置一些信息,IdP 会在其身份验证响应中将这些信息作为 SAML 属性发送给 AWS。根据您的 IdP,此信息可能已经预先配置好。如果是这样,请跳过此步骤并继续执行步骤 6,
如果您的 IdP 中尚未配置此信息,请提供以下内容:
-
SAML 主题 NameID – 登录用户的唯一标识符。
注意
对于包含已加入域的实例集的堆栈,必须以“
”格式(使用 sAMAccountName)或“domain\usernameusername@domain.com”格式(使用 userPrincipalName)提供用户的 NameID 值。如果您要使用 sAMAccountName 格式,则可以使用 NetBIOS 名称或完全限定域名 (FQDN) 指定。Active Directory 单向信任方案需要 sAMAccountName 格式。有关更多信息,请参阅 将 Active Directory 与 AppStream 2.0 结合使用。domain -
SAML 主题类型(值设为
persistent)– 将值设为persistent可确保在来自特定用户的所有 SAML 请求中,您的 IdP 会为NameID元素发送相同的唯一值。请确保您的 IAM 策略包含一个条件,仅允许 SAML sub_type 设置为persistent的 SAML 请求(如步骤 2:创建 SAML 2.0 联合身份验证 IAM 角色中所述)。 -
Name属性设为 https://aws.amazon.com/SAML/Attributes/Role 的Attribute元素 – 此元素中包含一个或多个AttributeValue元素,列出您的 IdP 将用户映射到哪个 IAM 角色和 SAML IdP。角色和 IdP 指定为逗号分隔的 ARN 对。 -
Name属性设置为 https://aws.amazon.com/SAML/Attributes/RoleSessionName 的Attribute元素 – 此元素包含一个AttributeValue元素,可为针对 SSO 颁发的 AWS 临时凭证提供标识符。AttributeValue元素中的值长度必须介于 2 到 64 个字符之间,只能包含字母数字字符、下划线和以下字符:+(加号)、=(等号)、,(逗号)、.(句点)、@(at 符)和 -(连字符)。它不能含有空格。该值通常为用户 ID (bobsmith) 或电子邮件地址 (bobsmith@example.com)。该值不应包含空格,如用户的显示名称 (Bob Smith)。 -
Name属性设置为 https://aws.amazon.com/SAML/Attributes/PrincipalTag:SessionContext 的Attribute元素(可选)– 此元素包含一个AttributeValue元素,其提供的参数可用于将会话上下文参数传递给您的流应用程序。有关更多信息,请参阅 Amazon AppStream 2.0 中的会话上下文。 -
Name属性设置为 https://aws.amazon.com/SAML/Attributes/PrincipalTag:ObjectSid 的Attribute元素(可选)– 此元素包含一个AttributeValue元素,为登录用户提供 Active Directory 安全标识符(SID)。此参数与基于证书的身份验证一起使用,以启用到 Active Directory 用户的强映射。 -
Name属性设置为 https://aws.amazon.com/SAML/Attributes/PrincipalTag:Domain 的Attribute元素(可选)– 此元素包含一个AttributeValue元素,为登录用户提供 Active Directory DNS 完全限定域名(FQDN)。当用户的 Active DirectoryuserPrincipalName包含备用后缀时,此参数用于基于证书的身份验证。必须以domain.com格式提供该值,包括所有子域名。 -
SessionDuration属性设置为 https://aws.amazon.com/SAML/Attributes/SessionDuration 的Attribute元素(可选)– 此元素包含一个AttributeValue元素,指定用户在联合流式传输会话中保持活动状态的最长时间,此后将需要进行重新验证。默认值为 60 分钟(3600 秒)。有关更多信息,请参阅为身份验证响应配置 SAML 断言中的 SessionDuration 属性设为 https://aws.amazon.com/SAML/Attributes/SessionDuration 的可选 Attribute 元素。注意
虽然
SessionDuration是一个可选属性,但建议您将该属性包含在 SAML 响应中。如果您未指定此属性,则会话持续时间将设置为默认值 60 分钟。如果您的用户使用 AppStream 2.0 原生客户端或使用新体验中的 Web 浏览器访问 AppStream 2.0 中的流应用程序,则用户的会话将在会话持续时间结束后断开连接。如果您的用户使用旧/经典体验中的 Web 浏览器访问 AppStream 2.0 中的流应用程序,则在用户的会话持续时间结束并刷新浏览器页面后,会话将断开连接。
有关如何配置这些元素的更多信息,请参阅《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 用户门户选择 AppStream 2.0 应用程序后,将被重定向到系统默认浏览器中的 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 Web 浏览器访问(版本 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 |
| 欧洲地区(巴黎) | https://appstream2.euc-sso.eu-west-3.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 账户 ID | 表 1 和表 2 中的新旧端点 |
| 堆栈 | 可选 | 堆栈名称 | 表 1 和表 2 中的新旧端点 |
| 应用程序 | 可选 | 应用程序名称或“桌面” | 表 1 和表 2 中的新旧端点 |
| 客户端 | 可选 | “原生”或“ Web” | 仅表 1 中的新端点 |