启用对 Athena API 的联合身份访问 - Amazon Athena
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

如果我们为英文版本指南提供翻译,那么如果存在任何冲突,将以英文版本指南为准。在提供翻译时使用机器翻译。

启用对 Athena API 的联合身份访问

此部分介绍允许组织中的用户或客户端应用程序调用 Amazon Athena API 操作的联合身份访问。在这种情况下,组织的用户没有 Athena 的直接访问权限。相反,您在 AWS 外部的 Microsoft Active Directory 中管理用户凭证。Active Directory 支持 SAML 2.0(安全断言标记语言 2.0)。

要在此方案中对用户进行身份验证,请使用支持 SAML.2.0 的 JDBC 或 ODBC 驱动程序,访问 Active Directory 联合身份验证服务 (AD FS) 3.0 并允许客户端应用程序调用 Athena API 操作。

有关SAML2.0支持的更多信息,请参阅 AWS,参见 关于SAML2.0联合IAM 用户指南.

注意

特定类型的身份提供商 (IdP),即 Windows Server 中包括的 Active Directory 联合身份验证服务 (AD FS 3.0) 支持对 Athena API 的联合访问。访问通过支持 SAML 2.0 的 JDBC 或 ODBC 驱动程序版本建立。有关信息,请参阅 将 Athena 与 JDBC 驱动程序结合使用使用 ODBC 连接到 Amazon Athena

开始前的准备工作

在开始之前,请满足以下先决条件:

架构示意图

下图阐明了此过程。


                        联合访问 Athena API。
  1. 您组织中的用户使用具有 JDBC 或 ODBC 驱动程序的客户端应用程序,请求组织的 IdP 进行身份验证。该 IdP 是 ADFS 3.0。

  2. IdP 根据 Active Directory(组织的身份存储)对用户进行身份验证。

  3. IdP 构建一个具有用户相关信息的 SAML 断言,并将此断言通过 JDBC 或 ODBC 驱动程序发送到客户端应用程序。

  4. JDBC 或 ODBC 驱动程序调用 AWS Security Token Service AssumeRoleWithSAML API 操作,将其传递给以下参数:

    • SAML 提供商的 ARN

    • 要代入的角色的 ARN

    • 来自 IdP 的 SAML 断言

    有关详细信息,请参阅 假设SAML,在 AWS Security Token Service API Reference.

  5. 通过 JDBC 或 ODBC 驱动程序发送到客户端应用程序的 API 相应包含临时安全凭证。

  6. 客户端应用程序使用临时安全凭证调用 Athena API 操作,从而允许您的用户访问 Athena API 操作。

过程:基于SAML的联合访问 Athena API

该过程在组织的 IdP 与 AWS 账户之间建立信任关系,以实现对 Amazon Athena API 操作的基于 SAML 的联合身份访问。

要启用对 Athena API 的联合访问,请执行以下操作:

  1. 在组织中,将 AWS 注册为您 IdP 中的服务提供商 (SP)。此过程称为信赖方信任。有关详细信息,请参阅 配置SAML2.0IDP与依赖方信托IAM 用户指南. 作为此任务的一部分,请执行以下步骤:

    1. 从以下 URL 获取示例 SAML 元数据文档:https://signin.aws.amazon.com/static/saml-metadata.xml.

    2. 在您组织的 IdP (ADFS) 中,生成一个等同元数据 XML 文件,将您的 IdP 描述为 AWS 的身份提供商。您的元数据文件必须包括发布者名称、创建日期、过期日期以及 AWS 用来验证来自您组织的身份验证响应(断言)的密钥。

  2. 在 IAM 控制台中,创建一个 SAML 身份提供商实体。有关更多信息,请参阅 https://docs.amazonaws.cn/IAM/latest/UserGuide/id_roles_providers_create_saml.html 中的IAM 用户指南创建 SAML 身份提供商。作为此步骤的一部分,请执行以下操作:

    1. 通过以下网址打开 IAM 控制台:https://console.amazonaws.cn/iam/

    2. 上传此过程的第 1 步中由 IdP (ADFS) 生成的 SAML 元数据文档。

  3. 在 IAM 控制台中,为您的 IdP 创建一个或多个 IAM 角色。有关详细信息,请参阅 为第三方身份提供商(联邦)创建角色IAM 用户指南. 作为此步骤的一部分,请执行以下操作:

    • 在角色的权限策略中,列出允许您组织的用户在 AWS 中执行的操作。

    • 在角色的信任策略中,将在此过程第 2 步中创建的 SAML 提供商实体设置为委托人。

    这将在您的组织与 AWS 之间建立信任关系。

  4. 在您组织的 IdP (ADFS) 中,定义可将您组织中的用户或组映射到 IAM 角色的断言。将用户和组映射到 IAM 角色也称为断言规则。请注意,您的组织中不同的用户和组可能映射到不同的 IAM 角色。

    有关在ADFS中配置映射的信息,请参阅博客帖子: 启用联合会 AWS 使用WindowsActiveDirectory、ADFS和SAML2.0.

  5. 安装和配置具有 SAML 2.0 支持的 JDBC 或 ODBC 驱动程序。有关信息,请参阅 将 Athena 与 JDBC 驱动程序结合使用使用 ODBC 连接到 Amazon Athena

  6. 指定从您应用程序到 JDBC 或 ODBC 驱动程序的连接字符串。有关应用程序应使用的连接字符串的信息,请参阅主题 “使用ActiveDirectory联合服务(ADFS)凭据提供程序”JDBC驱动程序安装和配置指南或类似主题 ODBCDriver安装和配置指南 可从 将 Athena 与 JDBC 驱动程序结合使用使用 ODBC 连接到 Amazon Athena 主题。

    下面大致概述了配置驱动程序的连接字符串:

    1. AwsCredentialsProviderClass configuration 中,设置 com.simba.athena.iamsupport.plugin.AdfsCredentialsProvider,指示您希望通过 ADFS IdP 使用基于 SAML 2.0 的身份验证。

    2. 对于 idp_host,请提供 ADFS IdP 服务器的主机名。

    3. 对于 idp_port,请提供 ADFS IdP 侦听 SAML 断言请求的端口号。

    4. 对于 UIDPWD,请提供 AD 域用户凭证。在 Windows 上,如果使用驱动程序时未提供 UIDPWD,则驱动程序尝试获取登录到 Windows 计算机用户的用户凭证。

    5. 可选,设置 ssl_insecuretrue。在这种情况下,驱动程序不检查ADFSIDP服务器的SSL证书的真实性。如果没有将 ADFS IdP 的 SSL 证书配置为受驱动程序信任,则需要设置为 true

    6. 要启用 Active Directory 域用户或组与一个或多个 IAM 角色的映射(如此过程中第 4 步所述),请在 JDBC 或 ODBC 连接的 preferred_role 中,为驱动程序连接指定要代入的 IAM 角色 (ARN)。指定 preferred_role 是可选的,在角色不是断言规则中列出的第一个角色时非常有用。

    作为此过程的结果,将发生以下操作:

    1. JDBC 或 ODBC 驱动程序调用 AWS STS AssumeRoleWithSAML API,并向其传递断言,如架构示意图中的第 4 步所示。

    2. AWS 确保代入角色的请求来自 SAML 提供商实体中引用的 IdP。

    3. 如果请求成功,AWS STS AssumeRoleWithSAML API 操作会返回一组临时安全凭证,您的客户端应用程序即可用其向 Athena 发出已签名的请求。

      现在,您的应用程序拥有当前用户的相关信息,并且可以通过编程方式访问 Athena。