本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
设置 SAML
要使用户能够使用其现有证书登录 AppStream 2.0 并启动流媒体应用程序,您可以使用 SAML 2.0 设置身份联合。为此,您可使用 IAM 角色和中继状态 URL 配置符合 SAML 2.0 标准的身份提供程序 (IdP) 和AWS以允许您的联合身份用户访问 2.0 标准的联合身份用户访问 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 管理控制台或 AppStream 2.0 API 创建 AppStream 2.0 堆栈。AWS CLI有关更多信息,请参阅创建 AppStream 2.0 舰队和堆栈:
第 1 步:在AWS IAM 中创建 SAML 身份提供商
首先,在AWS IAM 中创建 SAML IdP。此 IdP 使用组织中 IdP 软件生成的元数据文档,定义组织中 IdP 与之间的AWS信任关系。有关更多信息,请参阅 IA M 用户指南中的创建和管理 SAML 身份提供商(Amazon Web Services 管理控制台)。有关 IdPs 在AWS GovCloud (美国西部)使用 SAML 的信息,请参阅《AWS GovCloud (US)用户指南》中的 “Ident AWSity and Access Management”。
第 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 管理控制台访问)。
-
对于属性,选择 saml: aud。
-
对于 Value(值),输入
https://signin.aws.amazon.com/saml
。此值限制角色访问包含值为持久的 SAML 主题类型断言的 SAML 用户流请求。如果 SAML: sub_type 为 persistent,您的 IdP 将发送来自特定用户的所有 SAML 请求中的 NameID 元素的相同唯一值。有关 saml: sub_Type 断言的更多信息,请参阅使用基于 SAML 的联合身份验证访问 AWS 的 “在基于 SAML 的联邦中唯一识别用户” 部分。 -
检查您的 SAML 2.0 信任信息,确认正确的可信实体和条件,然后选择 Next: Permissions。
-
在 Attach permissions policies (附加权限策略) 页面上,选择 Next: Tags (下一步:标签)。
(可选)为要添加的每个标签输入一个表,键和值。有关更多信息,请参阅标记 IAM 用户和角色。
完成此操作后,选择 Next: Review (下一步:审核)。稍后,您将为该角色创建并嵌入内联策略。
-
对于 Role name(角色名称),输入用于标识此角色作用的名称。由于多个实体可能会引用此角色,角色创建完毕后将无法编辑角色名称。
-
(可选)对于 Role description (角色描述),输入新角色的描述。
-
检查角色详细信息,然后选择 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" } } } ] }将 ID
ENTITY-
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-CO
DE 替换为 AppStream 2.0 堆栈存在的AWS区域。用堆栈名称替换STACK-NAME
。STACK-NAM
E 区分大小写,并且必须与 AppStream 2.0 管理控制台的 Stac ks 仪表板中显示的堆栈名称完全匹配。对于AWS GovCloud (美国西部)中的资源,使用 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,将saml-metadata.xml
文件上传到 IdP,使其AWS成为可信的服务提供商。
如果您的 IdP 中尚未配置此更新,请查看您的 IdP 提供的文档,了解有关如何更新元数据的信息。一些提供商为您提供了键入 URL 并由 IdP 获取并安装该文件的选项。另一些提供商则要求您从该 URL 处下载该文件,然后将其作为本地文件提供。
步骤 5:为 SAML 身份验证响应创建断言
接下来,您可能需要在身份验证响应中将 IdP 发送到 AWS 的信息配置为 SAML 属性。根据您的 IdP,此信息可能已经预先配置了。如果是这样,请跳过此步骤并继续执行第 6 步
如果您的 IdP 中尚未配置此信息,请提供以下内容:
-
SAML 主题 NameID – 登录用户的唯一标识符。
注意 对于具有加入域的队列的堆栈,必须使用 saM 以 “” 的格式提供用户的 NameID 值,AccountName 或使用 “
” 的格式提供用户的 NameID 值 userPrincipalName。domain
\usernameusername@domain.com
如果您使用的是 SAMAccountName 格式,则可以使用 NetBIOS 名称或完全限定域名 (FQDN) 指定。
有关更多信息,请参阅在 AppStream 2.0 中使用活动目录:domain
-
SAML 主题类型(值设置为
persistent
)-将值设置为persistent
可确保您的 IdP 在来自特定用户的所有 SAML 请求中为NameID
元素发送相同的唯一值。确保您的 IAM 策略包含一个条件,即仅允许 SAML sub_type 设置为的 SAML 请求persistent
,如中所述第 2 步:创建 SAML 2.0 联合身份验证 IAM 角色。 -
Attribute
Name
属性设置为 https://aws.amazon.com/SAML/Attributes/Role 的元素 — 此元素包含一个或多个元AttributeValue
素,这些元素可列出用户通过 IdP 映射到的 IAM 角色和 SAML IdP。角色和 IdP 指定为逗号分隔的 ARN 对。 -
Attribute
Name
属性设置为 https://aws.amazon.com/SAML/Attributes/ 的元素RoleSessionName — 此元素包含一个为为 SSO 颁发的 AWS 临时凭证提供标识符的AttributeValue
元素。AttributeValue
元素中的值长度必须介于 2 到 64 个字符之间,只能包含字母数字字符、下划线和以下字符:+(加号)、=(等号)、,(逗号)、.(句点)、@(at 符)和 -(连字符)。它不能含有空格。该值通常为用户 ID (bobsmith) 或电子邮件地址 (bobsmith@example.com)。该值不应包含空格,如用户的显示名称 (Bob Smith)。 -
Attribute
Name
属性设置为 https://aws.amazon.com/SAML/Attributes/PrincipalTag:SessionContext(可选)的元素 — 此元素包含一个AttributeValue
元素,该元素提供的参数可用于将会话上下文参数传递给您的流媒体应用程序。有关更多信息,请参阅会话上下文: -
Attribute
Name
属性设置为 https://aws.amazon.com/SAML/Attributes/PrincipalTag:ObjectSid(可选)的元素 — 此元素包含一个为正在登录的用户提供 Active Directory 安全标识符 (SID) 的AttributeValue
元素。此参数与基于证书的身份验证一起使用,以实现到 Active Directory 用户的强映射。 -
Attribute
SessionDuration
属性设置为 https://aws.amazon.com/SAML/Attributes/ 的元素SessionDuration(可选)— 此元素包含一个AttributeValue
元素,用于指定在需要重新身份验证之前,用户的联合流媒体会话可以保持活动状态的最大时间。默认值为 60 分钟。有关更多信息,请参阅为身份验证响应配置 SAML 断言中的 “将 SessionDuration 属性设置为 https://aws.amazon.com/SAML/Attributes/ 的可选属性元素”SessionDuration 部分。注意 虽然
SessionDuration
是一个可选属性,但我们建议您将该属性包含在 SAML 响应中。如果您未指定此属性,则会话持续时间将设置为默认值 60 分钟。如果您的用户在 AppStream 2.0 版本中使用 2.0 客户端访问其流媒体应用程序,则他们的会话将在会话持续时间到期后断开连接。 AppStream 如果您的用户在 AppStream 2.0 版本中使用 Web 浏览器访问其流媒体应用程序,则在用户的会话持续时间到期并刷新浏览器页面后,他们的会话将断开连接。
有关如何配置这些元素的更多信息,请参阅 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、堆栈名称以及与堆栈所在区域相关的中继状态终端节点来构建您的中继状态网址。
(可选)可以指定您希望自动启动的应用程序的名称。要查找应用程序名称,请在 AppStream 2.0 控制台中选择图像,选择 “应用程序” 选项卡,然后记下 “应用程序名称” 列中显示的名称。或者,如果您尚未创建映像,请连接到已安装应用程序的映像生成器,然后打开 Image Assistant。应用程序名称显示在 Add Apps (添加新应用程序) 选项卡中。
如果你的队列启用了桌面直播视图,你也可以选择直接启动到操作系统桌面。为此,请在中继状态 URL 的Desktop
末尾和之后指定&app=
。
通过使用第三方 SAML 2.0 身份提供商的基于属性的应用程序授权,您可以允许从单个中继状态 URL 访问多个堆栈。从中继状态 URL 中移除堆栈和应用程序(如果有)参数,如下所示:
https://relay-state-region-endpoint
?accountId=aws-account-id-without-hyphens
当用户联合到 AppStream 2.0 应用程序目录时,他们将看到所有堆栈,在这些堆栈中,应用程序权限已将一个或多个应用程序与用户匹配,以获取与您的堆栈所在区域相关的账户 ID 和中继状态端点。当用户选择目录时,应用程序授权将仅显示用户有权访问的应用程序。
有关更多信息,请参阅使用第三方 SAML 2.0 身份提供商的基于属性的应用程序授权:
下表列出了可用 AppStream 2.0 的区域的中继状态终端节点。如果您希望用户使用符合 FIPS 标准的连接进行流式传输,则必须使用符合 FIPS 标准的终端节点。有关 FIPS 终端节点的更多信息,请参阅 使用 FIPS 终端节点保护传输中的数据。
区域 | 中继状态终端节点 |
---|---|
美国东部(弗吉尼亚州北部) |
(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 (美国西部)使用 AppStream 2.0 的更多信息,请参阅《AWS GovCloud (US)用户指南》 AppStream 中的 Amazon 2.0。 |
南美洲(圣保罗) | https://appstream2.sa-east-1.aws.amazon.com/saml |