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

启用对 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 操作。

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

开始前的准备工作

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

架构示意图

下图阐明了此过程。

对 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 断言

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  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 驱动程序调用 AWS STS AssumeRoleWithSAML API,并向其传递断言,如架构示意图中的第 4 步所示。

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

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

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