为身份验证响应配置SAML断言 - AWS Identity and Access Management

如果我们为英文版本指南提供翻译,那么如果存在任何冲突,将以英文版本指南为准。在提供翻译时使用机器翻译。

为身份验证响应配置SAML断言

在您的组织中,验证用户的身份后,外部身份提供程序(IdP)将向 AWS SAML终点 https://signin.aws.amazon.com/saml。此响应是一个POST请求,其中包含符合 SAML2.0的HTTPS绑定 且包含以下要素,或 索赔. 您可在与 SAML 兼容的 IdP 中配置这些断言。请参考 IdP 文档,以了解有关如何输入这些声明的说明。

当 IdP 将包含断言的响应发送到 AWS 时,许多传入断言将映射到 AWS 上下文密钥。可以在 IAM 策略中使用 Condition 元素检查这些上下文密钥。可用映射的列表如将SAML属性映射至SIP信任策略背景密钥部分中所示。

Subject 并且 NameID

以下摘录显示了一个示例:用您自己的值替代标记值。同时包含 SubjectConfirmationSubjectConfirmationData 属性的 NotOnOrAfter 元素必须恰好具有一个 Recipient 元素。这些属性包含的值必须与 AWS 终端节点 (https://signin.aws.amazon.com/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.aws.amazon.com/saml"/> </SubjectConfirmation> </Subject>

AudienceRestriction 并且 Audience

出于安全原因,AWS 应作为受众包含在您的 IdP 发送到 AWS 的 SAML 断言中。对于 Audience 元素,指定 https://signin.aws.amazon.com/samlurn:amazon:webservices。SAML断言中的以下示例XML片段显示了IdP如何指定此密钥。包括适用于您的使用案例的示例。

<Conditions> <AudienceRestriction> <Audience>https://signin.aws.amazon.com/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。

SAML角色 Attribute

您可以使用 Attribute 元素 Name 属性设置为 https://aws.amazon.com/SAML/Attributes/Role。此元素包含一个或多个 AttributeValue 列出 IAM 身份提供程序以及IdP映射用户的角色。IAM 角色和 IAM 身份提供商被指定为以逗号分隔的 ARN 对,所采用的格式与传递到 AssumeRoleWithSAMLRoleArnPrincipalArn 参数的格式相同。此元素必须至少包含一个角色/提供商对(AttributeValue 元素),也可以包含多个对。如果该元素包含多个角色/提供商对,则用户将需要选择其使用 WebSSO 登录 AWS 管理控制台时要代入的角色。

重要

Name 标签中 Attribute 属性的值区分大小写。必须将其一字不差地设置为 https://aws.amazon.com/SAML/Attributes/Role

<Attribute Name="https://aws.amazon.com/SAML/Attributes/Role"> <AttributeValue>arn:aws:iam::account-number:role/role-name1,arn:aws:iam::account-number:saml-provider/provider-name</AttributeValue> <AttributeValue>arn:aws:iam::account-number:role/role-name2,arn:aws:iam::account-number:saml-provider/provider-name</AttributeValue> <AttributeValue>arn:aws:iam::account-number:role/role-name3,arn:aws:iam::account-number:saml-provider/provider-name</AttributeValue> </Attribute>

SAML RoleSessionName Attribute

您可以使用 Attribute 元素 Name 属性设置为 https://aws.amazon.com/SAML/Attributes/RoleSessionName。此元素包含一项 AttributeValue 为 AWS 为SSO签发的临时凭证。该元素用于在 AWS 管理控制台中显示用户信息。AttributeValue 元素中的值长度必须介于 2 到 64 个字符之间,只能包含字母数字字符、下划线和以下字符:+(加号)、=(等号)、,(逗号)、.(句点)、@(at 符号)和 -(连字符)。它不能含有空格。该值通常是用户 ID (johndoe) 或电子邮件地址 (johndoe@example.com)。该值不应包含空格,如用户的显示名称 (John Doe)。

重要

Name 标签中 Attribute 属性的值区分大小写。必须将其一字不差地设置为 https://aws.amazon.com/SAML/Attributes/RoleSessionName

<Attribute Name="https://aws.amazon.com/SAML/Attributes/RoleSessionName"> <AttributeValue>user-id-name</AttributeValue> </Attribute>

SAML SessionDuration Attribute

(可选)您可以使用 Attribute 元素 Name 属性设置为 https://aws.amazon.com/SAML/Attributes/SessionDuration"。此元素包含一项 AttributeValue 指定用户可以访问 AWS 管理控制台 然后再申请新的临时凭证。该值是一个表示会话秒数的整数。该值的范围是 900 秒 (15 分钟) 到 43200 秒 (12 小时)。如果该属性不存在,则凭证持续时间为 1 小时 (DurationSeconds API 的 AssumeRoleWithSAML 参数的默认值)。

要使用此属性,您必须配置SAML提供程序,以提供对 AWS 管理控制台 通过控制台登录网络终点,网址为 https://signin.aws.amazon.com/saml。请注意,此属性仅将会话延伸至 AWS 管理控制台. 它不能延长其他凭证的有效期。但是,如果它存在于 AssumeRoleWithSAML API 调用中,则可以用来缩短 会话的持续时间。调用返回的凭证的默认生命周期为 60 分钟。

另请注意,如果还定义了 SessionNotOnOrAfter 属性,则两个属性的较小 值(SessionDurationSessionNotOnOrAfter)将建立控制台会话的最大持续时间。

在启用具有更长持续时间的控制台会话时,可能产生凭证外泄的风险。为了帮助您降低这种风险,您可以通过选择 撤销会议角色总结 页面 IAM 话务台。有关更多信息,请参阅 逆转 IAM 角色临时安全凭证。)

