为身份验证响应配置 SAML 断言
在您的组织中,在验证用户的身份后,外部身份提供商 (IdP) 将向 AWS SAML 终端节点 (https://signin.amazonaws.cn/saml
) 发送身份验证响应。此响应是一个包含 SAML 令牌的 POST 请求,该令牌遵循适用于 SAML 2.0 的 HTTP POST 绑定标准,其中包含以下元素或断言。您可在与 SAML 兼容的 IdP 中配置这些断言。请参考 IdP 文档,以了解有关如何输入这些声明的说明。
当 IdP 将包含断言的响应发送到 AWS 时,许多传入断言将映射到 AWS 上下文密钥。可以在 IAM 策略中使用 Condition
元素检查这些上下文密钥。可用映射的列表如将 SAML 属性映射到 AWS 信任策略上下文键部分中所示。
Subject
和NameID
-
以下摘录显示了一个示例。用您自己的值替代标记值。同时包含
SubjectConfirmation
和SubjectConfirmationData
属性的NotOnOrAfter
元素必须恰好具有一个Recipient
元素。这些属性包含的值必须与 AWS 终端节点 (https://signin.amazonaws.cn/saml
) 匹配,如以下示例中所示。有关支持用于单一登录交互的名称标识符格式的信息,请参阅 Oracle Sun OpenSSO Enterprise 管理参考。<Subject> <NameID Format="urn:oasis:names:tc:SAML:2.0:nameid-format:persistent">
_cbb88bf52c2510eabe00c1642d4643f41430fe25e3
</NameID> <SubjectConfirmation Method="urn:oasis:names:tc:SAML:2.0:cm:bearer"> <SubjectConfirmationData NotOnOrAfter="2013-11-05T02:06:42.876Z
" Recipient="https://signin.&home-domain;/saml"/> </SubjectConfirmation> </Subject> AudienceRestriction
和Audience
-
出于安全原因,AWS 应作为受众包含在您的 IdP 发送到 AWS 的 SAML 断言中。对于
Audience
元素的值,请指定https://signin.amazonaws.cn/saml
或urn:amazon:webservices
。以下 SAML 断言中的示例 XML 代码段展示了 IdP 如何指定此密钥。包括适用于您的使用案例的示例。<Conditions> <AudienceRestriction> <Audience>https://signin.&home-domain;/saml</Audience> </AudienceRestriction> </Conditions>
<Conditions> <AudienceRestriction> <Audience>urn:amazon:webservices</Audience> </AudienceRestriction> </Conditions>
重要
来自 IdP 的 SAML 断言中的 SAML
AudienceRestriction
值不 会映射到您可在 IAM 策略中测试的saml:aud
上下文密钥。相反,saml:aud
上下文密钥来自 SAML recipient 属性,因为等同于 OIDC 受众字段(例如accounts.google.com:aud
)的 SAML。 Attribute
属性设置为Name
的http://www.amazonaws.cn/SAML/Attributes/Role
元素-
此元素包含一个或多个
AttributeValue
元素,这些元素可列出用户通过 IdP 映射到的 IAM 身份提供商和角色。IAM 角色和 IAM 身份提供商被指定为以逗号分隔的 ARN 对,所采用的格式与传递到 AssumeRoleWithSAML 的RoleArn
和PrincipalArn
参数的格式相同。此元素必须包含至少一个角色-提供商对(即至少一个AttributeValue
元素),并且可以包含多个角色-提供商对。如果该元素包含多个角色-提供商对,则用户将需要选择其使用 WebSSO 登录 AWS 管理控制台时要担任的角色。重要
Name
标签中Attribute
属性的值区分大小写。必须将其一字不差地设置为http://www.amazonaws.cn/SAML/Attributes/Role
。<Attribute Name="http://www.amazonaws.cn/SAML/Attributes/Role"> <AttributeValue>arn:aws-cn:iam::
account-number
:role/role-name1
,arn:aws-cn:iam::account-number
:saml-provider/provider-name
</AttributeValue> <AttributeValue>arn:aws-cn:iam::account-number
:role/role-name2
,arn:aws-cn:iam::account-number
:saml-provider/provider-name
</AttributeValue> <AttributeValue>arn:aws-cn:iam::account-number
:role/role-name3
,arn:aws-cn:iam::account-number
:saml-provider/provider-name
</AttributeValue> </Attribute> Attribute
属性设置为Name
的http://www.amazonaws.cn/SAML/Attributes/RoleSessionName
元素-
该元素包含一个为 AWS 临时凭证提供标识符的
AttributeValue
元素,这些凭证是针对 SSO 颁发的。该元素用于在 AWS 管理控制台中显示用户信息。AttributeValue
元素中的值长度必须介于 2 到 64 个字符之间,只能包含字母数字字符、下划线和以下字符:+(加号)、=(等号)、,(逗号)、.(句点)、@(at 符号)和 -(连字符)。它不能含有空格。该值通常是用户 ID (bobsmith
) 或电子邮件地址 (bobsmith@example.com
)。该值不应包含空格,如用户的显示名称 (Bob Smith
)。重要
Name
标签中Attribute
属性的值区分大小写。必须将其一字不差地设置为http://www.amazonaws.cn/SAML/Attributes/RoleSessionName
。<Attribute Name="http://www.amazonaws.cn/SAML/Attributes/RoleSessionName"> <AttributeValue>
user-id-name
</AttributeValue> </Attribute> - 一个可选
Attribute
元素,其Name
属性设置为http://www.amazonaws.cn/SAML/Attributes/SessionDuration
-
该元素包含一个
AttributeValue
元素,它指定用户在必须请求新的临时凭证之前可访问 AWS 管理控制台的时间长度。该值是一个表示会话秒数的整数。该值的范围是 900 秒 (15 分钟) 到 43200 秒 (12 小时)。如果该属性不存在,则凭证持续时间为 1 小时 (DurationSeconds
API 的AssumeRoleWithSAML
参数的默认值)。要使用该属性,您必须配置 SAML 提供商,以通过控制台登录 Web 终端节点 (
https://signin.amazonaws.cn/saml
) 提供对 AWS 管理控制台的单一登录访问。请注意,该属性仅将会话扩展到 AWS 管理控制台。它不能延长其他凭证的有效期。不过,如果它在AssumeRoleWithSAML
API 调用中存在,则可用于将调用返回的凭证的有效期缩短 至一个小于默认值(60 分钟)的值。另请注意,如果还定义了
SessionNotOnOrAfter
属性,则两个属性的较小 值(SessionDuration
或SessionNotOnOrAfter
)将建立控制台会话的最大持续时间。在启用具有更长持续时间的控制台会话时,可能产生凭证外泄的风险。为了帮助您减轻此风险,您可以通过选择 IAM 控制台中的 Role Summary (角色摘要) 页面上的 Revoke Sessions (撤销会话),来立即禁用任何角色的有效控制台会话。有关更多信息,请参阅撤消 IAM 角色临时安全凭证。
重要
Name
标签中Attribute
属性的值区分大小写。必须将其一字不差地设置为http://www.amazonaws.cn/SAML/Attributes/SessionDuration
。<Attribute Name="http://www.amazonaws.cn/SAML/Attributes/SessionDuration"> <AttributeValue>1800</AttributeValue> </Attribute>
将 SAML 属性映射到 AWS 信任策略上下文键
本部分中的表列出了常用的 SAML 属性以及它们在 AWS 中映射到信任策略条件上下文键的方式。可以使用这些键控制对角色的访问,方式是根据访问角色的 SAML 请求附带的断言中包含的值来评估这些键。
重要
这些键仅在 IAM 信任策略 (可决定谁能担任角色的策略) 中可用,并且不适用于权限策略。
在 eduPerson 和 eduOrg 属性表中,值是以字符串或字符串列表的形式键入的。对于字符串值,您可以使用 StringEquals
或 StringLike
条件测试 IAM 信任策略中的这些值。对于包含字符串列表的值,您可以使用 ForAnyValue
和 ForAllValues
策略集运算符测试信任策略中的这些值。
注意
每个 AWS 上下文键只能包含一个断言。如果包含多个声明,将仅映射其中一个。
eduPerson 和 eduOrg 属性
eduPerson 或 eduOrg 属性 (Name 键)
|
映射到此 AWS 上下文键 (FriendlyName 键)
|
类型 |
---|---|---|
|
|
字符串列表 |
|
|
字符串列表 |
|
|
字符串 |
|
|
字符串列表 |
|
|
字符串 |
|
|
字符串 |
|
|
字符串列表 |
|
|
字符串 |
|
|
字符串列表 |
|
|
字符串列表 |
|
|
字符串列表 |
|
|
字符串列表 |
|
|
字符串列表 |
|
|
字符串列表 |
|
|
字符串列表 |
|
|
字符串列表 |
|
|
字符串列表 |
Active Directory 属性
AD 属性 | 映射到此 AWS 上下文键 | 类型 |
---|---|---|
|
|
字符串 |
|
|
字符串 |
|
|
字符串 |
|
|
字符串 |
|
|
字符串 |
|
|
字符串 |
X.500 属性
X.500 属性 | 映射到此 AWS 上下文键 | 类型 |
---|---|---|
|
|
字符串 |
|
|
字符串 |
|
|
字符串 |
|
|
字符串 |
|
|
字符串 |
|
|
字符串 |
|
|
字符串 |