请求临时安全凭证 - Amazon Identity and Access Management
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

请求临时安全凭证

要请求临时安全凭证,您可以在 Amazon API 中使用 Amazon Security Token Service (Amazon STS) 操作。这些操作包括创建受信任用户,并为其提供可以控制 Amazon 资源访问的临时安全凭证。有关 Amazon STS 的更多信息,请参阅 IAM 临时安全凭证。要了解在担任角色以请求临时安全凭证时使用的各种方法,请参阅使用 IAM 角色

要调用 API 操作,您可以使用其中的一个 Amazon SDK。这些开发工具包适用于各种不同的编程语言和环境,包括 Java、.NET、Python、Ruby、Android 和 iOS。这些开发工具包负责处理各种任务,如以加密方式对您的请求进行签名、在必要时重试请求以及处理错误响应。还可使用 Amazon STS 查询 API(在 Amazon Security Token Service API 参考中介绍)。最后,两个命令行工具支持 Amazon STS 命令:Amazon Command Line InterfaceAmazon Tools for Windows PowerShell

Amazon STS API 操作使用临时安全凭证(包括访问密钥对和会话令牌)创建新会话。访问密钥对由访问密钥 ID 和私有密钥组成。用户 (或用户所运行的应用程序) 可使用这些凭证访问您的资源。您可以使用 Amazon STS API 操作以编程方式创建角色会话和传递会话策略及会话标签。生成的会话的权限是角色的基于身份的策略与会话策略的交集。有关会话策略的更多信息,请参阅会话策略。有关会话标签的更多信息,请参阅 在 Amazon STS 中传递会话标签

注意

Amazon STS API 操作返回的会话令牌大小不固定。我们强烈建议不要假设最大大小。典型的令牌大小小于 4096 字节,但可能会发生变化。

通过 Amazon 区域使用 Amazon STS

您可以将 Amazon STS API 调用发送到全球终端节点或某个区域终端节点。如果您选择更靠近您的终端节点,则可减少延迟并改善 API 调用的性能。如果您不再能与原始终端节点进行通信,也可选择将调用定向到替代的区域终端节点。如果您使用某种 Amazon SDK,请先使用该开发工具包的方法指定一个区域,然后再进行 API 调用。如果您正在手动构建 HTTP API 请求,则必须自行将请求定向到正确的终端节点。有关更多信息,请参阅区域和终端节点在 Amazon Web Services 区域 中管理 Amazon STS 的 Amazon STS 部分。

下面是让您可以用来获取临时凭证以用于您的 Amazon 环境和应用程序的 API 操作。

AssumeRole – 通过自定义身份凭证代理程序进行跨账户委托和联合身份验证

AssumeRole API 操作对于允许现有 IAM 用户访问其没有访问权限的 Amazon 资源很有用。例如,用户可能需要对其他 Amazon Web Services 账户 中资源的访问权限。此外,可使用它来暂时获得特权访问权限 - 例如,提供多重身份验证 (MFA)。您必须使用活动凭证调用该 API。要了解谁可以调用此操作,请参阅 比较 Amazon STS API 操作。有关更多信息,请参阅 创建向 IAM 用户委派权限的角色配置受 MFA 保护的 API 访问