重要

Name 标签中 Attribute 属性的值区分大小写。必须将其一字不差地设置为 https://aws.amazon.com/SAML/Attributes/SessionDuration

<Attribute Name="https://aws.amazon.com/SAML/Attributes/SessionDuration"> <AttributeValue>1800</AttributeValue> </Attribute>

SAML PrincipalTag Attribute

(可选)您可以使用 Attribute 元素 Name 属性设置为 https://aws.amazon.com/SAML/Attributes/PrincipalTag:{TagKey}。此元素允许您在SAML声明中传递属性作为会话标记。有关会话标签的更多信息,请参阅传送会话标签 AWS STS

要将属性作为会话标签传递,请包含指定标签值的 AttributeValue 元素。例如,要传递标签键/值对 Project = MarketingCostCenter = 12345,请使用以下属性。为每个标签包含一个单独的 Attribute 元素。

<Attribute Name="https://aws.amazon.com/SAML/Attributes/PrincipalTag:Project"> <AttributeValue>Marketing</AttributeValue> </Attribute> <Attribute Name="https://aws.amazon.com/SAML/Attributes/PrincipalTag:CostCenter"> <AttributeValue>12345</AttributeValue> </Attribute>

若要将上面的标记设置为交通,请加入另一个 Attribute 元素 Name 属性设置为 https://aws.amazon.com/SAML/Attributes/TransitiveTagKeys。这是一个可选的多值属性,可将您的会话标签设置为过渡。当您使用 SAML 会话代入 AWS 中的另一个角色时,可传递标签将保留。这称为角色链。例如,要将 PrincipalCostCenter 标签均设置为可传递,请使用以下属性指定键。

<Attribute Name="https://aws.amazon.com/SAML/Attributes/TransitiveTagKeys"> <AttributeValue>Project</AttributeValue> <AttributeValue>CostCenter</AttributeValue> </Attribute>

将SAML属性映射至SIP信任策略背景密钥

