AWS Identity and Access Management
用户指南
AWS 服务或AWS文档中描述的功能,可能因地区/位置而异。请点击 Amazon AWS 入门,可查看中国地区的具体差异

请求临时安全凭证

要请求临时安全凭证,您可使用 AWS STS API 操作。您可以使用 AWS Security Token Service (AWS STS) 创建可控制对您的 AWS 资源的访问的临时安全凭证,并将这些凭证提供给可信用户。有关 AWS STS 的更多信息,请参阅 临时安全凭证

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

AWS STS API 操作返回由访问密钥和会话令牌组成的临时安全凭证。访问密钥由访问密钥 ID 和私有密钥组成。用户 (或用户所运行的应用程序) 可使用这些凭证访问您的资源。创建凭证后,这些凭证将与一个 IAM 访问控制策略关联,该策略限制用户可在使用这些凭证时执行什么操作。有关更多信息,请参阅 使用临时安全凭证以请求对 AWS 资源的访问权限

重要

虽然临时安全凭证有效期较短,但具有临时访问权限的用户可对您的 AWS 资源做持久性更改。例如,如果具有临时访问权限的用户启动 Amazon EC2 实例,则即使在该用户的临时安全凭证到期后,该实例也可继续运行,并使您的 AWS 账户产生相应费用。

注意

STS API 返回的安全令牌的大小不是固定的。我们强烈建议不要假设最大大小。截至到撰写本文为止,通常大小都低于 4096 字节,但这个数字可能发生变化。此外,未来 AWS 更新后,可能需要更大的大小。

通过 AWS 区域使用 AWS STS

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

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

AssumeRole - 通过自定义身份代理进行跨账户委托和联合

此 API 操作对于允许现有 IAM 用户访问其没有访问权限的 AWS 资源(如另一个 AWS 账户中的资源)很有用。此外,现有 IAM 用户可使用它来暂时获得特定访问权(例如,用于提供多重验证 (MFA))。您必须使用现有 IAM 用户凭证调用此 API。有关更多信息,请参阅 创建向 IAM 用户委派权限的角色配置受 MFA 保护的 API 访问

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

  • 应用程序应承担的角色的 Amazon 资源名称 (ARN)。

  • 持续时间,它规定临时安全凭证的有效期。最短时间为 15 分钟 (900 秒),最长时间 (默认值) 为 1 小时 (3600 秒)。仅在希望临时凭证在 1 小时之内到期时需要传递此值。这独立于您可能使用这些凭证请求的控制台会话的持续时间。对控制台登录令牌的联合终端节点的请求将采用 SessionDuration 参数,此参数指定控制台会话的最大时间长度 (它独立于该 API 上的 DurationSeconds 参数)。有关更多信息,请参阅 创建一个使联合身份用户能够访问 AWS 管理控制台 (自定义联合代理) 的 URL

  • 角色会话名称是一个可用来标识会话的字符串值。CloudTrail 可捕获和记录此值,以便在审核过程中帮助您区分角色用户。

  • 根据需要,还可传递策略 (JSON 格式)。此策略可结合与角色关联的策略。如果指定,则权限为已授予给角色的权限和此策略授予的权限的交集。除了角色权限策略已设置的限制以外,您还可以使用该策略进一步限制与临时凭证关联的访问权限。注意,此策略不能用于提升权限,超出允许所担任的角色可访问的内容。

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

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

下例展示了使用 AssumeRole 的示例请求和响应。在此例中,请求中包括会话名称 Bob。Policy 参数中包括一个 JSON 文档,其中规定所得的证书仅有权访问 Amazon S3。

例 请求

https://sts.amazonaws.com/ ?Version=2011-06-15 &Action=AssumeRole &RoleSessionName=Bob &RoleArn=arn:aws-cn::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=3600 &ExternalId=123ABC &AUTHPARAMS

注意

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

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

此外,请注意,前述示例中的 AUTHPARAMS 参数表示您必须随附于 AWS HTTP API 请求中的身份验证信息 (即签名) 的占位符。建议使用 AWS 软件开发工具包创建 API 请求,这样做的一个好处是软件开发工具包将为您处理请求签名。如果您必须手动创建和签署 API 请求,请转到 Amazon Web Services 一般参考 中的使用签名版本 4 签署 AWS 请求来了解如何签署请求。

