

# 比较 AWS STS 凭证
<a name="id_credentials_sts-comparison"></a>

下表比较了 AWS STS 中返回临时安全凭证的 API 操作的功能。要了解在担任角色以请求临时安全凭证时使用的各种方法，请参阅[担任角色的方法](id_roles_manage-assume.md)。要了解允许您传递会话标签的不同 AWS STS API 操作，请参阅[在 AWS STS 中传递会话标签](id_session-tags.md)。

**注意**  
您可以将 AWS STS API 调用发送到全球终端节点或某个区域终端节点。如果您选择更靠近您的终端节点，则可减少延迟并改善 API 调用的性能。如果您不再能与原始终端节点进行通信，也可选择将调用定向到替代的区域终端节点。如果您使用某种 AWS SDK，请先使用该开发工具包的方法指定一个区域，然后再进行 API 调用。如果您正在手动构建 HTTP API 请求，则必须自行将请求定向到正确的终端节点。有关更多信息，请参阅[*区域和终端节点*和 [管理 AWS 区域中的 AWS STS](id_credentials_temp_enable-regions.md) 的 AWS STS 部分](https://docs.aws.amazon.com/general/latest/gr/rande.html#sts_region)。


|  **AWS STS API**  |  **谁能调用**  |  **凭证生命周期 (最小值 \$1 最大值 \$1 默认值)**  |  **MFA 支持**¹  |  **会话策略支持**²  |  **对生成的临时凭证的限制**  | 
| --- | --- | --- | --- | --- | --- | 
|  [AssumeRole](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRole.html)  | 具有现有临时安全凭证的 IAM 用户或 IAM 角色  | 15 分钟 \$1 最大会话持续时间设置³ \$1 1 小时  | 支持  | 是 |  无法调用 `GetFederationToken` 或 `GetSessionToken`。  | 
|  [AssumeRoleWithSAML](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRoleWithSAML.html)  | 任何用户；发起人必须传递 SAML 身份验证响应，指示身份验证来自已知的身份提供程序 | 15 分钟 \$1 最大会话持续时间设置³ \$1 1 小时  | 否 | 是 |  无法调用 `GetFederationToken` 或 `GetSessionToken`。  | 
|  [AssumeRoleWithWebIdentity](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRoleWithWebIdentity.html)  | 任何用户；发起人必须传递 OIDC 兼容的 JWT 令牌，指示身份验证来自已知的身份提供者 | 15 分钟 \$1 最大会话持续时间设置³ \$1 1 小时  | 否 | 是 |  无法调用 `GetFederationToken` 或 `GetSessionToken`。  | 
| [GetFederationToken](https://docs.aws.amazon.com/STS/latest/APIReference/API_GetFederationToken.html) | IAM 用户或 AWS 账户根用户 |  IAM 用户：15 分钟 \$1 36 小时 \$1 12 小时 根用户：15 分钟 \$1 1 小时 \$1 1 小时  | 否  | 是  |  无法使用 AWS CLI 或 AWS API 调用 IAM 操作。此限制不适用于控制台会话。 无法调用除 `GetCallerIdentity` 之外的 AWS STS 操作。⁴ 允许通过 SSO 登录到控制台。⁵  | 
| [GetSessionToken](https://docs.aws.amazon.com/STS/latest/APIReference/API_GetSessionToken.html) | IAM 用户或 AWS 账户根用户 |  IAM 用户：15 分钟 \$1 36 小时 \$1 12 小时 根用户：15 分钟 \$1 1 小时 \$1 1 小时  | 是  | 否  |  除非请求附带了 MFA 信息，否则无法调用 IAM API 操作。 无法调用除 `AssumeRole` 或 `GetCallerIdentity` 之外的 AWS STS API 操作。 不允许通过 SSO 登录到控制台。⁶  | 

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

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

³ **最大会话持续时间设置**。可以使用 `DurationSeconds` 参数指定 900 秒 (15 分钟) 到角色的最大会话持续时间设置之间的角色会话持续时间。要了解如何查看您的角色的最大值，请参阅[更新角色的最长会话持续时间](id_roles_update-role-settings.md#id_roles_update-session-duration)。

⁴ **GetCallerIdentity**。无需权限即可执行该操作。如果管理员为您的 IAM 用户或角色添加明确拒绝访问 `sts:GetCallerIdentity` 操作的策略，您仍然可以执行该操作。不需要权限，因为在拒绝 IAM 用户或角色访问时返回相同的信息。要查看示例响应，请参阅[我没有权限执行：iam:DeleteVirtualMFADevice](troubleshoot.md#troubleshoot_general_access-denied-delete-mfa)。

⁵ **通过单一登录 (SSO) 登录到控制台**。为了支持 SSO，AWS 可让您调用联合终端节点 (`https://signin.aws.amazon.com/federation`) 并传递临时安全凭证。终端节点将返回一个令牌，可使用该令牌构建一个让用户直接登录到控制台而无需使用密码的 URL。有关更多信息，请参阅[使 SAML 2.0 联合主体能够访问 AWS 管理控制台](id_roles_providers_enable-console-saml.md) 安全性博客中的[和AWS如何启用对 ](https://aws.amazon.com/blogs/security/how-to-enable-cross-account-access-to-the-aws-management-console) 管理控制台的跨账户访问AWS。

⁶ 在检索您的临时凭证后，无法将该凭证传递到联合单一登录终端节点以访问 AWS 管理控制台。有关更多信息，请参阅 [使自定义身份凭证代理程序能够访问 AWS 控制台](id_roles_providers_enable-console-custom-url.md)。