本部分中的表列出了常用的 SAML 属性以及它们在 AWS 中映射到信任策略条件上下文键的方式。您可以使用这些键来控制对角色的访问。为此,请将键与 SAML 访问请求中所附带断言包含的值进行比较。

重要

这些键仅在 IAM 信任策略 (可决定谁能担任角色的策略) 中可用,并且不适用于权限策略。

在 eduPerson 和 eduOrg 属性表中,值是以字符串或字符串列表的形式键入的。对于字符串值,您可以使用 StringEqualsStringLike 条件测试 IAM 信任策略中的这些值。对于包含字符串列表的值,您可以使用 ForAnyValueForAllValues 策略集运算符测试信任策略中的这些值。

注意

每个 AWS 上下文键只能包含一个断言。如果包含多个声明,将仅映射其中一个。

eduPerson和eduOrg属性
eduPerson 或 eduOrg 属性 (Name 键) 映射到此 AWS 上下文键 (FriendlyName 键) Type

urn:oid:1.3.6.1.4.1.5923.1.1.1.1

eduPersonAffiliation

字符串列表

urn:oid:1.3.6.1.4.1.5923.1.1.1.2

eduPersonNickname

字符串列表

urn:oid:1.3.6.1.4.1.5923.1.1.1.3

eduPersonOrgDN

:字符串

urn:oid:1.3.6.1.4.1.5923.1.1.1.4

eduPersonOrgUnitDN

字符串列表

urn:oid:1.3.6.1.4.1.5923.1.1.1.5

eduPersonPrimaryAffiliation

:字符串

urn:oid:1.3.6.1.4.1.5923.1.1.1.6

eduPersonPrincipalName

:字符串

urn:oid:1.3.6.1.4.1.5923.1.1.1.7

eduPersonEntitlement

字符串列表

urn:oid:1.3.6.1.4.1.5923.1.1.1.8

eduPersonPrimaryOrgUnitDN

:字符串

urn:oid:1.3.6.1.4.1.5923.1.1.1.9

eduPersonScopedAffiliation

字符串列表

urn:oid:1.3.6.1.4.1.5923.1.1.1.10

eduPersonTargetedID

字符串列表

urn:oid:1.3.6.1.4.1.5923.1.1.1.11

eduPersonAssurance

字符串列表

urn:oid:1.3.6.1.4.1.5923.1.2.1.2

eduOrgHomePageURI

字符串列表

urn:oid:1.3.6.1.4.1.5923.1.2.1.3

eduOrgIdentityAuthNPolicyURI

字符串列表

urn:oid:1.3.6.1.4.1.5923.1.2.1.4

eduOrgLegalName

字符串列表

urn:oid:1.3.6.1.4.1.5923.1.2.1.5

eduOrgSuperiorURI

字符串列表

urn:oid:1.3.6.1.4.1.5923.1.2.1.6

eduOrgWhitePagesURI

字符串列表

urn:oid:2.5.4.3

cn

字符串列表

活动目录属性
AD 属性 映射到此 AWS 上下文键 Type

http://schemas.xmlsoap.org/ws/2005/05/identity/claims/name

name

:字符串

http://schemas.xmlsoap.org/claims/CommonName

commonName

:字符串

http://schemas.xmlsoap.org/ws/2005/05/identity/claims/givenname

givenName

:字符串

http://schemas.xmlsoap.org/ws/2005/05/identity/claims/surname

surname

:字符串

http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress

mail

:字符串

http://schemas.microsoft.com/ws/2008/06/identity/claims/primarygroupsid

uid

:字符串

X.500属性
X.500属性 映射到此 AWS 上下文键 Type

2.5.4.3

commonName

:字符串

2.5.4.4

surname

:字符串

2.4.5.42

givenName

:字符串

2.5.4.45

x500UniqueIdentifier

:字符串

0.9.2342.19200300100.1.1

uid

:字符串

0.9.2342.19200300100.1.3

mail

:字符串

0.9.2342.19200300.100.1.45

organizationStatus

:字符串