此 API 支持 DurationSeconds 的参数,该参数指定临时凭证的有效持续时间。该持续时间与可能使用这些临时凭证请求的控制台会话的持续时间不同。您可以通过调用联合终端节点并提供临时凭证来请求控制台登录令牌,以获得控制台的登录令牌。此控制台请求可使用另一个 SessionDuration 参数,最长为 12 个小时。有关更多信息,请参阅 创建一个使联合身份用户能够访问 AWS 管理控制台 (自定义联合代理) 的 URL

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

例 响应

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

注意

AssumeRole 将策略以打包格式存储。AssumeRole 返回最大容量百分比值,以便您可以调整调用参数。有关策略大小约束的更多信息,请参阅 AWS Security Token Service API Reference 中的 AssumeRole

AssumeRoleWithWebIdentity - 通过基于 Web 的身份提供商进行联合

此 API 为通过公共身份提供商 (如 Login with Amazon、Facebook、Google 或任何 OpenID Connect (OIDC) 兼容的身份提供商) 进行身份验证的联合身份用户返回一组临时安全凭证。该 API 对于创建某类移动应用程序或基于客户端的 Web 应用程序很有用,此类应用程序需要访问 AWS,但用户没有自己的 AWS 或 IAM 身份。有关更多信息,请参阅 关于 Web 联合身份验证

注意

我们建议您使用 Amazon Cognito 和适用于移动开发的 AWS 软件开发工具包附带的 Amazon Cognito 证书提供程序,而不是直接调用 AssumeRoleWithWebIdentity。有关更多信息,请参阅下列内容:

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

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

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

  • 持续时间,它规定临时安全凭证的有效期。最短时间为 15 分钟 (900 秒),最长时间 (默认值) 为 1 小时 (3600 秒)。仅在希望临时凭证在 1 小时之内到期时需要传递此值。这独立于您可能使用这些凭证请求的控制台会话的持续时间。对控制台登录令牌的联合终端节点的请求将采用 SessionDuration 参数,此参数指定控制台会话的最大时间长度 (它独立于该 API 上的 DurationSeconds 参数)。有关更多信息,请参阅 创建一个使联合身份用户能够访问 AWS 管理控制台 (自定义联合代理) 的 URL

  • 角色会话名称是一个可用来标识会话的字符串值。CloudTrail 可捕获和记录此值,以便在审核过程中帮助您区分角色用户。

  • 根据需要,还可传递策略 (JSON 格式)。此策略可结合与角色关联的策略。如果指定,则权限为已授予给角色的权限和此策略授予的权限的交集。除了角色权限策略已设置的限制以外,您还可以使用该策略进一步限制与临时凭证关联的访问权限。注意,此策略不能用于提升权限,超出允许所担任的角色可访问的内容。

    注意

    由于对 AssumeRoleWithWebIdentity 的调用未签名 (加密),因此仅当该请求没有通过不受信任的中介 (该中介可以更改策略以删除限制) 传输时,您才能包含此可选策略。

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

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

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

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

具有临时安全凭证时,可使用这些证书调用 AWS API。此过程与使用长期安全凭证调用 AWS API 相同,但必须包含会话令牌,以便 AWS 能够确认临时安全凭证有效。

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

AssumeRoleWithSAML - 通过与 SAML 2.0 兼容的企业身份提供商进行联合

