本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
设置 SAML
要使用户能够使用其现有凭据登录 WorkSpaces 应用程序并启动流式传输应用程序,您可以使用 SAML 2.0 设置联合身份验证。为此,请使用 IAM 角色和中继状态 URL 来配置符合 SAML 2.0 标准的身份提供商 (IdP),并启用 AWS 以允许您的联合用户访问应用程序堆栈。 WorkSpaces IAM 角色向用户授予对堆栈的访问权限。中继状态是在 AWS成功进行身份验证后将用户引导到的堆栈门户。
内容
前提条件
请在配置您的 SAML 2.0 连接之前满足以下先决条件。
-
配置您的 SAML-based IdP 以与之建立信任关系。 AWS
-
在组织的网络中,将您的身份存储配置为与 SAML-based IdP 配合使用。有关配置资源的信息,请参阅 WorkSpaces 与 SAML 2.0 的应用程序集成。
-
使用您的 SAML-based IdP 生成和下载将您的组织描述为 IdP 的联合元数据文档。此签名 XML 文档用于建立信赖方信任关系。将该文件保存您稍后可通过 IAM 控制台访问的位置。
-
-
使用 WorkSpaces 应用程序管理控制台创建 WorkSpaces 应用程序堆栈。您需要使用堆栈名称来创建 IAM 策略和配置 IdP 与 WorkSpaces 应用程序的集成,如本主题后面所述。
您可以使用 WorkSpaces 应用程序管理控制台或 WorkSpaces 应用程序 API 创建 WorkSpaces 应用程序堆栈。 AWS CLI有关更多信息,请参阅 创建 Amazon WorkSpaces 应用程序队列和堆栈。
步骤 1:在中创建 SAML 身份提供商 AWS IAM
首先,在 IAM 中创建一个 SAML IdP AWS 。此 IdP 使用组织中 IdP-to 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 管理控制台访问)中的任何一个。
-
对于属性,选择 SAML:sub_ty pe。
-
对于值,请输入
https://signin.aws.amazon.com/saml。该值将角色访问权限仅局限于 SAML 用户的流式传输请求,其中包括值为 persistent 的 SAML 主题类型断言。如果 SAML:sub _type 是永久性的,则您的 IdP 会在来自特定用户的所有 SAML 请求中为 nameID 元素发送相同的唯一值。有关 SAML:sub _type 断言的更多信息,请参阅使用 SAML-Based 联合身份验证 API 访问中的 “在 SAML-Based 联合身份中唯一标识用户” 部分。 AWS注意
尽管
https://signin.aws.amazon.com/saml终端节点高度可用,但它仅托管在 us-east-1 区域。 AWS为了防止某个区域端点的可用性受到影响时(罕见但可能发生)出现服务中断,请使用区域端点并设置其他 SAML 登录端点以实现失效转移。有关更多信息,请参阅 How to use regional SAML endpoints for failover。 -
检查您的 SAML 2.0 信任信息,确认正确的可信实体和条件,然后选择 Next: Permissions。
-
在 Attach permissions policies (附加权限策略) 页面上,选择 Next: Tags (下一步:标签)。
(可选)为要添加的每个标签输入键和值。有关更多信息,请参阅标记 IAM 用户和角色。
完成此操作后,选择 Next: Review (下一步:审核)。稍后您将为此角色创建并嵌入内联策略。
-
对于角色名称,输入有助于标识此角色作用的名称。由于多个实体可能引用该角色,因此,角色创建完毕后,您将无法编辑角色名称。
-
(可选)对于角色描述,输入新角色的描述。
-
检查角色详细信息,然后选择创建角色。
-
(可选)如果您计划使用第三方 SAML 2.0 身份提供商或基于证书的身份验证来使用会话上下文或基于属性的应用程序授权,则必须将 sts: TagSession 权限添加到新 IAM 角色的信任策略中。有关更多信息,请参阅Attribute-Based 使用 Third-Party SAML 2.0 身份提供商的应用程序授权和在 AWS STS中传递会话标签。
在新 IAM 角色的详细信息中,选择信任关系选项卡,然后选择编辑信任关系。“编辑信任关系”策略编辑器启动。添加 sts: TagSession 权限,如下所示:
将
IDENTITY-PROVIDER替换为在步骤 1 中创建的 SAML IdP 的名称。然后选择更新信任策略。
步骤 3:为 IAM 角色嵌入内联策略
接下来为您创建的角色嵌入内联 IAM 策略。嵌入内联策略时,策略中的权限不能意外分配给错误的主体实体。内联策略为联合用户提供访问您创建的 WorkSpaces 应用程序堆栈的权限。
在您创建的 IAM 角色的详细信息中,选择权限选项卡,然后选择添加内联策略。“创建策略”向导将启动。
在 Create policy (创建策略) 中,选择 JSON 选项卡。
-
将以下 JSON 策略复制并粘贴到 JSON 窗口中。然后,通过输入您的 AWS 区域 代码、账户 ID 和堆栈名称来修改资源。在以下策略中,
"Action": "appstream:Stream"该操作向您的 WorkSpaces 应用程序用户提供在您创建的堆栈上连接到流媒体会话的权限。REGION-CODE替换为 WorkSpaces 应用程序堆栈所在的 AWS 区域。STACK-NAME替换为堆栈的名称。STACK-NAME区分大小写,并且必须与 WorkSpaces 应用程序管理控制台堆栈仪表板中显示的堆栈名称完全匹配大小写和拼写。对于 AWS GovCloud (US) 区域中的资源,请使用以下格式的 ARN:
arn:aws-us-gov:appstream:REGION-CODE:ACCOUNT-ID-WITHOUT-HYPHENS:stack/STACK-NAME (可选)如果您计划使用第三方 SAML 2.0 身份提供商和 SAML 2.0 应用程序目录使用基于属性的 Multi-stack应用程序授权,则您的 IAM 角色内联策略中的资源必须允许应用程序授权控制
"Resource": "arn:aws:appstream:对堆栈的流式访问权限。要对堆栈资源实施额外保护,可以在策略中添加显式拒绝。有关更多信息,请参阅Attribute-Based 使用 Third-Party SAML 2.0 身份提供商的应用程序授权和策略评估逻辑。REGION-CODE:ACCOUNT-ID-WITHOUT-HYPHENS:stack/*"完成后,选择 Review policy (审核策略)。策略验证程序将报告任何语法错误。
第 4 步:配置您的 SAML-Based IdP
接下来,根据您的 SAML-based IdP,您可能需要通过将saml-metadata.xml文件上传到您的 IdP 来手动更新您的 IdP,使其 AWS 成为值得信赖的服务提供商。https://signin.aws.amazon.com/static/saml-metadata.xml
如果您的 IdP 中尚未配置此更新,请查看您的 IdP 提供的文档,了解有关如何更新元数据的信息。一些提供商为您提供了键入 URL 并由 IdP 获取并安装该文件的选项。另一些提供商则要求您从该 URL 处下载该文件,然后将其作为本地文件提供。
步骤 5:为 SAML 身份验证响应创建断言
接下来,您可能需要在其身份验证响应中将 IdP 发送到的信息配置 AWS 为 SAML 属性。根据您的 IdP,此信息可能已经预先配置好。如果是这样,请跳过此步骤并继续执行步骤 6,
如果您的 IdP 中尚未配置此信息,请提供以下内容:
-
SAML 主题 NameID – 登录用户的唯一标识符。
注意
对于包含已加入域的队列的堆栈,必须以 “”(使用 s)或
“”(使用用户)的格式提供用户的 nameID 值。AMAccountNamedomain\usernameusername@domain.comPrincipalName如果您使用的是 s AMAccountName 格式,则可以使用 NetBIOS 名称或完全限定域名 (FQDN) 来指定。对于 Active Directory 单向信任方案,必须使用 s AMAccountName 格式。有关更多信息,请参阅 将活动目录与 WorkSpaces 应用程序配合使用。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 对。 -
AttributeName属性设置为的元素 https://aws.amazon.com/SAML/Attributes/RoleSessionName — 此元素包含一个元素,该AttributeValue元素为为 SSO 颁发的 AWS 临时证书提供标识符。AttributeValue元素中的值长度必须介于 2 到 64 个字符之间,只能包含字母数字字符、下划线和以下字符:+(加号)、=(等号)、,(逗号)、.(句点)、@(at 符)和 -(连字符)。它不能含有空格。该值通常为用户 ID (bobsmith) 或电子邮件地址 (bobsmith@example.com)。该值不应包含空格,如用户的显示名称 (Bob Smith)。 -
AttributeName属性设置为https://aws.amazon.com/SAML/Attributes/PrincipalTag:SessionContext(可选)的元素 — 此元素包含一个AttributeValue元素,该元素提供的参数可用于将会话上下文参数传递给您的流媒体应用程序。有关更多信息,请参阅 Amazon WorkSpaces 应用程序中的会话上下文。 -
AttributeName属性设置为https://aws.amazon.com/SAML/Attributes/PrincipalTag:ObjectSid(可选)的元素 — 此元素包含一个为登录用户提供 Active Directory 安全标识符 (SID) 的AttributeValue元素。此参数与基于证书的身份验证一起使用,以启用到 Active Directory 用户的强映射。 -
AttributeName属性设置为:Domainhttps://aws.amazon.com/SAML/Attributes/PrincipalTag(可选)的元素 — 此元素包含一个为登录用户提供 Active Directory DNS 完全限定域名 (FQDN) 的元素AttributeValue。当用户的 Active DirectoryuserPrincipalName包含备用后缀时,此参数用于基于证书的身份验证。必须以domain.com格式提供该值,包括所有子域名。 -
AttributeSessionDuration属性设置为https://aws.amazon.com/SAML/Attributes/SessionDuration(可选)的元素-此元素包含一个AttributeValue元素,用于指定在要求重新进行身份验证之前,用户的联合流媒体会话可以保持活动状态的最长时间。默认值为 60 分钟(3600 秒)。有关更多信息,请参阅为身份验证响应配置 SAML 断言中的 SessionDuration 属性设置为的可选属性元素https://aws.amazon.com/SAML/Attributes/SessionDuration部分。注意
虽然
SessionDuration是一个可选属性,但建议您将该属性包含在 SAML 响应中。如果您未指定此属性,则会话持续时间将设置为默认值 60 分钟。如果您的用户使用应用程序原生客户端或在 WorkSpaces 新的体验中使用 Web 浏览器访问其 WorkSpaces 应用程序中的流媒体应用程序,则他们的会话将在会话持续时间到期后断开连接。如果您的用户在 old/classic 体验中使用网络浏览器访问其 WorkSpaces 应用程序中的流媒体应用程序,则在用户的会话持续时间到期并刷新浏览器页面后,他们的会话将断开连接。
有关如何配置这些元素的更多信息,请参阅《IAM 用户指南》中的为身份验证响应配置 SAML 断言。有关 IdP 的具体配置要求信息,请参阅您的 IdP 提供的文档。
步骤 6:配置您的联合身份验证的中继状态
最后,使用您的 IdP 将联盟的中继状态配置为指向 WorkSpaces 应用程序堆栈中继状态 URL。成功通过身份验证后 AWS,用户将被定向到 WorkSpaces 应用程序堆栈门户,该门户被定义为 SAML 身份验证响应中的中继状态。
中继状态 URL 的格式如下所示:
https://relay-state-region-endpoint?stack=stackname&accountId=aws-account-id-without-hyphens
请根据以下信息构造您的中继状态 URL:您的 Amazon Web Services 账户 ID、堆栈名以及与堆栈所在区域关联的中继状态端点。
(可选)可以指定您希望自动启动的应用程序的名称。要查找应用程序名称,请在应用程序控制台中选择图像,选择 WorkSpaces 应用程序选项卡,并记下显示在 “应用程序名称” 列中的名称。或者,如果您尚未创建映像,请连接到已安装应用程序的映像生成器,然后打开 Image Assistant。应用程序名称显示在 Add Apps (添加新应用程序) 选项卡中。
如果您的实例集启用了桌面流视图,您也可以选择直接启动到操作系统桌面。为此,请在中继状态 URL 的末尾、&app= 后面指定 Desktop。
使用由身份提供商 (IdP) 启动的流程,在系统默认浏览器中,在用户登录 IdP 并从 IdP 用户门户中选择 WorkSpaces 应用程序后,他们将被重定向到系统默认浏览器中的 WorkSpaces 应用程序登录页面,其中包含以下选项:
-
继续使用浏览器
-
打开 WorkSpaces 应用程序客户端
在该页面上,用户可以选择在浏览器中启动会话,也可以选择使用 WorkSpaces 应用程序客户端应用程序启动会话。此外,您还可以指定应为 SAML 2.0 联合身份验证使用哪个客户端。为此,请在中继状态 URL 的末尾、&client= 后面指定 native 或 web。当参数出现在中继状态 URL 中时,相应的会话将自动在指定的客户端中启动,用户无需做出选择。
注意
仅当您使用新的中继状态区域端点(见下表 1)来构造中继状态 URL,并使用 WorkSpaces 应用程序客户端版本 1.1.1300 及更高版本时,此功能才可用。此外,用户应始终使用其系统默认浏览器登录 IdP。如果他们使用非默认浏览器,则该功能将无法使用。
借助使用第三方 SAML 2.0 身份提供商的基于属性的应用程序授权,您可以允许从单个中继状态 URL 访问多个堆栈。从中继状态 URL 中移除堆栈和应用程序(如果存在)参数,如下所示:
https://relay-state-region-endpoint?accountId=aws-account-id-without-hyphens
当用户联合到 Applications WorkSpaces 应用程序目录时,他们将看到应用程序授权已将一个或多个应用程序与用户匹配的所有堆栈,这些堆栈的账户 ID 和中继状态端点与您的堆栈所在区域关联的中继状态端点。当用户选择目录时,应用程序授权将仅显示该用户有权使用的应用程序。
注意
用户无法同时从多个堆栈进行流式传输。
有关更多信息,请参阅 Attribute-Based 使用 Third-Party SAML 2.0 身份提供商的应用程序授权。
表 1: WorkSpaces 应用程序中继状态区域终端节点(推荐)
下表 1 列出了 WorkSpaces 应用程序可用区域的中继状态端点。表 1 中的中继状态端点与 WorkSpaces 应用程序 Web 浏览器访问(版本 2) 和 Windows 客户端应用程序版本 1.1.1300 及更高版本兼容。如果您使用的是较旧版本的 Windows 客户端,则应使用表 2 中列出的旧中继状态端点来配置您 SAML 2.0 联合身份验证。如果您希望用户使用 FIPS-compliant 连接进行流式传输,则必须使用 FIPS-compliant 终端节点。有关 FIPS 端点的更多信息,请参阅 使用 FIPS 端点保护传输中的数据。
| Region | 中继状态端点 |
|---|---|
| 美国东部(弗吉尼亚州北部) |
(FIPS) |
| 美国东部(俄亥俄州) | https://appstream2.euc-sso.us-east-2.aws.amazon.com/saml |
| 美国西部(俄勒冈州) |
(FIPS) |
| 亚太地区(马来西亚) | https://appstream2.euc-sso.ap-southeast-5.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 |
| 欧洲地区(米兰) | https://appstream2.euc-sso.eu-south-1.aws.amazon.com/saml |
| 欧洲地区(巴黎) | https://appstream2.euc-sso.eu-west-3.aws.amazon.com/saml |
| 欧洲(西班牙) | https://appstream2.euc-sso.eu-south-2.aws.amazon.com/saml |
| AWS GovCloud (US-East) |
(FIPS) 注意有关在 AWS GovCloud (US) 区域中使用 WorkSpaces 应用程序的更多信息,请参阅AWS GovCloud (US) 用户指南中的 Amazon WorkSpaces 应用程序。 |
| AWS GovCloud (US-West) |
(FIPS) 注意有关在 AWS GovCloud (US) 区域中使用 WorkSpaces 应用程序的更多信息,请参阅AWS GovCloud (US) 用户指南中的 Amazon WorkSpaces 应用程序。 |
| 南美洲(圣保罗) | https://appstream2.euc-sso.sa-east-1.aws.amazon.com/saml |
| 以色列(特拉维夫) | https://appstream2.euc-sso.il-central-1.aws.amazon.com/saml |
表 2:旧 WorkSpaces 应用程序中继状态区域终端节点(不推荐)
下表 2 列出了仍然可用的旧中继状态端点。但是,建议您使用表 1 中列出的新中继状态端点来配置 SAML 2.0 联合身份验证。特别是,使用新的中继状态端点,您可以让您的用户从 IdP-initiated 流式传输会话中启动 WorkSpaces 应用程序客户端应用程序(版本 1.1.1300 及更高版本)。表 1 中的新中继状态端点还允许用户在同一 Web 浏览器的不同选项卡中登录其他 AWS 应用程序,而不会影响正在进行的 WorkSpaces 应用程序流式传输会话。表 2 中的旧中继状态端点不支持此功能。有关更多信息,请参阅 我的 WorkSpaces 应用程序客户端用户每 60 分钟就会断开与 WorkSpaces 应用程序会话的连接。。
| Region | 中继状态端点 |
|---|---|
| 美国东部(弗吉尼亚州北部) |
(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 (US-East) |
(FIPS) 注意有关在 AWS GovCloud (US) 区域中使用 WorkSpaces 应用程序的更多信息,请参阅AWS GovCloud (US) 用户指南中的 Amazon WorkSpaces 应用程序。 |
| AWS GovCloud (US-West) |
(FIPS) 注意有关在 AWS GovCloud (US) 区域中使用 WorkSpaces 应用程序的更多信息,请参阅AWS GovCloud (US) 用户指南中的 Amazon WorkSpaces 应用程序。 |
| 南美洲(圣保罗) | https://appstream2.sa-east-1.aws.amazon.com/saml |
表 3:中继状态 URL 参数
下表 3 列出了可用于构造中继状态 URL 的所有可用参数。
| 参数 | 必填 | Format | 支持 |
|---|---|---|---|
| accountId | 必填 | 12 个字符 AWS 账户 的身份证 | 表 1 和表 2 中的新旧端点 |
| 堆栈 | 可选 | 堆栈名称 | 表 1 和表 2 中的新旧端点 |
| 应用程序 | 可选 | 应用程序名称或“桌面” | 表 1 和表 2 中的新旧端点 |
| 客户端 | 可选 | “原生”或“ Web” | 仅表 1 中的新端点 |