AWS Identity and Access Management
用户指南
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 Amazon AWS 入门

请求临时安全凭证

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

要调用 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)。

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

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

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

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

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

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

例 请求

https://sts.amazonaws.com.cn/ ?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=1800 &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 请求来了解如何签署请求。

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

例 响应

<AssumeRoleResponse xmlns="https://sts.amazonaws.com.cn/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 获得的令牌。

  • 持续时间,它指定临时安全凭证的持续时间。可以使用 DurationSeconds 参数指定 900 秒 (15 分钟) 到角色的最大会话持续时间设置之间的角色会话持续时间。要了解如何查看您的角色的最大值,请参阅查看角色的最大会话持续时间设置。如果未传递该参数,临时凭证将在 1 小时后过期。该 API 中的 DurationSeconds 参数与用于指定控制台会话持续时间的 SessionDuration HTTP 参数不同。可以在发送到联合终端节点的控制台登录令牌请求中使用 SessionDuration HTTP 参数。有关更多信息,请参阅 创建一个使联合身份用户能够访问 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 断言的软件集成在一起的组织,该 API 操作是非常有用的。此类集成提供有关用户身份和权限 (如 Active Directory 联合身份验证服务或 Shibboleth) 的信息。有关更多信息,请参阅 关于基于 SAML 2.0 的联合身份验证

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

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

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

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

  • 持续时间,它指定临时安全凭证的持续时间。可以使用 DurationSeconds 参数指定 900 秒 (15 分钟) 到角色的最大会话持续时间设置之间的角色会话持续时间。要了解如何查看您的角色的最大值,请参阅查看角色的最大会话持续时间设置。如果未传递该参数,临时凭证将在 1 小时后过期。该 API 中的 DurationSeconds 参数与用于指定控制台会话持续时间的 SessionDuration HTTP 参数不同。可以在发送到联合终端节点的控制台登录令牌请求中使用 SessionDuration HTTP 参数。有关更多信息,请参阅 创建一个使联合身份用户能够访问 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,其默认有效期大大增加 (12 小时而不是 1 小时)。此外,您还可以使用 DurationSeconds 参数指定临时安全凭证保持有效的持续时间。生成的凭证在指定的持续时间内有效,即,900 秒 (15 分钟) 到 129,600 秒 (36 小时) 之间。较长的有效期有助于减少对 AWS 的调用次数,因为您不需要频繁获取新凭证。有关更多信息,请参阅 请求临时安全凭证

在发出请求以获取联合用户的临时安全凭证时,您可以使用特定用户身份 (IAM 用户) 的凭证发出请求。临时安全凭证的权限是由在调用 GetFederationToken 时传递的 IAM 策略决定的。

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.cn/ ?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=1800 &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.cn/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,并具有希望允许 Susan 访问的 Amazon S3 存储桶。Susan 的临时安全凭证不包括该存储桶的策略。在这种情况下,您需要确保该存储桶的策略具有与 Susan 的 ARN (如 arn:aws-cn:sts::111122223333:federated-user/Susan) 匹配的 ARN。

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

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

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

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

例 请求

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

注意

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

例 响应

<GetSessionTokenResponse xmlns="https://sts.amazonaws.com.cn/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.cn/ ?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 操作的功能。要了解在担任角色以请求临时安全凭证时使用的各种方法,请参阅使用 IAM 角色

比较 API 选项

AWS STS API 谁能调用 凭证生命周期 (最小值 | 最大值 | 默认值) MFA 支持¹ 所传递的策略支持² 对生成的临时凭证的限制
AssumeRole IAM 用户或目前拥有临时安全凭证的用户 15 分 | 最大会话持续时间设置³ | 1 小时

无法调用 GetFederationTokenGetSessionToken

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

无法调用 GetFederationTokenGetSessionToken

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

无法调用 GetFederationTokenGetSessionToken

GetFederationToken IAM 用户或 AWS 账户根用户

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

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

无法直接调用 IAM API 操作。

无法调用除 GetCallerIdentity 之外的 AWS STS API 操作。

允许对控制台进行 SSO。⁴

GetSessionToken IAM 用户或根用户

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

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

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

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

不允许对控制台进行 SSO。⁵

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

² 所传递的策略支持. 您可以将 IAM 策略作为参数传递给大多数 AWS STS API 操作,以便与影响用户的其他策略 (如果有) 一起使用。通过将策略作为参数,可以帮助您确定允许用户使用 API 调用生成的临时凭证执行哪些操作。有关更多信息,请参阅以下主题:

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

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

⁵ 检索临时凭证后,您可以通过将凭证传递到 https://signin.aws.amazon.com/federation 上的联合身份验证单一登录终端节点来访问 AWS 管理控制台。有关更多信息,请参阅 创建一个使联合身份用户能够访问 AWS 管理控制台 (自定义联合代理) 的 URL