身份提供程序和联合身份验证 - Amazon Identity and Access Management
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

身份提供程序和联合身份验证

如果您已管理 Amazon 外部的用户身份,则可以使用身份提供者,而不必在 Amazon Web Services 账户 中创建 IAM 用户。利用身份提供程序 (IdP),您可以管理 Amazon 外部的用户身份,并向这些外部用户身份授予使用您账户中的 Amazon 资源的权限。如果您的组织已有自己的身份系统(如企业用户目录),这将十分有用。如果要创建需要访问 Amazon 资源的移动应用程序或 Web 应用程序,这也十分有用。

外部 IdP 可以使用 OpenID Connect(OIDC)SAML 2.0(安全断言标记语言 2.0)向 Amazon 提供身份信息。知名的 OIDC 身份提供商的示例有:Login with Amazon、Facebook 和 Google。知名的 SAML 身份提供商的示例有:Shibboleth 和 Active Directory 联合身份验证服务。

注意

作为安全最佳实践,我们建议您使用外部 SAML 身份提供者在 IAM Identity Center 中管理人类用户,而不是在 IAM 中使用 SAML 联合身份验证。要了解需要使用 IAM 用户的特定情况,请参阅 何时创建 IAM 用户(而非角色)

使用身份提供商时,您不必创建自定义登录代码或管理自己的用户身份。IdP 将向您提供它们。您的外部用户通过 IdP 登录,您可以向这些外部身份授予使用您的账户中的 Amazon 资源的权限。身份提供者可帮助您确保 Amazon Web Services 账户 的安全,因为您不必再在应用程序中分配或嵌入长期安全凭证(如访问密钥)。

本指南涵盖了 IAM 联合身份验证。IAM Identity Center 或 Amazon Cognito 可能会更好地支持您的用例。以下摘要和表格概述了您的用户可以用来获得对 Amazon 资源的联合访问权限的方法。

账户类型 对……的访问管理 支持的身份源

使用 IAM Identity Center 的联合身份验证

由 Amazon Organizations 管理的多个账户

您的人力的人类用户

  • SAML 2.0

  • 托管式 Active Directory

  • Identity Center 目录

使用 IAM 的联合身份验证

单一独立账户

  • 短期、小规模部署中的人类用户

  • 机器用户

  • SAML 2.0

  • OIDC

使用 Amazon Cognito 身份池的联合身份验证

任何

需要 IAM 授权才能访问资源的应用程序的用户

  • SAML 2.0

  • OIDC

  • 选择 OAuth 2.0 社交身份提供者

使用 IAM Identity Center 的联合身份验证

为方便集中管理人类用户的访问权限,我们建议使用 IAM Identity Center 来管理对您账户的访问以及这些账户中的权限。IAM Identity Center 中的用户将被授予对您的 Amazon 资源的长期凭证。您可以使用 Active Directory、外部身份提供者(IdP)或 IAM Identity Center 目录作为身份源,供用户和组分配对您的 Amazon 资源的访问权限。

IAM Identity Center 支持使用 SAML(安全断言标记语言)2.0 的身份联合验证,为被授权在 Amazon 访问门户中使用应用程序的用户提供联合单点登录访问权限。然后,用户可以单点登录到支持 SAML 的服务,包括 Amazon Web Services Management Console 和第三方应用程序(如 Microsoft 365、SAP Concur 和 Salesforce)。

使用 IAM 的联合身份验证

虽然我们强烈建议在 IAM Identity Center 中管理人类用户,但在短期、小规模部署中,您可以通过 IAM 为人类用户启用联合用户访问权限。IAM 允许您使用单独的 SAML 2.0 和 Open ID Connect(OIDC)IdP,并使用联合用户属性进行访问控制。借助 IAM,您可以将用户属性(例如成本中心、职务或区域设置)从您的 IdP 传递给 Amazon,并根据这些属性实施精细访问权限。

工作负载是一系列资源和代码,它们可提供商业价值,如应用程序或后端过程。您的工作负载可能需要 IAM 身份才能向 Amazon 服务、应用程序、操作工具和组件发出请求。这些身份包括运行在您的 Amazon 环境(例如 Amazon EC2 实例或 Amazon Lambda 函数)中运行的计算机。

您还可以为需要访问权限的外部团体管理计算机身份。要为计算机身份授予访问权限,您可以使用 IAM 角色。IAM 角色具有特定的权限并可通过使用带有角色会话的临时安全凭证提供访问 Amazon 的方法。此外,您还可以拥有位于 Amazon 以外且需要访问您的 Amazon 环境的计算机。对于在 Amazon 外部运行的计算机,您可以使用 IAM Roles Anywhere。有关角色的更多信息,请参阅IAM 角色。有关如何使用角色跨 Amazon Web Services 账户 委派访问权限的详情,请参阅 IAM 教程:使用 IAM 角色委托跨 Amazon 账户的访问权限

要将 IdP 直接连接到 IAM,您需要创建 IAM 身份提供者实体,以在您的 Amazon Web Services 账户 和 IdP 之间建立信任关系。IAM 支持与 OpenID Connect (OIDC) 或者 SAML 2.0 (Security Assertion Markup Language 2.0) 兼容的 IdPs。有关通过 Amazon 使用这些 IdP 之一的更多信息,请参阅以下部分:

有关创建 IAM 身份提供者实体以在兼容的 IdP 和 Amazon 之间建立信任关系的详细信息,请参阅 创建 IAM 身份提供程序

使用 Amazon Cognito 身份池的联合身份验证

Amazon Cognito 专为想要在其移动应用程序和 Web 应用程序中对用户进行身份验证和授权的开发人员而设计。Amazon Cognito 用户池为您的应用程序添加登录和注册功能,身份池提供 IAM 凭证,授予您的用户访问您在 Amazon 中管理的受保护资源的权利。身份池通过 AssumeRoleWithWebIdentity API 操作获取临时会话的凭证。

Amazon Cognito 与支持 SAML 和 OpenID Connect 的外部身份提供者以及 Facebook、Google 和 Amazon 等社交身份提供者合作。您的应用程序可以使用用户群体或外部 IdP 登录用户,然后在 IAM 角色中使用自定义的临时会话代表他们检索资源。