AWS 使用 SAML 2.0(安全断言标记语言 2.0)支持联合身份验证,SAML 2.0 是许多身份验证提供商 (IdP) 使用的一种开放标准。此功能可实现联合单一登录 (SSO),因此用户可以登录 AWS 管理控制台或调用 AWS API 操作,而不必为组织中的每个人都创建一个 IAM 用户。由于可以使用 IdP 的服务而不必编写自定义身份代理代码,因此您可以通过使用 SAML 来简化为 AWS 配置联合身份验证的过程。
IAM 联合支持这些使用案例:
-
允许组织中的用户或应用程序调用 AWS API 操作的联合访问权限。您可以使用组织内生成的 SAML 断言 (身份验证响应的一部分) 获得临时安全凭证。此方案类似于 IAM 支持的其他联合方案,如请求临时安全凭证和关于 Web 联合身份验证中介绍的方案。但是,组织中基于 SAML 2.0 的 IdP 可以在运行时处理许多细节功能,以用于执行身份验证和授权检查。这是本主题中讨论的方案。
-
从组织向 AWS 管理控制台进行基于 Web 的单一登录 (SSO)。用户可以登录组织中由可与 SAML 2.0 兼容的 IdP 托管的门户网站,选择转到 AWS 的选项,即可重定向到控制台,而无需提供其他登录信息。您可以使用第三方 SAML IdP 建立对控制台的 SSO 访问,或者可以创建自定义 IdP 来支持外部用户的控制台访问。有关构建自定义 IdP 的更多信息,请参阅创建一个使联合用户能够访问 AWS 管理控制台(自定义联合代理)的 URL。
使用基于 SAML 的联合身份验证来对 AWS 进行 API 访问
假设您想要为员工提供一种将数据从他们的计算机中复制到备份文件夹的方法。您可以构建一个可在用户的计算机上运行的应用程序。在后端,该应用程序可在 S3 存储桶中读写对象。用户没有直接访问 AWS 的权限。而应使用以下过程:
![获得基于 SAML 断言的临时安全证书](https://docs.aws.amazon.com/zh_cn/IAM/latest/UserGuide/images/saml-based-federation.diagram.png)
-
您组织中的用户使用客户端应用程序来请求您组织的 IdP 进行身份验证。
-
IdP 根据组织的身份存储对用户进行身份验证。
-
IdP 构建一个具有用户相关信息的 SAML 断言,并将此断言发送到客户端应用程序。
-
客户端应用程序调用 AWS STS
AssumeRoleWithSAML
API,并传递 SAML 提供商的 ARN、要代入的角色的 ARN 以及来自 IdP 的 SAML 断言。 -
API 对客户端应用程序的响应包括临时安全凭证。
-
客户端应用程序使用临时安全凭证来调用 Amazon S3 API 操作。
配置基于 SAML 2.0 的联合身份验证的概述
在使用前面方案和图表中所述的基于 SAML 2.0 的联合身份验证之前,您必须先配置组织的 IdP 和您的 AWS 账户,使之相互信任。以下步骤介绍了用于配置此信任的一般过程。组织内部必须有支持 SAML 2.0 的 IdP,例如 Microsoft Active Directory 联合身份验证服务 (AD FS,Windows Server 的一部分)、Shibboleth 或其他兼容的 SAML 2.0 提供商。