此 API 将返回一组用于联合身份用户的临时安全凭证,这些用户经过了您组织的现有身份验证系统的验证,并使用 SAML 2.0 (安全断言标记语言) 将身份验证和授权信息传递到 AWS。对于已将自己的身份系统 (如 Windows Active Directory 或 OpenLDAP) 与可以生成 SAML 断言的软件相集成,以提供用户身份和权限 (如 Active Directory 联合身份验证服务或 Shibboleth) 相关信息的组织而言,此 API 非常有用。有关更多信息,请参阅 关于基于 SAML 2.0 的联合身份验证

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

  • 应用程序应承担的角色的 Amazon 资源名称 (ARN)。

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

  • 采用 base-64 编码的 SAML 断言,由 SAML 身份提供商在其针对应用程序登录请求做出的身份验证响应中提供。

  • 持续时间,它规定临时安全凭证的有效期。最大值 (且为默认值) 为 1 小时 (3600 秒)。仅在希望临时凭证在 1 小时之内到期时需要传递此值。证书的最短持续时间为 15 分钟 (900 秒)。这独立于您可能使用这些凭证请求的控制台会话的持续时间。对控制台登录令牌的联合终端节点的请求将采用 SessionDuration 参数,此参数指定控制台会话的最大时间长度 (它独立于该 API 上的 DurationSeconds 参数)。有关更多信息,请参阅 创建一个使联合身份用户能够访问 AWS 管理控制台 (自定义联合代理) 的 URL

  • 策略 (JSON 格式)。此策略可结合与角色关联的策略。如果指定,则权限为已授予给角色的权限和此策略授予的权限的交集。除了角色权限策略已设置的限制以外,您还可以使用该策略进一步限制与临时凭证关联的访问权限。注意,此策略不能用于提升权限,超出允许所担任的角色可访问的内容。

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

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

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

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

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

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

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

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

具有临时安全凭证时,可使用这些证书调用 AWS API。此过程与使用长期安全凭证调用 AWS API 相同,但必须包含会话令牌,以便 AWS 能够确认临时安全凭证有效。

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

GetFederationToken - 通过自定义身份代理进行联合

此 API 为联合身份用户返回一组临时安全凭证。该 API 不同于 AssumeRole,其默认有效期大大延长 (高达 36 小时而非 1 小时)。更长的有效期有助于减少调用 AWS 的次数,因为您无需频繁地获取新证书。有关更多信息,请参阅 请求临时安全凭证

GetFederationToken 调用返回由安全令牌、访问密钥、私有密钥和到期时间组成的临时安全凭证。如果要在组织内管理权限 (例如,使用代理应用程序分配权限),则可使用 GetFederationToken。要查看使用 GetFederationToken 的示例应用程序,请参阅 AWS Sample Code & Libraries 中的 Identity Federation Sample Application for an Active Directory Use Case

下例展示了使用 GetFederationToken 的示例请求和响应。在此例中,该请求包括联合身份用户 Jean 的名称。Policy 参数中包括一个 JSON 文档,其中规定所得的证书仅有权访问 Amazon S3。除了临时安全凭证之外,该响应还包括联合身份用户的 Amazon 资源名称 (ARN) 和证书的到期时间。

例 请求

https://sts.amazonaws.com/ ?Version=2011-06-15 &Action=GetFederationToken &Name=Jean &Policy=%7B%22Version%22%3A%222012-10-17%22%2C%22Statement%22%3A%5B%7B%22Sid%22%3A%22Stmt1%22%2C%22Effect%22%3A%22Allow%22%2C%22Action%22%3A%22s3%3A*%22%2C%22Resource%22%3A%22*%22%7D%5D%7D &DurationSeconds=3600 &AUTHPARAMS

注意

上例中显示的策略值是该策略的 URL 编码版本:

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

此外,请注意,前述示例中的 &AUTHPARAMS 参数表示您必须随附于 AWS HTTP API 请求中的身份验证信息 (即签名) 的占位符。建议使用 AWS 软件开发工具包创建 API 请求,这样做的一个好处是软件开发工具包将为您处理请求签名。如果您必须手动创建和签署 API 请求,请转到 Amazon Web Services 一般参考 中的使用签名版本 4 签署 AWS 请求来了解如何签署请求。

例 响应

<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>2011-07-15T23:28:33.359Z</Expiration> <AccessKeyId>AKIAIOSFODNN7EXAMPLE;</AccessKeyId> </Credentials> <FederatedUser> <Arn>arn:aws-cn:sts::123456789012:federated-user/Jean</Arn> <FederatedUserId>123456789012:Jean</FederatedUserId> </FederatedUser> <PackedPolicySize>6</PackedPolicySize> </GetFederationTokenResult> <ResponseMetadata> <RequestId>c6104cbe-af31-11e0-8154-cbc7ccf896c7</RequestId> </ResponseMetadata> </GetFederationTokenResponse>

注意

GetFederationToken 将策略以打包格式存储。该操作返回占最大容许容量百分比形式的容量,以便您可以调整调用参数。有关策略大小约束的更多信息,请参阅 AWS Security Token Service API Reference 中的 GetFederationToken

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

