

# IAM 临时安全凭证
<a name="id_credentials_temp"></a>

您可以使用 Amazon Security Token Service (Amazon STS) 创建可控制对您的 Amazon 资源的访问的临时安全凭证，并将这些凭证提供给受信任用户。临时安全凭证的工作方式与长期访问密钥凭证的工作方式几乎相同，仅存在以下差异：
+ 顾名思义，临时安全凭证是*短期* 凭证。可将这些凭证的有效时间配置几分钟到几小时。一旦这些凭证到期，Amazon 将不再识别这些凭证或不再允许来自使用这些凭证发出的 API 请求的任何类型的访问。
+ 临时安全凭证不随用户一起存储，而是动态生成并在用户提出请求时提供给用户。临时安全凭证到期时 (甚至之前)，用户可以请求新的凭证，只要请求凭证的用户仍有权这样做。

因此，与长期凭证相比，临时凭证具有以下优势：
+ 您不必随应用程序分配或嵌入长期 Amazon 安全凭证。
+ 可允许用户访问您的 Amazon 资源，而不必为这些用户定义 Amazon 身份。临时凭证是[角色](id_roles.md)和[身份联合验证](id_roles_providers.md)的基础。
+ 临时安全凭证的生命周期较短，因此无需更新或在不再需要这些凭证时显式撤销这些凭证。临时安全凭证到期后无法重复使用。您可指定凭证的有效期，但有最长限期。

## Amazon STS 和 Amazon 区域
<a name="sts-regionalization"></a>

临时安全凭证由 Amazon STS 生成。默认情况下，Amazon STS 是一种全球服务，在 `https://sts.amazonaws.com` 上具有单个终端节点。不过，您也可以选择对任何其他支持的区域中的终端节点进行 Amazon STS API 调用。这可能会将请求发送到地理位置离您较近的区域中的服务器以减少延迟（服务器延迟）。无论您的凭证来自于哪个区域，它们都会在全球范围内起作用。有关更多信息，请参阅 [管理 Amazon Web Services 区域中的 Amazon STS](id_credentials_temp_enable-regions.md)。

## 临时凭证的常见情形
<a name="sts-introduction"></a>

临时凭证在涉及联合身份验证、委派、跨账户访问和 IAM 角色的情形中很有用。

### 联合身份
<a name="id-federation"></a>

您可以在 Amazon 之外的外部系统中管理用户身份，并为从这些系统登录的用户授予访问权限以执行 Amazon 任务和访问您的 Amazon 资源。IAM 支持两种联合身份验证。在两种情况下，身份都存储在 Amazon 外部。区别在于外部系统所处的位置 在您的数据中心内或 Web 上的外部第三方。要比较用于身份联合验证的临时安全凭证的功能，请参阅 [比较 Amazon STS 凭证](id_credentials_sts-comparison.md)。

有关外部身份提供程序的更多信息，请参阅[身份提供程序和 Amazon 中的联合身份验证](id_roles_providers.md)。
+ **OpenID Connect（OIDC）联合身份验证** - 您可让移动或 Web 应用程序的用户使用已知的第三方身份提供者（例如，Login with Amazon、Facebook、Google 或任何 OIDC 2.0 兼容的提供者）登录，您不需要创建自定义的登录代码或管理自己的用户身份。使用 OIDC 联合身份验证可帮助您确保 Amazon Web Services 账户 的安全，因为您不必随应用程序分配长期安全凭证（如 IAM 用户访问密钥）。有关更多信息，请参阅 [OIDC 联合身份验证](id_roles_providers_oidc.md)。

  Amazon STS OIDC 联合身份验证支持 Login with Amazon、Facebook、Google 和任何 OpenID Connect（OIDC）兼容的身份提供者。
**注意**  
有关移动应用程序，我们建议使用 Amazon Cognito。您可以将此服务与面向移动开发的 Amazon 开发工具包搭配使用，为用户创建唯一的身份，并对其进行身份验证，以使其安全地访问您的 Amazon 资源。Amazon Cognito 支持与 Amazon STS 相同的身份提供程序，还支持未经身份验证的（来宾）访问，并允许您在用户登录时迁移用户数据。Amazon Cognito 还提供用于同步用户数据的 API 操作，因此，无论用户在设备间怎样转移，其数据总能得以保留。有关更多信息，请参阅《Amplify 文档》**中的[使用 Amplify 进行身份验证](https://docs.amplify.aws/lib/auth/getting-started/q/platform/js/#authentication-with-amplify)。
+ **SAML 联合身份验证** – 您可以对您的企业网络中的用户进行身份验证，然后为这些用户提供对 Amazon 的访问权限，而无需为其创建新的 Amazon 身份，他们也无需使用不同的登录凭证进行登录。这称为用于临时访问的*单点登录*方法。Amazon STS 支持开放标准 [如安全断言标记语言（SAML）2.0]，这使您可以使用 Microsoft AD FS 来利用您的 Microsoft Active Directory。您还可以使用 SAML 2.0 管理自己的联合身份用户身份解决方案。有关更多信息，请参阅 [SAML 2.0 联合身份验证](id_roles_providers_saml.md)。
  + **自定义联合身份代理** - 您可以使用您企业的身份验证系统来授予对 Amazon 资源的访问权限。有关示例方案，请参阅[使自定义身份凭证代理程序能够访问 Amazon 控制台](id_roles_providers_enable-console-custom-url.md)。
  + **使用 SAML 2.0 的联合** - 您可以使用您企业的身份验证系统和 SAML 来授予对 Amazon 资源的访问权限。有关更多信息以及示例方案，请参阅[SAML 2.0 联合身份验证](id_roles_providers_saml.md)。

### 用于跨账户访问的角色
<a name="role_cross-account"></a>

很多组织均维护多个 Amazon Web Services 账户。利用角色和跨账户访问，您可以在一个账户中定义用户身份，并使用这些身份访问属于您组织的其他账户中的 Amazon 资源。这称为用于临时访问的*委派*方法。有关创建跨账户角色的更多信息，请参阅 [创建角色，向 IAM 用户授予权限](id_roles_create_for-user.md)。要了解您信任区域之外的账户（受信任的企业或账户）中的主体是否有权承担您的角色，请参阅[什么是 IAM Access Analyzer？](https://docs.amazonaws.cn/IAM/latest/UserGuide/what-is-access-analyzer.html)。

### 适用于 Amazon EC2 的 角色
<a name="role_ec2"></a>

如果您在 Amazon EC2 实例上运行一些应用程序，并且这些应用程序需要访问 Amazon 资源，则您可在启动您的实例时为其提供临时安全凭证。这些临时安全凭证对该实例上运行的所有应用程序都可用，因此您无需在该实例上存储任何长期凭证。有关更多信息，请参阅 [使用 IAM 角色向在 Amazon EC2 实例上运行的应用程序授予权限](id_roles_use_switch-role-ec2.md)。

要了解有关 IAM Amazon EC2 角色凭证的更多信息，请参阅《Amazon Elastic Compute Cloud 用户指南》**中的 [Amazon EC2 的 IAM 角色](https://docs.amazonaws.cn/AWSEC2/latest/UserGuide/iam-roles-for-amazon-ec2.html)。

### 其他 Amazon 服务
<a name="other-services"></a>

可使用临时安全凭证访问大多数 Amazon 服务。有关接受临时安全凭证的服务的列表，请参阅[使用 IAM 的 Amazon 服务](reference_aws-services-that-work-with-iam.md)。

## 使用临时凭证的示例应用程序
<a name="id_credentials_temp_sample-apps"></a>

您可以使用 Amazon Security Token Service (Amazon STS) 创建可控制对您的 Amazon 资源的访问的临时安全凭证，并将这些凭证提供给可信用户。有关 Amazon STS 的更多信息，请参阅 [IAM 临时安全凭证](#id_credentials_temp)。要了解如何使用 Amazon STS 管理临时安全凭证，可下载以下示例应用程序，其中实现完整的示例方案：
+ [使用 Windows Active Directory、ADFS 和 SAML 2.0 启用 Amazon 的联合身份验证](https://www.amazonaws.cn/blogs/security/enabling-federation-to-aws-using-windows-active-directory-adfs-and-saml-2-0/)。演示如何使用 Windows Active Directory（AD）、Active Directory 联合身份验证服务（ADFS）2.0 和 SAML（安全断言标记语言）2.0，通过企业联合身份验证将访问权限授予 Amazon。
+ [使自定义身份凭证代理程序能够访问 Amazon 控制台](id_roles_providers_enable-console-custom-url.md). 说明如何创建启用单点登录（SSO）的自定义联合身份验证代理，以使现有 Active Directory 用户能够登录到 Amazon Web Services 管理控制台。
+ [如何使用 Shibboleth 单点登录到 Amazon Web Services 管理控制台。](https://www.amazonaws.cn/blogs/security/how-to-use-shibboleth-for-single-sign-on-to-the-aws-management-console/)介绍如何使用 [Shibboleth](http://shibboleth.net/) 和 [SAML](id_roles_providers_saml.md) 为用户提供对 Amazon Web Services 管理控制台的单点登录 (SSO) 访问权限。

### OIDC 联合身份验证示例
<a name="sts-sample-apps-wif"></a>

下面的示例应用程序说明了如何使用 Login with Amazon、Amazon Cognito、Facebook 或 Google 等提供者的 OIDC 联合身份验证。您可以将从这些提供商处获得的身份验证信息作为临时 Amazon 安全凭证以访问 Amazon 服务。
+ [Amazon Cognito 教程](https://docs.amazonaws.cn/cognito/latest/developerguide/tutorials.html) — 建议您将 Amazon Cognito 与适用于移动开发的 Amazon SDK 搭配使用。Amazon Cognito 是管理适用于移动应用程序的身份的最简单方式，它提供了同步和跨设备身份等额外功能。有关 Amazon Cognito 的更多信息，请参阅《Amplify 文档》**中的[使用 Amplify 进行身份验证](https://docs.amplify.aws/lib/auth/getting-started/q/platform/js/#authentication-with-amplify)。

## 有关临时安全凭证的其他资源
<a name="id_credentials_temp_related-topics"></a>

以下场景和应用可指导您使用临时安全凭证：
+ [如何将 Amazon STS SourceIdentity 与您的身份提供者](https://www.amazonaws.cn/blogs/security/how-to-integrate-aws-sts-sourceidentity-with-your-identity-provider/)集成。本文向您介绍当使用 Okta、Ping 或 OneLogin 作为 IdP 时如何设置 Amazon STS `SourceIdentity` 属性。
+  [OIDC 联合身份验证](id_roles_providers_oidc.md)。本节讨论如何在使用 OIDC 联合身份验证和 `AssumeRoleWithWebIdentity` API 时配置 IAM 角色。
+ [使用 MFA 保护 API 访问](id_credentials_mfa_configure-api-require.md). 本主题介绍如何使用角色要求多重身份验证 (MFA)，以保护您账户中的敏感 API 操作。

有关 Amazon 中的策略和权限的更多信息，请参阅以下主题：
+ [适用于 Amazon 资源的 Access Management](access.md)
+ [策略评估逻辑](reference_policies_evaluation-logic.md).
+ *Amazon Simple Storage Service 用户指南*中的[管理对 Amazon S3 资源的访问权限](https://docs.amazonaws.cn/AmazonS3/latest/userguide/s3-access-control.html)。
+  要了解您信任区域之外的账户（受信任的企业或账户）中的主体是否有权承担您的角色，请参阅[什么是 IAM Access Analyzer？](https://docs.amazonaws.cn/IAM/latest/UserGuide/what-is-access-analyzer.html)。