IAM 联合身份验证 - AWS 规范性指导

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

IAM 联合身份验证

注意

如果您已经有了用于管理用户和群组的中央用户目录,我们建议您使用 IAM Identity Center 作为您的主要员工访问服务。如果本节后面讨论的任何设计注意事项使您无法使用 IAM 身份中心,请使用 IAM 联合身份验证而不是在 AWS 中创建单独的 IAM 用户。

IAM 联合会在双方之间建立信任系统,目的是对用户进行身份验证并共享授权他们访问资源所需的信息。此系统需要连接到您的用户目录的身份提供商 (IdP) 和在 IAM 中管理的服务提供商 (SP)。IdP 负责对用户进行身份验证并向 IAM 提供相关的授权上下文数据,IAM 控制对 AWS 账户和环境中资源的访问权限。

IAM 联合支持常用的标准,例如 SAML 2.0 和 OpenID Connect (OIDC)。许多 IdPs 用户都支持基于 SAML 的联合,它支持联合单点登录访问权限,用户无需创建 IAM 用户即可登录 AWS 管理控制台或调用 AWS API。您可以使用 IAM 在 AWS 中创建用户身份,也可以连接到现有的 IdP(例如,微软 Active Directory、Okta、Ping Identity 或微软 Entra ID)。或者,当您想要在兼容 OIDC 的 IdP 和您的 AWS 账户之间建立信任时,可以使用 IAM OIDC 身份提供商。

IAM 联合有两种设计模式:多账户联合或单账户联合。

多账户 IAM 联合

在这种多账户 IAM 模式中,您可以在 IdP 和所有需要整合的 AWS 账户之间建立单独的 SAML 信任关系。权限是以个人账户为基础进行映射和配置的。这种设计模式提供了一种管理角色和策略的分布式方法,使您可以灵活地为每个账户启用单独的 SAML 或 OIDC IdP,并使用联合用户属性进行访问控制。

多账户 IAM 联合提供以下好处:

  • 提供对所有 AWS 账户的集中访问权限,并允许您以分布式方式管理每个 AWS 账户的权限。

  • 在多账户设置中实现可扩展性。

  • 符合合规性要求。

  • 允许您从中心位置管理身份。

如果您想以分布式方式管理由 AWS 账户分开的权限,则该设计特别有用。如果您在 AWS 账户中没有可重复的 AM 权限,AWS 账户中的 AWS 目录用户之间没有可重复的 IAM 权限,这也很有帮助。例如,它支持网络管理员,他们提供的资源访问权限可能因账户而略有不同。

必须在每个账户中单独创建 SAML 提供商,因此每个 AWS 账户都需要流程来管理 IAM 角色及其权限的创建、更新和删除。这意味着您可以为同一工作职能具有不同敏感度的 AWS 账户定义精确而不同的 IAM 角色权限。

下图说明了多账户 IAM 联合模式。

多账户 IAM 联合模式

单账户 IAM 联合(hub-and-spoke 模型)

注意

在本节中描述的特定场景中使用此设计模式。在大多数情况下,推荐使用基于 IAM 身份中心的联合身份验证或多账户 IAM 联合身份验证的方法。如有疑问,请联系 AWS Suppor t。

在单账户联合模式中,在 IdP 和单个 AWS 账户(身份账户)之间建立 SAML 信任关系。权限是通过集中式身份账户映射和配置的。这种设计模式既简单又高效。身份提供商提供映射到身份账户中特定 IAM 角色(和权限)的 SAML 断言。然后,联邦用户可以假 cross-account-roles设通过身份账户访问其他 AWS 账户。

下图说明了单账户 IAM 联合模式。

单账户 IAM 联合模式

使用案例: 

  • 拥有单个 AWS 账户,但有时需要为隔离的沙盒或测试创建短期 AWS 账户的公司。

  • 以主账户维持制作服务,但提供临时的、基于项目的学生账户的教育机构。 

注意

这些用例需要强有力的治理和有时限的回收流程,以确保生产数据不会传递到联合账户,并消除潜在的安全风险。在这些情况下,审计过程也很困难。

在 IAM 联合身份验证和 IAM 身份中心之间进行选择的设计注意事项
  • IAM Identity Center 一次仅支持将账户连接到一个目录。如果您使用多个目录或想要根据用户属性管理权限,请考虑使用 IAM 联合作为设计替代方案。你应该有一个支持 SAML 2.0 协议的 IdP,例如微软 Active Directory 联合身份验证服务 (AD FS)、Okta 或微软 Entra ID。您可以通过交换 IdP 和 SP 元数据以及配置 SAML 断言以将 IAM 角色映射到公司目录组和用户来建立双向信任。

  • 如果您使用 IAM OIDC 身份提供商在兼容 OIDC 的 IdP 和您的 AWS 账户之间建立信任,请考虑使用 IAM 联合身份验证。当您使用 IAM 控制台创建 OIDC 身份提供商时,控制台会尝试为您获取指纹。此外,我们建议您手动获取 OIDC IdP 的指纹,并验证控制台提取了正确的指纹。有关更多信息,请参阅 IAM 文档中的在 IAM 中创建 OIDC 身份提供商

  • 如果您的公司目录用户没有工作职能的可重复权限,请使用 IAM 联合。例如,不同的网络或数据库管理员可能需要在 AWS 账户中自定义的 IAM 角色权限。要在 IAM Identity Center 中实现这一目标,您可以创建单独的客户托管策略并在权限集中引用它们。有关更多信息,请参阅 AWS 博客文章如何在高级用例中使用 AWS IAM 身份中心中的客户托管策略

  • 如果您使用的是分布式权限模型(即每个账户管理自己的权限)或通过 AWS 使用集中式权限模型 CloudFormation StackSets,请考虑使用 IAM 联合。如果您使用的是同时涉及集中式和分布式权限的混合模式,请考虑使用 IAM Identity Center。有关更多信息,请参阅 IAM 文档中的身份提供商和联合。

  • 诸如 Amazon Q 开发人员专业版和 AWS CLI 版本 2 之类的服务和功能内置了对 AWS Identity Center 的支持。但是,IAM 联合不支持其中一些功能。

  • IAM Access Analyzer 目前不支持对 IAM 身份中心用户操作的分析。