举例来说,假设您的 AWS 账户号码为 111122223333,您想让苏珊访问您的 Amazon S3 存储桶,但是她的临时安全凭证并不包括该存储桶的策略,则您需要确保该存储桶有一个和苏珊的 ARN 相匹配的 ARN 的策略,如 arn:aws-cn:sts::111122223333:federated-user/Susan

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

此 API 向现有 IAM 用户返回一组临时安全证书。它对提高安全性非常有用,例如,仅允许在已针对 IAM 用户启用 MFA 的情况下发出 AWS 请求。由于这些凭证是临时性的,因此当有 IAM 用户通过安全性较低的环境 (如移动设备或 Web 浏览器) 访问您的资源时,这些凭证可提高安全性。有关更多信息,请参阅 AWS Security Token Service API Reference 中的请求临时安全凭证GetSessionToken

默认情况下,IAM 用户的临时安全凭证有效期长达 12 小时,但是您可申请短至 15 分钟,长至 36 小时的有效期。出于安全考虑,AWS 账户根用户的令牌有效期仅为一小时。

GetSessionToken 返回由安全令牌、访问密钥 ID 和秘密访问密钥组成的临时安全凭证。下例展示了使用 GetSessionToken 的示例请求和响应。响应也包括了临时安全凭证的过期时间。

例 请求

https://sts.amazonaws.com/ ?Version=2011-06-15 &Action=GetSessionToken &DurationSeconds=3600 &AUTHPARAMS

注意

前述示例中的 &AUTHPARAMS 参数表示您必须随附于 AWS HTTP API 请求中的身份验证信息 (即签名) 的占位符。建议使用 AWS 软件开发工具包创建 API 请求,这样做的一个好处是软件开发工具包将为您处理请求签名。如果您必须手动创建和签署 API 请求,请转到 Amazon Web Services 一般参考 中的使用签名版本 4 签署 AWS 请求来了解如何签署请求。

例 响应

<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 值用于 AWS 多重身份验证 (MFA) 验证。如果所提供的值有效,AWS STS 将提供包含 MFA 验证状态的临时安全凭证,以使这些临时安全凭证可用于访问受 MFA 保护的 API 操作或 AWS 网站,前提是 MFA 身份验证有效。

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

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

注意

可将对 AWS STS 的调用发送到全局终端节点或您为其激活 AWS 账户的任意区域终端节点。有关更多信息,请参阅区域和终端节点 的 AWS STS 部分

此外,请注意,前述示例中的 &AUTHPARAMS 参数表示您必须随附于 AWS HTTP API 请求中的身份验证信息 (即签名) 的占位符。建议使用 AWS 软件开发工具包创建 API 请求,这样做的一个好处是软件开发工具包将为您处理请求签名。如果您必须手动创建和签署 API 请求,请转到 Amazon Web Services 一般参考 中的使用签名版本 4 签署 AWS 请求来了解如何签署请求。

比较 AWS STS API

下表比较了 AWS STS 中返回临时安全凭证的操作 (API) 的功能。

比较 API 选项

AWS STS API 谁能调用 证书有效期 (最小/最大/默认) MFA 支持* 所传递的策略支持* 对生成的临时凭证的限制
AssumeRole IAM 用户或目前拥有临时安全凭证的用户 15 分钟/1 小时/1 小时

无法调用 GetFederationTokenGetSessionToken

AssumeRoleWithSAML 任何用户;发起人必须传递 SAML 身份验证响应,指示身份验证来自已知的身份提供商 15 分钟/1 小时/1 小时

无法调用 GetFederationTokenGetSessionToken

AssumeRoleWithWebIdentity 任何用户;发起人必须传递 Web 身份令牌,指示身份验证来自已知的身份提供商 15 分钟/1 小时/1 小时

无法调用 GetFederationTokenGetSessionToken

GetFederationToken IAM 用户或 AWS 账户根用户

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

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

无法直接调用 IAM API。

允许对控制台进行 SSO。*

无法调用 AWS STS API,GetCallerIdentity 除外。

GetSessionToken IAM 用户或根用户

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

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

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

无法调用 AWS STS API,AssumeRoleGetCallerIdentity 除外。

禁止对控制台进行单点登录 (SSO),但获得密码的任何用户 (根用户或 IAM 用户) 都可以登录控制台。*