必须使用有效的 Amazon 安全凭证来进行此调用。进行此调用时,您传递以下信息:

  • 应用程序应承担的角色的 Amazon Resource Name (ARN)。

  • (可选)持续时间,它指定临时安全凭证的持续时间。可以使用 DurationSeconds 参数指定 900 秒 (15 分钟) 到角色的最大会话持续时间设置之间的角色会话持续时间。要了解如何查看您的角色的最大值,请参阅查看角色的最大会话持续时间设置。如果未传递该参数,临时凭证将在 1 小时后过期。该 API 中的 DurationSeconds 参数与用于指定控制台会话持续时间的 SessionDuration HTTP 参数不同。可以在发送到联合终端节点的控制台登录令牌请求中使用 SessionDuration HTTP 参数。有关更多信息,请参阅使自定义身份代理能够访问 Amazon 控制台

  • 角色会话名称 使用此字符串值可在不同主体使用角色时标识会话。为了安全起见,管理员可以在 Amazon CloudTrail 日志 中查看此字段,以了帮助识别已在 Amazon 中执行操作的人员。您的管理员可能会要求您在代入角色时指定 IAM 用户名作为会话名称。有关更多信息,请参阅sts:RoleSessionName

  • (可选)源身份。您可以要求用户在担任角色时指定源身份。设置源身份后,无法更改该值。它在角色会话期间执行的所有操作的请求中都会出现。源身份值在链接角色会话中持续存在。您可以将源身份信息用于 Amazon CloudTrail 日志来确定谁使用角色采取了操作。有关使用基于身份的策略的更多信息,请参阅 监控和控制使用所担任角色执行的操作

  • (可选)内联或托管会话策略。这些策略限制角色的基于身份的策略中分配给角色会话的权限。生成的会话的权限是角色的基于身份的策略与会话策略的交集。使用会话策略授予的权限不能超过担任的角色的基于身份的策略允许的权限。有关角色会话权限的更多信息,请参阅会话策略

  • (可选)会话标签。您可以代入角色,然后使用临时凭证发出请求。执行此操作时,会话的主体标签包括角色的标签和传递的会话标签。如果您使用临时凭证发出此调用,则新会话还会从调用会话继承可传递会话标签。有关会话标签的更多信息,请参阅 在 Amazon STS 中传递会话标签

  • (可选)MFA 信息。如果配置为使用 Multi-Factor Authentication (MFA),则可以包含 MFA 设备的标识符和该设备提供的一次性代码。

  • (可选)一个可在将对您账户的访问权限委派给第三方时使用的可选 ExternalId 值。该值有助于确保仅指定的第三方可以访问该角色。有关更多信息,请参阅 如何在向第三方授予对 Amazon 资源的访问权时使用外部 ID

以下示例显示了使用 AssumeRole 的示例请求和响应。此示例请求将在指定的持续时间内担任 demo 角色,其中包含会话策略会话标签外部 ID源身份。生成的会话命名为 John-session

例 示例请求
https://sts.amazonaws.com/ ?Version=2011-06-15 &Action=AssumeRole &RoleSessionName=John-session &RoleArn=arn:aws::iam::123456789012:role/demo &Policy=%7B%22Version%22%3A%222012-10-17%22%2C%22Statement%22%3A%5B%7B%22Sid%22%3A%20%22Stmt1%22%2C%22Effect%22%3A%20%22Allow%22%2C%22Action%22%3A%20%22s3%3A*%22%2C%22Resource%22%3A%20%22*%22%7D%5D%7D &DurationSeconds=1800 &Tags.member.1.Key=Project &Tags.member.1.Value=Pegasus &Tags.member.2.Key=Cost-Center &Tags.member.2.Value=12345 &ExternalId=123ABC &SourceIdentity=DevUser123 &AUTHPARAMS

在前面的示例中显示的策略值是以下策略的 URL 编码版本:

{"Version":"2012-10-17","Statement":[{"Sid":"Stmt1","Effect":"Allow","Action":"s3:*","Resource":"*"}]}

示例中的 AUTHPARAMS 参数是您的签名 的占位符。签名是您必须在 Amazon HTTP API 请求中包含的身份验证信息。建议使用 Amazon 开发工具包创建 API 请求,这样做的一个好处是开发工具包将为您处理请求签名。如果您必须手动创建并签署 API 请求,请参阅《Amazon Web Services 一般参考》中的 使用签名版本 4 签署 Amazon 请求,以了解如何签署请求。

除了临时安全凭证之外,该响应还包括联合身份用户的 Amazon Resource Name (ARN) 和凭证的到期时间。

