IAM 临时安全凭证 - AWS Identity and Access Management

IAM 临时安全凭证

您可以使用 AWS Security Token Service (AWS STS) 创建可控制对您的 AWS 资源的访问的临时安全凭证,并将这些凭证提供给受信任用户。临时安全凭证的工作方式与长期访问密钥凭证的工作方式几乎相同,仅存在以下差异:

  • 顾名思义,临时安全凭证是短期 凭证。可将这些凭证的有效时间配置几分钟到几小时。一旦这些凭证到期,AWS 将不再识别这些凭证或不再允许来自使用这些凭证发出的 API 请求的任何类型的访问。

  • 临时安全凭证不随用户一起存储,而是动态生成并在用户提出请求时提供给用户。临时安全凭证到期时 (甚至之前),用户可以请求新的凭证,只要请求凭证的用户仍有权这样做。

因此,与长期凭证相比,临时凭证具有以下优势:

  • 您不必随应用程序分配或嵌入长期 AWS 安全凭证。

  • 可允许用户访问您的 AWS 资源,而不必为这些用户定义 AWS 身份。临时凭证是角色身份联合验证的基础。

  • 临时安全凭证的生命周期较短,因此无需更新或在不再需要这些凭证时显式撤销这些凭证。临时安全凭证到期后无法重复使用。您可指定凭证的有效期,但有最长限期。

AWS STS 和 AWS 区域

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

临时凭证的常见情形

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

联合身份

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

有关外部身份提供程序的更多信息,请参阅身份提供程序和联合身份验证

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

    AWS STS OIDC 联合身份验证支持 Login with Amazon、Facebook、Google 和任何 OpenID Connect(OIDC)兼容的身份提供者。

    注意

    有关移动应用程序,我们建议使用 Amazon Cognito。您可以将此服务与面向移动开发的 AWS 开发工具包搭配使用,为用户创建唯一的身份,并对其进行身份验证,以使其安全地访问您的 AWS 资源。Amazon Cognito 支持与 AWS STS 相同的身份提供程序,还支持未经身份验证的(来宾)访问,并允许您在用户登录时迁移用户数据。Amazon Cognito 还提供用于同步用户数据的 API 操作,因此,无论用户在设备间怎样转移,其数据总能得以保留。有关更多信息,请参阅《Amplify 文档》中的使用 Amplify 进行身份验证

  • SAML 联合身份验证 – 您可以对您的企业网络中的用户进行身份验证,然后为这些用户提供对 AWS 的访问权限,而无需为其创建新的 AWS 身份,他们也无需使用不同的登录凭证进行登录。这称为用于临时访问的单点登录方法。AWS STS 支持开放标准 [如安全断言标记语言(SAML)2.0],这使您可以使用 Microsoft AD FS 来利用您的 Microsoft Active Directory。您还可以使用 SAML 2.0 管理自己的联合身份用户身份解决方案。有关更多信息,请参阅 SAML 2.0 联合身份验证

用于跨账户访问的角色

很多组织均维护多个 AWS 账户。利用角色和跨账户访问,您可以在一个账户中定义用户身份,并使用这些身份访问属于您组织的其他账户中的 AWS 资源。这称为用于临时访问的委派方法。有关创建跨账户角色的更多信息,请参阅 创建向 IAM 用户委派权限的角色。要了解您信任区域之外的账户(受信任的企业或账户)中的主体是否有权承担您的角色,请参阅什么是 IAM Access Analyzer?

适用于 Amazon EC2 的 角色

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

要了解有关 IAM Amazon EC2 角色凭证的更多信息,请参阅《Amazon Elastic Compute Cloud 用户指南》中的 Amazon EC2 的 IAM 角色

其他 AWS 服务

可使用临时安全凭证访问大多数 AWS 服务。有关接受临时安全凭证的服务的列表,请参阅使用 IAM 的AWS服务

使用临时凭证的示例应用程序

您可以使用 AWS Security Token Service (AWS STS) 创建可控制对您的 AWS 资源的访问的临时安全凭证,并将这些凭证提供给可信用户。有关 AWS STS 的更多信息,请参阅 IAM 临时安全凭证。要了解如何使用 AWS STS 管理临时安全凭证,可下载以下示例应用程序,其中实现完整的示例方案:

OIDC 联合身份验证示例

下面的示例应用程序说明了如何使用 Login with Amazon、Amazon Cognito、Facebook 或 Google 等提供者的 OIDC 联合身份验证。您可以将从这些提供商处获得的身份验证信息作为临时 AWS 安全凭证以访问 AWS 服务。

  • Amazon Cognito 教程 — 建议您将 Amazon Cognito 与适用于移动开发的 AWS SDK 搭配使用。Amazon Cognito 是管理适用于移动应用程序的身份的最简单方式,它提供了同步和跨设备身份等额外功能。有关 Amazon Cognito 的更多信息,请参阅《Amplify 文档》中的使用 Amplify 进行身份验证

以下场景和应用可指导您使用临时安全凭证:

有关 AWS 中的策略和权限的更多信息,请参阅以下主题: