启用对 Athena API 的联合访问
此部分介绍允许组织中的用户或客户端应用程序调用 Amazon Athena API 操作的联合身份访问。在这种情况下,组织的用户没有 Athena 的直接访问权限。相反,您在 AWS 外部的 Microsoft Active Directory 中管理用户凭证。Active Directory 支持 SAML 2.0
要在此方案中对用户进行身份验证,请使用支持 SAML.2.0 的 JDBC 或 ODBC 驱动程序,访问 Active Directory 联合身份验证服务 (AD FS) 3.0 并允许客户端应用程序调用 Athena API 操作。
有关更多信息对于 AWS 的 SAML 2.0 支持,请参阅《IAM 用户指南》中的 关于 SAML 2.0 联合身份验证。
注意
特定类型的身份提供商 (IdP),即 Windows Server 中包括的 Active Directory 联合身份验证服务 (AD FS 3.0) 支持对 Athena API 的联合访问。联合访问与 IAM Identity Center 可信身份传播功能不兼容。访问通过支持 SAML 2.0 的 JDBC 或 ODBC 驱动程序版本建立。有关信息,请参阅 通过 JDBC 连接到 Amazon Athena 和 通过 ODBC 连接到 Amazon Athena。
开始前的准备工作
在开始之前,请满足以下先决条件:
-
在组织中,安装并配置 ADFS 3.0 作为您的 IdP。
-
在用于访问 Athena 的客户端上,安装和配置最新可用版本的 JDBC 或 ODBC 驱动程序。驱动程序必须包括对与 SAML 2.0 兼容的联合身份访问的支持。有关信息,请参阅 通过 JDBC 连接到 Amazon Athena 和 通过 ODBC 连接到 Amazon Athena。
了解身份验证流程
下图将说明对 Athena API 进行联合访问的身份验证过程。