例 响应示例
<AssumeRoleResponse xmlns="https://sts.amazonaws.com/doc/2011-06-15/"> <AssumeRoleResult> <SourceIdentity>DevUser123</SourceIdentity> <Credentials> <SessionToken> AQoDYXdzEPT//////////wEXAMPLEtc764bNrC9SAPBSM22wDOk4x4HIZ8j4FZTwdQW LWsKWHGBuFqwAeMicRXmxfpSPfIeoIYRqTflfKD8YUuwthAx7mSEI/qkPpKPi/kMcGd QrmGdeehM4IC1NtBmUpp2wUE8phUZampKsburEDy0KPkyQDYwT7WZ0wq5VSXDvp75YU 9HFvlRd8Tx6q6fE8YQcHNVXAkiY9q6d+xo0rKwT38xVqr7ZD0u0iPPkUL64lIZbqBAz +scqKmlzm8FDrypNC9Yjc8fPOLn9FX9KSYvKTr4rvx3iSIlTJabIQwj2ICCR/oLxBA== </SessionToken> <SecretAccessKey> wJalrXUtnFEMI/K7MDENG/bPxRfiCYzEXAMPLEKEY </SecretAccessKey> <Expiration>2019-07-15T23:28:33.359Z</Expiration> <AccessKeyId>AKIAIOSFODNN7EXAMPLE</AccessKeyId> </Credentials> <AssumedRoleUser> <Arn>arn:aws:sts::123456789012:assumed-role/demo/John</Arn> <AssumedRoleId>ARO123EXAMPLE123:John</AssumedRoleId> </AssumedRoleUser> <PackedPolicySize>8</PackedPolicySize> </AssumeRoleResult> <ResponseMetadata> <RequestId>c6104cbe-af31-11e0-8154-cbc7ccf896c7</RequestId> </ResponseMetadata> </AssumeRoleResponse>
注意

Amazon 转换会将传递的会话策略和会话标签压缩为具有单独限制的打包二进制格式。即使您的纯文本符合其他要求,您的请求也可能会由于此限制而失败。PackedPolicySize 响应元素指示您请求的策略和标签接近大小上限的程度,以百分比来表示。

AssumeRoleWithWebIdentity – 通过基于 Web 的身份提供程序进行联合身份验证

AssumeRoleWithWebIdentity API 操作为通过公共身份提供程序验证的联合身份用户返回一组临时安全凭证。公共身份提供程序示例包括 Login with Amazon、Facebook、Google 或任何 OpenID Connect (OIDC) 兼容身份提供程序。要创建需要访问 Amazon 的移动应用程序或基于客户端的 Web 应用程序,该操作是非常有用的。使用该操作意味着,您的用户不需要使用自己的 Amazon 或 IAM 身份。有关更多信息,请参阅关于 Web 联合身份验证

我们建议您使用 Amazon Cognito 和适用于移动开发的 Amazon SDK 附带的 Amazon Cognito 凭证提供程序,而不是直接调用 AssumeRoleWithWebIdentity。有关更多信息,请参阅《Amplify 文档》中的使用 Amplify 进行身份验证

如果不使用 Amazon Cognito,则可调用 Amazon STS 的 AssumeRoleWithWebIdentity 操作。这是未签名的调用,这意味着应用程序无需使用任何 Amazon 安全凭证即可进行调用。进行此调用时,您传递以下信息:

  • 应用程序应承担的角色的 Amazon Resource Name (ARN)。如果应用程序支持多种用户登录方式,则您必须定义多个角色,每个身份提供程序对应一个角色。调用 AssumeRoleWithWebIdentity 时应加入用户通过其登录的提供商所特有的角色的 ARN。

  • 应用程序验证用户身份后从 IdP 获得的令牌。

  • 您可以配置 IdP,将属性作为会话标签传递到令牌。

  • (可选)持续时间,它指定临时安全凭证的持续时间。可以使用 DurationSeconds 参数指定 900 秒 (15 分钟) 到角色的最大会话持续时间设置之间的角色会话持续时间。要了解如何查看您的角色的最大值,请参阅查看角色的最大会话持续时间设置。如果未传递该参数,临时凭证将在 1 小时后过期。该 API 中的 DurationSeconds 参数与用于指定控制台会话持续时间的 SessionDuration HTTP 参数不同。可以在发送到联合终端节点的控制台登录令牌请求中使用 SessionDuration HTTP 参数。有关更多信息,请参阅使自定义身份代理能够访问 Amazon 控制台

  • 角色会话名称 使用此字符串值可在不同主体使用角色时标识会话。为了安全起见,管理员可以在 Amazon CloudTrail 日志 中查看此字段,以了解已在 Amazon 中执行操作的人员。您的管理员可能会要求您在代入角色时为会话名称提供特定的值。有关更多信息,请参阅sts:RoleSessionName

  • (可选)源身份。您可以要求联合身份用户在担任角色时指定源身份。设置源身份后,无法更改该值。它在角色会话期间执行的所有操作的请求中都会出现。源身份值在链接角色会话中持续存在。您可以将源身份信息用于 Amazon CloudTrail 日志来确定谁使用角色采取了操作。有关使用基于身份的策略的更多信息,请参阅 监控和控制使用所担任角色执行的操作

  • (可选)内联或托管会话策略。这些策略限制角色的基于身份的策略中分配给角色会话的权限。生成的会话的权限是角色的基于身份的策略与会话策略的交集。使用会话策略授予的权限不能超过担任的角色的基于身份的策略允许的权限。有关角色会话权限的更多信息,请参阅会话策略

    注意

    AssumeRoleWithWebIdentity 的调用未签名 (加密)。因此,只有在通过受信任的中介传输请求时,才应包含可选的会话策略。在这种情况下,有人可能会修改策略以删除限制。

