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

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

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

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

有关更多信息对于 Amazon 的 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

开始前的准备工作

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

架构示意图

下图阐明了此过程。


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

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

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

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

    • SAML 提供商的 ARN

    • 要代入的角色的 ARN

    • 来自 IdP 的 SAML 断言

    有关更多信息,请参阅 Amazon Security Token Service API 参考中的 AssumeRoleWithSAML

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

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

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

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

要启用对 Athena API 的联合访问,请执行以下操作:
  1. 在组织中,将 Amazon 注册为您 IdP 中的服务提供商 (SP)。此过程称为信赖方信任。有关更多信息,请参阅《IAM 用户指南》中的 使用信赖方信任配置您的 SAML 2.0 IdP。作为此任务的一部分,请执行以下步骤:

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

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

  2. 在 IAM 控制台中,创建一个 SAML 身份提供程序实体。有关更多信息,请参阅《IAM 用户指南》中的 创建 SAML 身份提供商。作为此步骤的一部分,请执行以下操作:

    1. 通过 https://console.aws.amazon.com/iam/ 打开 IAM 控制台。

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

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

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

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

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

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

    有关配置 ADFS 中的映射的信息,请参阅博客文章:使用 Windows Active Directory、ADFS 和 SAML 2.0 启用 Amazon 的联合身份验证

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

  6. 指定从您应用程序到 JDBC 或 ODBC 驱动程序的连接字符串。有关应用程序应使用的连接字符串的信息,请参阅《JDBC 驱动程序安装和配置指南》中的“使用 Active Directory 联合身份验证服务 (ADFS) 凭证提供程序”或《ODBC 驱动程序安装和配置指南》中的类似主题,可从 通过 JDBC 连接到 Amazon Athena通过 ODBC 连接到 Amazon Athena 主题以 PDF 格式下载。

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

    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_insecure 设置为 true。在这种情况下,驱动程序不会检查 ADFS IdP 服务器的 SSL 证书的真实性。如果没有将 ADFS IdP 的 SSL 证书配置为受驱动程序信任,则需要设置为 true

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

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

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

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

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

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