-
您组织中的用户使用具有 JDBC 或 ODBC 驱动程序的客户端应用程序,请求组织的 IdP 进行身份验证。该 IdP 是 ADFS 3.0。
-
IdP 根据 Active Directory(组织的身份存储)对用户进行身份验证。
-
IdP 构建一个具有用户相关信息的 SAML 断言,并将此断言通过 JDBC 或 ODBC 驱动程序发送到客户端应用程序。
-
JDBC 或 ODBC 驱动程序调用 AWS Security Token Service AssumeRoleWithSAML API 操作,将其传递给以下参数:
-
SAML 提供商的 ARN
-
要代入的角色的 ARN
-
来自 IdP 的 SAML 断言
有关更多信息,请参阅 AWS Security Token Service API 参考中的 AssumeRoleWithSAML。
-
-
通过 JDBC 或 ODBC 驱动程序发送到客户端应用程序的 API 相应包含临时安全凭证。
-
客户端应用程序使用临时安全凭证调用 Athena API 操作,从而允许您的用户访问 Athena API 操作。
过程:对 Athena API 启用基于 SAML 的联合访问
该过程在组织的 IdP 与 AWS 账户之间建立信任关系,以实现对 Amazon Athena API 操作的基于 SAML 的联合访问。
要启用对 Athena API 的联合访问,请执行以下操作:
-
在组织中,将 AWS 注册为您 IdP 中的服务提供商 (SP)。此过程称为信赖方信任。有关更多信息,请参阅《IAM 用户指南》中的 使用信赖方信任配置您的 SAML 2.0 IdP。作为此任务的一部分,请执行以下步骤:
-
从以下 URL 获取示例 SAML 元数据文档:https://signin.aws.amazon.com/static/saml-metadata.xml
。 -
在您组织的 IdP (ADFS) 中,生成一个等同元数据 XML 文件,将您的 IdP 描述为 AWS 的身份提供商。您的元数据文件必须包括发布者名称、创建日期、过期日期以及 AWS 用来验证来自您组织的身份验证响应(断言)的密钥。
-
-
在 IAM 控制台中,创建一个 SAML 身份提供程序实体。有关更多信息,请参阅《IAM 用户指南》中的 创建 SAML 身份提供商。作为此步骤的一部分,请执行以下操作:
通过 https://console.aws.amazon.com/iam/
打开 IAM 控制台。 -
上载此过程的第 1 步中由 IdP (ADFS) 生成的 SAML 元数据文档。
-
在 IAM 控制台中,为您的 IdP 创建一个或多个 IAM 角色。有关更多信息,请参阅《IAM 用户指南》中的 为第三方身份提供商创建角色(联合访问)。作为此步骤的一部分,请执行以下操作:
-
在角色的权限策略中,列出允许您组织的用户在 AWS 中执行的操作。
-
在角色的信任策略中,将在此过程第 2 步中创建的 SAML 提供商实体设置为委托人。
这将在您的组织与 AWS 之间建立信任关系。
-
-
在您组织的 IdP (ADFS) 中,定义可将您组织中的用户或组映射到 IAM 角色的断言。将用户和组映射到 IAM 角色也称为断言规则。请注意,您的组织中不同的用户和组可能映射到不同的 IAM 角色。
有关配置 ADFS 中的映射的信息,请参阅博客文章:使用 Windows Active Directory、ADFS 和 SAML 2.0 启用 AWS 的联合身份验证
。 -
安装和配置具有 SAML 2.0 支持的 JDBC 或 ODBC 驱动程序。有关信息,请参阅 通过 JDBC 连接到 Amazon Athena 和 通过 ODBC 连接到 Amazon Athena。
-
指定从您应用程序到 JDBC 或 ODBC 驱动程序的连接字符串。有关应用程序应使用的连接字符串的信息,请参阅《JDBC 驱动程序安装和配置指南》中的“使用 Active Directory 联合身份验证服务 (ADFS) 凭证提供程序”或《ODBC 驱动程序安装和配置指南》中的类似主题,可从 通过 JDBC 连接到 Amazon Athena 和 通过 ODBC 连接到 Amazon Athena 主题以 PDF 格式下载。
下面大致概述了配置驱动程序的连接字符串:
-
在
AwsCredentialsProviderClass configuration
中,设置com.simba.athena.iamsupport.plugin.AdfsCredentialsProvider
,指示您希望通过 ADFS IdP 使用基于 SAML 2.0 的身份验证。 -
对于
idp_host
,请提供 ADFS IdP 服务器的主机名。 -
对于
idp_port
,请提供 ADFS IdP 侦听 SAML 断言请求的端口号。 -
对于
UID
和PWD
,请提供 AD 域用户凭证。在 Windows 上,如果使用驱动程序时未提供UID
和PWD
,则驱动程序尝试获取登录到 Windows 计算机用户的用户凭证。 -
(可选)将
ssl_insecure
设置为true
。在这种情况下,驱动程序不会检查 ADFS IdP 服务器的 SSL 证书的真实性。如果没有将 ADFS IdP 的 SSL 证书配置为受驱动程序信任,则需要设置为true
。 -
要启用 Active Directory 域用户或组与一个或多个 IAM 角色的映射(如此过程中第 4 步所述),请在 JDBC 或 ODBC 连接的
preferred_role
中,为驱动程序连接指定要代入的 IAM 角色 (ARN)。指定preferred_role
是可选的,在角色不是断言规则中列出的第一个角色时非常有用。
作为此过程的结果,将发生以下操作:
-
JDBC 或 ODBC 驱动程序调用 AWS STS AssumeRoleWithSAML API,并向其传递断言,如架构示意图中的第 4 步所示。
-
AWS 确保代入角色的请求来自 SAML 提供商实体中引用的 IdP。
-
如果请求成功,AWS STS AssumeRoleWithSAML API 操作会返回一组临时安全凭证,您的客户端应用程序即可用其向 Athena 发出已签名的请求。
现在,您的应用程序拥有当前用户的相关信息,并且可以通过编程方式访问 Athena。
-