调用 AssumeRoleWithWebIdentity 时,Amazon 将验证令牌的真实性。例如,根据提供商的不同,Amazon 可能调用提供商并加入应用程序已传递的令牌。假定身份提供程序证实令牌有效,则 Amazon 返回以下信息:

  • 一组临时安全凭证。这些证书由访问密钥 ID、秘密访问密钥和会话令牌组成。

  • 所担任角色的角色 ID 和 ARN。

  • 一个 SubjectFromWebIdentityToken 值,其中包含独一无二的用户 ID。

具有临时安全凭证时,可使用这些凭证调用 Amazon API。该过程与使用长期安全凭证进行 Amazon API 调用相同。不同之处在于,您必须包含会话令牌,以便 Amazon 验证临时安全凭证是否有效。

您的应用程序应缓存凭证。如上所述,默认情况下,凭证在 1 小时后到期。如果未使用 软件开发工具包中的 AmazonSTSCredentialsProviderAmazon 操作,则由您和您的应用程序负责再次调用 AssumeRoleWithWebIdentity。在旧安全凭证到期之前,可以调用该操作以获取一组新的临时安全凭证。

AssumeRoleWithSAML – 通过与 SAML 2.0 兼容的企业身份提供程序进行联合身份验证

AssumeRoleWithSAML API 操作为通过您的组织的现有身份系统验证的联合身份用户返回一组临时安全凭证。用户还必须使用 SAML 2.0(安全断言标记语言)将身份验证和授权信息传递给 Amazon。对于将身份系统 (如 Windows Active Directory 或 OpenLDAP) 与可生成 SAML 断言的软件集成在一起的组织,该 API 操作是非常有用的。此类集成提供有关用户身份和权限 (如 Active Directory 联合身份验证服务或 Shibboleth) 的信息。有关更多信息,请参阅关于基于 SAML 2.0 的联合身份验证

注意

AssumeRoleWithSAML 的调用未签名 (加密)。因此,只有在通过受信任的中介传输请求时,才应包含可选的会话策略。在这种情况下,有人可能会修改策略以删除限制。

这是未签名的调用,表示应用程序无需有权访问任何 Amazon 安全凭证即可进行调用。进行此调用时,您传递以下信息:

  • 应用程序应承担的角色的 Amazon Resource Name (ARN)。

  • IAM 中创建的 SAML 提供商的 ARN,用于描述身份提供程序。

  • 采用 Base64 编码的 SAML 断言,这是 SAML 身份提供程序在针对您的应用程序的登录请求做出的身份验证响应中提供的。

  • 您可以配置 IdP,将属性作为会话标签传递到 SAML 断言。

  • (可选)持续时间,它指定临时安全凭证的持续时间。可以使用 DurationSeconds 参数指定 900 秒 (15 分钟) 到角色的最大会话持续时间设置之间的角色会话持续时间。要了解如何查看您的角色的最大值,请参阅查看角色的最大会话持续时间设置。如果未传递该参数,临时凭证将在 1 小时后过期。该 API 中的 DurationSeconds 参数与用于指定控制台会话持续时间的 SessionDuration HTTP 参数不同。可以在发送到联合终端节点的控制台登录令牌请求中使用 SessionDuration HTTP 参数。有关更多信息,请参阅 使自定义身份代理能够访问 Amazon 控制台

  • (可选)内联或托管会话策略。这些策略限制角色的基于身份的策略中分配给角色会话的权限。生成的会话的权限是角色的基于身份的策略与会话策略的交集。使用会话策略授予的权限不能超过担任的角色的基于身份的策略允许的权限。有关角色会话权限的更多信息,请参阅会话策略

  • 角色会话名称 使用此字符串值可在不同主体使用角色时标识会话。为了安全起见,管理员可以在 Amazon CloudTrail 日志 中查看此字段,以了解已在 Amazon 中执行操作的人员。您的管理员可能会要求您在代入角色时为会话名称提供特定的值。有关更多信息,请参阅sts:RoleSessionName

  • (可选)源身份。您可以要求联合身份用户在担任角色时指定源身份。设置源身份后,无法更改该值。它在角色会话期间执行的所有操作的请求中都会出现。源身份值在链接角色会话中持续存在。您可以将源身份信息用于 Amazon CloudTrail 日志来确定谁使用角色采取了操作。有关使用基于身份的策略的更多信息,请参阅 监控和控制使用所担任角色执行的操作

调用 AssumeRoleWithSAML 时,Amazon 将验证 SAML 断言的真实性。假定身份提供程序证实断言有效,则 Amazon 向您返回以下信息:

  • 一组临时安全凭证。这些证书由访问密钥 ID、秘密访问密钥和会话令牌组成。

  • 所担任角色的角色 ID 和 ARN。

  • Audience 值,包含 SAML 断言的 Recipient 元素的 SubjectConfirmationData 属性值。

  • Issuer 值,包含 SAML 断言的 Issuer 元素值。

  • NameQualifier 元素,包含通过 Issuer 值、Amazon Web Services 账户 ID 以及 SAML 提供商的易记名称生成的哈希值。与 Subject 元素相结合时,它们可以唯一地标识联合身份用户。

  • Subject 元素,包含 SAML 断言的 NameID 元素的 Subject 元素值。

  • SubjectType 元素,指示 Subject 元素的格式。值可以是 persistenttransient 或在您的 SAML 断言中使用的 FormatSubject 元素的完整 NameID URI。有关 NameID 元素的 Format 属性的信息,请参阅为身份验证响应配置 SAML 断言

具有临时安全凭证时,可使用这些凭证调用 Amazon API。该过程与使用长期安全凭证进行 Amazon API 调用相同。不同之处在于,您必须包含会话令牌,以便 Amazon 验证临时安全凭证是否有效。

您的应用程序应缓存凭证。默认情况下,凭证在 1 小时后到期。如果未使用 软件开发工具包中的 AmazonSTSCredentialsProviderAmazon 操作,则由您和您的应用程序负责再次调用 AssumeRoleWithSAML。在旧安全凭证到期之前,可以调用该操作以获取一组新的临时安全凭证。

GetFederationToken – 通过自定义身份凭证代理程序进行联合身份验证

GetFederationToken API 操作为联合身份用户返回一组临时安全凭证。该 API 不同于 AssumeRole,其默认有效期大大增加 (12 小时而不是 1 小时)。此外,您还可以使用 DurationSeconds 参数指定临时安全凭证保持有效的持续时间。生成的凭证在指定的时间段内有效,介于 900 秒(15 分钟)到 129600 秒(36 小时)之间。较长的有效期有助于减少调用 Amazon 的次数,因为您不需要经常获取新凭证。

您在发出此请求时使用特定 IAM 用户的凭证。临时安全凭证的权限是由调用 GetFederationToken 时传递的会话策略决定的。生成的会话权限是 IAM 用户策略与您传递的会话策略的交集。使用会话策略授予的权限不能超过请求联合的 IAM 用户的基于身份的策略允许的权限。有关角色会话权限的更多信息,请参阅会话策略

当您使用 GetFederationToken 操作返回的临时凭证时,会话的主体标签包括用户的标签以及传递的会话标签。有关会话标签的更多信息,请参阅 在 Amazon STS 中传递会话标签

GetFederationToken 调用将返回临时安全凭证,其中包括会话令牌、访问密钥、私有密钥和到期时间。如果要在组织内管理权限 (例如,使用代理应用程序分配权限),则可使用 GetFederationToken。要查看使用 GetFederationToken 的示例应用程序,请参阅 Amazon Sample Code & Libraries(亚马逊云科技示例代码和库)中的 Identity Federation Sample Application for an Active Directory Use Case(Active Directory 的联合身份验证示例应用程序使用案例)。

以下示例显示了使用 GetFederationToken 的示例请求和响应。此示例请求使用会话策略 ARN 和会话标签,在指定的持续时间内联合调用用户的身份。生成的会话命名为 Jane-session

例 示例请求
https://sts.amazonaws.com/ ?Version=2011-06-15 &Action=GetFederationToken &Name=Jane-session &PolicyArns.member.1.arn==arn%3Aaws%3Aiam%3A%3A123456789012%3Apolicy%2FRole1policy &DurationSeconds=1800 &Tags.member.1.Key=Project &Tags.member.1.Value=Pegasus &Tags.member.2.Key=Cost-Center &Tags.member.2.Value=12345 &AUTHPARAMS

上述示例中显示的策略 ARN 包含以下 URL 编码的 ARN:

arn:aws:iam::123456789012:policy/Role1policy

还要注意,该示例中的 &AUTHPARAMS 参数用作身份验证信息的占位符。这是签名,您必须将其包括在 Amazon HTTP API 请求中。建议使用 Amazon 开发工具包创建 API 请求,这样做的一个好处是开发工具包将为您处理请求签名。如果您必须手动创建并签署 API 请求,请访问《Amazon Web Services 一般参考》中的 使用签名版本 4 签署 Amazon 请求,以了解如何签署请求。

除了临时安全凭证之外,该响应还包括联合身份用户的 Amazon Resource Name (ARN) 和凭证的到期时间。

例 响应示例
<GetFederationTokenResponse xmlns="https://sts.amazonaws.com/doc/2011-06-15/"> <GetFederationTokenResult> <Credentials> <SessionToken> AQoDYXdzEPT//////////wEXAMPLEtc764bNrC9SAPBSM22wDOk4x4HIZ8j4FZTwdQW LWsKWHGBuFqwAeMicRXmxfpSPfIeoIYRqTflfKD8YUuwthAx7mSEI/qkPpKPi/kMcGd QrmGdeehM4IC1NtBmUpp2wUE8phUZampKsburEDy0KPkyQDYwT7WZ0wq5VSXDvp75YU 9HFvlRd8Tx6q6fE8YQcHNVXAkiY9q6d+xo0rKwT38xVqr7ZD0u0iPPkUL64lIZbqBAz +scqKmlzm8FDrypNC9Yjc8fPOLn9FX9KSYvKTr4rvx3iSIlTJabIQwj2ICCEXAMPLE== </SessionToken> <SecretAccessKey> wJalrXUtnFEMI/K7MDENG/bPxRfiCYzEXAMPLEKEY </SecretAccessKey> <Expiration>2019-04-15T23:28:33.359Z</Expiration> <AccessKeyId>AKIAIOSFODNN7EXAMPLE;</AccessKeyId> </Credentials> <FederatedUser> <Arn>arn:aws:sts::123456789012:federated-user/Jean</Arn> <FederatedUserId>123456789012:Jean</FederatedUserId> </FederatedUser> <PackedPolicySize>4</PackedPolicySize> </GetFederationTokenResult> <ResponseMetadata> <RequestId>c6104cbe-af31-11e0-8154-cbc7ccf896c7</RequestId> </ResponseMetadata> </GetFederationTokenResponse>
注意

Amazon 转换会将传递的会话策略和会话标签压缩为具有单独限制的打包二进制格式。即使您的纯文本符合其他要求,您的请求也可能会由于此限制而失败。PackedPolicySize 响应元素指示您请求的策略和标签接近大小上限的程度,以百分比来表示。

Amazon 建议您在资源级别授予权限(例如,将基于资源的策略附加到 Amazon S3 存储桶),则可省略 Policy 参数。但是,如果不加入针对联合身份用户的策略,则临时安全凭证将不授予任何权限。在这种情况下,您必须 使用资源策略为联合身份用户授予您的 Amazon 资源的访问权限。

例如,假设您的 Amazon Web Services 账户 号码为 111122223333,且您拥有希望允许 Susan 访问的 Amazon S3 存储桶。Susan 的临时安全凭证不包括该存储桶的策略。在这种情况下,您需要确保该存储桶的策略具有与 Susan 的 ARN (如 arn:aws:sts::111122223333:federated-user/Susan) 匹配的 ARN。

GetSessionToken – 不受信任环境中用户的临时凭证

GetSessionToken API 操作向现有 IAM 用户返回一组临时安全凭证。此 API 对提高安全性非常有用,例如在已针对 IAM 用户启用 MFA 的情况下提出 Amazon 请求。由于凭证是临时的,因此,在 IAM 用户通过不太安全的环境访问您的资源时,它们提供了增强的安全性。不太安全的环境示例包括移动设备或 Web 浏览器。有关更多信息,请参阅 请求临时安全凭证Amazon Security Token Service API 参考中的 GetSessionToken

默认情况下,IAM 用户的临时安全凭证的有效期最长为 12 小时。但是,您可以使用 DurationSeconds 参数请求短至 15 分钟或长达 36 小时的持续时间。出于安全考虑,Amazon Web Services 账户根用户的令牌有效期仅为一小时。

GetSessionToken 将返回临时安全凭证,其中包括会话令牌、访问密钥 ID 和秘密访问密钥。以下示例显示了使用 GetSessionToken 的示例请求和响应。响应也包括了临时安全凭证的过期时间。

例 示例请求
https://sts.amazonaws.com/ ?Version=2011-06-15 &Action=GetSessionToken &DurationSeconds=1800 &AUTHPARAMS

示例中的 AUTHPARAMS 参数是您的签名 的占位符。签名是您必须在 Amazon HTTP API 请求中包含的身份验证信息。建议使用 Amazon 开发工具包创建 API 请求,这样做的一个好处是开发工具包将为您处理请求签名。如果您必须手动创建并签署 API 请求,请访问《Amazon Web Services 一般参考》中的 使用签名版本 4 签署 Amazon 请求,以了解如何签署请求。

例 响应示例
<GetSessionTokenResponse xmlns="https://sts.amazonaws.com/doc/2011-06-15/"> <GetSessionTokenResult> <Credentials> <SessionToken> AQoEXAMPLEH4aoAH0gNCAPyJxz4BlCFFxWNE1OPTgk5TthT+FvwqnKwRcOIfrRh3c/L To6UDdyJwOOvEVPvLXCrrrUtdnniCEXAMPLE/IvU1dYUg2RVAJBanLiHb4IgRmpRV3z rkuWJOgQs8IZZaIv2BXIa2R4OlgkBN9bkUDNCJiBeb/AXlzBBko7b15fjrBs2+cTQtp Z3CYWFXG8C5zqx37wnOE49mRl/+OtkIKGO7fAE </SessionToken> <SecretAccessKey> wJalrXUtnFEMI/K7MDENG/bPxRfiCYzEXAMPLEKEY </SecretAccessKey> <Expiration>2011-07-11T19:55:29.611Z</Expiration> <AccessKeyId>AKIAIOSFODNN7EXAMPLE</AccessKeyId> </Credentials> </GetSessionTokenResult> <ResponseMetadata> <RequestId>58c5dbae-abef-11e0-8cfe-09039844ac7d</RequestId> </ResponseMetadata> </GetSessionTokenResponse>

(可选)GetSessionToken 请求可能包括 SerialNumberTokenCode 值以进行 Amazon Multi-Factor Authentication (MFA) 验证。如果提供的值有效,Amazon STS 将提供包含 MFA 身份验证状态的临时安全凭证。然后,可以使用临时安全凭证访问受 MFA 保护的 API 操作或 Amazon 网站,但前提是 MFA 身份验证有效。

下例展示一个 GetSessionToken 请求,其中包括 MFA 验证代码和设备序列号。

https://sts.amazonaws.com/ ?Version=2011-06-15 &Action=GetSessionToken &DurationSeconds=7200 &SerialNumber=YourMFADeviceSerialNumber &TokenCode=123456 &AUTHPARAMS
注意

对 Amazon STS 的调用可能针对的是全局端点,也可能针对的是激活您的 Amazon Web Services 账户 的任何区域终端节点。有关更多信息,请参阅区域和终端节点的 Amazon STS 部分

示例中的 AUTHPARAMS 参数是您的签名 的占位符。签名是您必须在 Amazon HTTP API 请求中包含的身份验证信息。建议使用 Amazon 开发工具包创建 API 请求,这样做的一个好处是开发工具包将为您处理请求签名。如果您必须手动创建并签署 API 请求,请参阅《Amazon Web Services 一般参考》中的 使用签名版本 4 签署 Amazon 请求,以了解如何签署请求。

比较 Amazon STS API 操作

下表比较了 Amazon STS 中返回临时安全凭证的 API 操作的功能。要了解在担任角色以请求临时安全凭证时使用的各种方法,请参阅使用 IAM 角色。要了解允许您传递会话标签的不同 Amazon STS API 操作,请参阅在 Amazon STS 中传递会话标签

比较 API 选项
Amazon STS API 谁能调用 凭证生命周期 (最小值 | 最大值 | 默认值) MFA 支持¹ 会话策略支持² 对生成的临时凭证的限制
AssumeRole 具有现有临时安全凭证的 IAM 用户或 IAM 角色 15 分钟 | 最大会话持续时间设置³ | 1 小时 支持

无法调用 GetFederationTokenGetSessionToken

AssumeRoleWithSAML 任何用户;发起人必须传递 SAML 身份验证响应,指示身份验证来自已知的身份提供程序 15 分钟 | 最大会话持续时间设置³ | 1 小时

无法调用 GetFederationTokenGetSessionToken

AssumeRoleWithWebIdentity 任何用户;发起人必须传递 Web 身份令牌,指示身份验证来自已知的身份提供程序 15 分钟 | 最大会话持续时间设置³ | 1 小时

无法调用 GetFederationTokenGetSessionToken

GetFederationToken IAM 用户或 Amazon Web Services 账户根用户

IAM 用户:15 分钟 | 36 小时 | 12 小时

根用户:15 分钟 | 1 小时 | 1 小时

无法使用 Amazon CLI 或 Amazon API 调用 IAM 操作。此限制不适用于控制台会话。

无法调用除 GetCallerIdentity 之外的 Amazon STS 操作。⁴

允许通过 SSO 登录到控制台。⁵

GetSessionToken IAM 用户或 Amazon Web Services 账户根用户

IAM 用户:15 分钟 | 36 小时 | 12 小时

根用户:15 分钟 | 1 小时 | 1 小时

除非请求附带了 MFA 信息,否则无法调用 IAM API 操作。

无法调用除 AssumeRoleGetCallerIdentity 之外的 Amazon STS API 操作。

不允许通过 SSO 登录到控制台。⁶

¹ MFA 支持。在调用 AssumeRole 和 GetSessionToken API 操作时,可以包含有关 Multi-Factor Authentication (MFA) 设备的信息。这可确保通过 API 调用生成的临时安全凭证只能由已使用 MFA 设备进行身份验证的用户使用。有关更多信息,请参阅配置受 MFA 保护的 API 访问

² 会话策略支持。会话策略是当您以编程方式为角色或联合身份用户创建临时会话时作为参数传递的策略。此策略限制来自角色或用户的基于身份的策略且分配给该会话的权限。生成的会话的权限是实体的基于身份的策略与会话策略的交集。使用会话策略授予的权限不能超过担任的角色的基于身份的策略允许的权限。有关角色会话权限的更多信息,请参阅会话策略

³ 最大会话持续时间设置。可以使用 DurationSeconds 参数指定 900 秒 (15 分钟) 到角色的最大会话持续时间设置之间的角色会话持续时间。要了解如何查看您的角色的最大值,请参阅查看角色的最大会话持续时间设置

GetCallerIdentity。无需权限即可执行该操作。如果管理员为您的 IAM 用户或角色添加明确拒绝访问 sts:GetCallerIdentity 操作的策略,您仍然可以执行该操作。不需要权限,因为在拒绝 IAM 用户或角色访问时返回相同的信息。要查看示例响应,请参阅我没有权限执行:iam:DeleteVirtualMFADevice

通过单一登录 (SSO) 登录到控制台。为了支持 SSO,Amazon 可让您调用联合终端节点 (https://signin.aws.amazon.com/federation) 并传递临时安全凭证。终端节点将返回一个令牌,可使用该令牌构建一个让用户直接登录到控制台而无需使用密码的 URL。有关更多信息,请参阅使 SAML 2.0 联合身份用户能够访问 Amazon Web Services Management Console 安全性博客中的和Amazon如何启用对 管理控制台的跨账户访问Amazon。

⁶ 在检索您的临时凭证后,无法将该凭证传递到联合单一登录终端节点以访问 Amazon Web Services Management Console。有关更多信息,请参阅 使自定义身份代理能够访问 Amazon 控制台