

# Athena ODBC 1.x 驱动程序
ODBC 1.x

您可以使用 ODBC 连接从第三方 SQL 客户端工具和应用程序连接到 Athena。使用此页面上的链接下载 Amazon Athena 1.x ODBC 驱动程序许可协议、ODBC 驱动程序和 ODBC 文档。有关 ODBC 连接字符串的信息，请参阅《ODBC 驱动程序安装和配置指南》PDF 文件（可从此页面下载）。有关许可的更多信息，请参阅 [控制通过 JDBC 和 ODBC 连接的访问](policy-actions.md)。

**重要**  
使用 ODBC 1.x 驱动程序时，请务必注意以下要求：  
**保留端口 444** — 保留 Athena 用于流式传输查询结果的端口 444，对出站流量开放。当您使用 PrivateLink 终端节点连接到 Athena 时，请确保附加到 PrivateLink 终端节点的安全组在端口 444 上对入站流量开放。
**athena：GetQueryResultsStream 策略** — 将 `athena:GetQueryResultsStream` 策略操作添加到使用 ODBC 驱动程序的 IAM 主体。此策略操作并不通过 API 直接公开。它仅作为流式传输结果的一部分与 ODBC 和 JDBC 驱动程序配合使用。有关策略示例，请参阅 [Amazon 托管策略：AWSQuicksightAthenaAccess](security-iam-awsmanpol.md#awsquicksightathenaaccess-managed-policy)。

## Windows



| 驱动程序版本 | 下载链接 | 
| --- | --- | 
| 适用于 Windows 32 位的 ODBC 1.2.3.1000 | [Windows 32 位 ODBC 驱动程序 1.2.3.1000](https://s3.cn-north-1.amazonaws.com.cn/athena-downloads-cn/drivers/ODBC/SimbaAthenaODBC_1.2.3.1000/Windows/SimbaAthena_1.2.3.1000_32-bit.msi) | 
| 适用于 Windows 64 位的 ODBC 1.2.3.1000 | [Windows 64 位 ODBC 驱动程序 1.2.3.1000](https://s3.cn-north-1.amazonaws.com.cn/athena-downloads-cn/drivers/ODBC/SimbaAthenaODBC_1.2.3.1000/Windows/SimbaAthena_1.2.3.1000_64-bit.msi) | 

## Linux



| 驱动程序版本 | 下载链接 | 
| --- | --- | 
| 适用于 Linux 32 位的 ODBC 1.2.3.1000 | [Linux 32 位 ODBC 驱动程序 1.2.3.1000](https://s3.cn-north-1.amazonaws.com.cn/athena-downloads-cn/drivers/ODBC/SimbaAthenaODBC_1.2.3.1000/Linux/simbaathena-1.2.3.1000-1.el7.i686.rpm) | 
| 适用于 Linux 64 位的 ODBC 1.2.3.1000 | [Linux 64 位 ODBC 驱动程序 1.2.3.1000](https://s3.cn-north-1.amazonaws.com.cn/athena-downloads-cn/drivers/ODBC/SimbaAthenaODBC_1.2.3.1000/Linux/simbaathena-1.2.3.1000-1.el7.x86_64.rpm) | 

## OSX



| 驱动程序版本 | 下载链接 | 
| --- | --- | 
| 适用于 OSX 的 ODBC 1.2.3.1000 | [OSX ODBC 驱动程序 1.2.3.1000](https://s3.cn-north-1.amazonaws.com.cn/athena-downloads-cn/drivers/ODBC/SimbaAthenaODBC_1.2.3.1000/OSX/SimbaAthena_1.2.3.1000.dmg) | 

## 文档



| 内容 | 文档链接 | 
| --- | --- | 
| Amazon Athena ODBC 驱动程序许可协议 |  [许可协议](https://s3.cn-north-1.amazonaws.com.cn/athena-downloads-cn/agreement/ODBC/Amazon+Athena+ODBC+Driver+License+Agreement.pdf)  | 
| 适用于 ODBC 1.2.3.1000 的文档 | [ODBC 驱动程序安装和配置指南版本 1.2.3.1000](https://s3.cn-north-1.amazonaws.com.cn/athena-downloads-cn/drivers/ODBC/SimbaAthenaODBC_1.2.3.1000/docs/Simba+Amazon+Athena+ODBC+Connector+Install+and+Configuration+Guide.pdf) | 
| ODBC 1.2.3.1000 发布说明 | [ODBC 驱动程序发布说明版本 1.2.3.1000](https://s3.cn-north-1.amazonaws.com.cn/athena-downloads-cn/drivers/ODBC/SimbaAthenaODBC_1.2.3.1000/docs/release-notes.txt) | 

## ODBC 驱动程序注释


**不使用代理进行连接**  
如果要指定驱动程序不使用代理连接到的某些主机，则可以在 ODBC 连接字符串中使用可选 `NonProxyHost` 属性。

`NonProxyHost` 属性指定了启用代理连接时连接器可以无需通过代理服务器访问的主机列表（以逗号分隔），如下例所示：

```
.amazonaws.com,localhost,.example.net,.example.com
```

`NonProxyHost` 连接参数传递给 `CURLOPT_NOPROXY` curl 选项。有关 `CURLOPT_NOPROXY` 格式的信息，请参阅 curl 文档中的 [CURLOPT\$1NOPROXY](https://curl.se/libcurl/c/CURLOPT_NOPROXY.html)。

# 使用 ODBC 客户端为 Microsoft AD FS 用户配置对 Amazon Athena 的联合访问权限
使用 ODBC 配置 AD FS 访问权限

要使用 ODBC 客户端为 Microsoft Active Directory 联合身份验证服务（AD FS）用户设置对 Amazon Athena 的联合访问权限，您首先要在 AD FS 和 Amazon 账户之间建立信任。获得信任后，您的 AD 用户便可使用其 AD 凭证对 Amazon 进行[联合身份验证](https://docs.amazonaws.cn/IAM/latest/UserGuide/id_roles_providers_saml.html#CreatingSAML-configuring-IdP)，并担任 [Amazon Identity and Access Management](https://www.amazonaws.cn/iam/)（IAM）角色权限以访问 Athena API 等 Amazon 资源。

要创建这种信任，您需要将 AD FS 作为 SAML 提供商添加到 Amazon Web Services 账户 中，并创建可供联合用户担任的 IAM 角色。在 AD FS 端，您可以将 Amazon 添加为依赖方并编写 SAML 声明规则，以便将正确的用户属性发送到 Amazon 进行授权（尤其是 Athena 和 Amazon S3）。

配置 AD FS 对 Athena 的访问权限涉及以下主要步骤：

[1. 设置 IAM SAML 提供商和角色](#odbc-adfs-saml-setting-up-an-iam-saml-provider-and-role)

[2. 配置 AD FS](#odbc-adfs-saml-configuring-ad-fs)

[3. 创建 Active Directory 用户和组](#odbc-adfs-saml-creating-active-directory-users-and-groups)

[4. 配置 AD FS ODBC 与 Athena 的连接](#odbc-adfs-saml-configuring-the-ad-fs-odbc-connection-to-athena)

## 1. 设置 IAM SAML 提供商和角色


在本节中，您需要将 AD FS 作为 SAML 提供商添加到 Amazon 账户中，并创建可供联合用户担任的 IAM 角色。

**设置 SAML 提供商**

1. 登录 Amazon Web Services 管理控制台，然后通过以下网址打开 IAM 控制台：[https://console.aws.amazon.com/iam/](https://console.amazonaws.cn/iam/)。

1. 在导航窗格中，选择 **Identity providers**（身份提供程序）。

1. 选择**添加提供程序**。

1. 对于 **Provider type**（提供程序类型），选择 **SAML**。  
![\[选择 SAML。\]](http://docs.amazonaws.cn/athena/latest/ug/images/odbc-adfs-saml-1.png)

1. 对于 **Provider name**（提供程序名称），输入 **adfs-saml-provider**。

1. 在浏览器中，输入以下地址以下载适用于 AD FS 服务器的联合身份验证 XML 文件。要执行此步骤，您的浏览器必须具有访问 AD FS 服务器的权限。

   ```
   https://adfs-server-name/federationmetadata/2007-06/federationmetadata.xml       
   ```

1. 在 IAM 控制台中，对于 **Metadata document**（元数据文档），选择 **Choose file**（选择文件），然后将联合身份验证元数据文件上传到 Amazon。

1. 要完成操作，请选择 **Add provider**（添加提供商）。

接下来，创建联合用户可担任的 IAM 角色。

**为联合用户创建 IAM 角色**

1. 请在 IAM 控制台的导航窗格中，选择 **Roles**（角色）。

1. 选择**创建角色**。

1. 对于 **Trusted entity type**（受信任的实体类型），选择 **SAML 2.0 Federation**（SAML 2.0 联合身份验证）。

1. 对于 **SAML 2.0-based provider**（基于 SAML 2.0 的提供商），选择您创建的 **adfs-saml-provider** 提供商。

1. 选择**允许编程访问和 Amazon 管理控制台访问**，然后选择**下一步**。  
![\[选择 SAML 作为受信任的实体类型。\]](http://docs.amazonaws.cn/athena/latest/ug/images/odbc-adfs-saml-2.png)

1. 在 **Add permissions**（添加权限）页面上，筛选此角色所需的 IAM 权限策略，然后选中相应的复选框。本教程附加了 `AmazonAthenaFullAccess` 和 `AmazonS3FullAccess` 策略。  
![\[为角色附加 Athena 完全访问策略。\]](http://docs.amazonaws.cn/athena/latest/ug/images/odbc-adfs-saml-3.png)  
![\[为角色附加 Amazon S3 完全访问策略。\]](http://docs.amazonaws.cn/athena/latest/ug/images/odbc-adfs-saml-4.png)

1. 选择**下一步**。

1. 在 **Name, review, and create**（名称、审核和创建）页面中，在 **Role name**（角色名称）中输入角色的名称。本教程使用的名称为 **adfs-data-access**。

   在 **Step 1: Select trusted entities**（步骤 1：选择受信任实体）中，**Principal**（主体）字段应自动填充为 `"Federated:" "arn:aws:iam::account_id:saml-provider/adfs-saml-provider"`。`Condition` 字段应包含 `"SAML:aud"` 和 `"https://signin.aws.amazon.com/saml"`。  
![\[受信任实体 JSON。\]](http://docs.amazonaws.cn/athena/latest/ug/images/odbc-adfs-saml-5.png)

   **Step 2: Add permissions**（步骤 2：添加权限）将显示已附加到该角色的策略。  
![\[附加到角色的策略列表。\]](http://docs.amazonaws.cn/athena/latest/ug/images/odbc-adfs-saml-6.png)

1. 选择**创建角色**。横幅消息会确认角色是否创建。

1. 在 **Roles**（角色）页面上，选择您刚刚创建的角色名称。该角色的摘要页面会显示已附加的策略。  
![\[角色的摘要页面。\]](http://docs.amazonaws.cn/athena/latest/ug/images/odbc-adfs-saml-7.png)

## 2. 配置 AD FS


现在，您可以将 Amazon 添加为依赖方并编写 SAML 声明规则，以便将正确的用户属性发送到 Amazon 进行授权。

基于 SAML 的联合身份验证有两个参与方：IdP（Active Directory）和依赖方（Amazon），后者是使用来自 IdP 的身份验证的服务或应用程序。

要配置 AD FS，请先添加依赖方信任，然后为依赖方配置 SAML 声明规则。AD FS 通过声明规则形成发送给依赖方的 SAML 断言。SAML 断言表明有关 AD 用户的信息是真实信息，并且已对用户进行身份验证。

### 添加依赖方信任


要在 AD FS 中添加依赖方信任，您可以使用 AD FS 服务器管理器。

**在 AD FS 中添加依赖方信任**

1. 登录 AD FS 服务器。

1. 在 **Start**（开始）菜单上，打开 **Server Manager**（服务器管理器）。

1. 选择 **Tools**（工具），然后选择 **AD FS Management**（AD FS 管理）。  
![\[依次选择 Tools（工具）、AD FS Management（AD FS 管理）。\]](http://docs.amazonaws.cn/athena/latest/ug/images/odbc-adfs-saml-8.png)

1. 在导航窗格中的 **Trust Relationships**（信任关系）下，选择 **Relying Party Trusts**（依赖方信任）。

1. 在 **Actions**（操作）下，选择 **Add Relying Party Trust**（添加依赖方信任）。  
![\[选择 Add Relying Party Trust（添加依赖方信任）。\]](http://docs.amazonaws.cn/athena/latest/ug/images/odbc-adfs-saml-9.png)

1. 在**添加信赖方信任向导**页面上，选择**开始**。  
![\[选择启动。\]](http://docs.amazonaws.cn/athena/latest/ug/images/odbc-adfs-saml-10.png)

1. 在 **Select Data Source**（选择数据来源）屏幕上，选择 **Import data about the relying party published online or on a local network**（导入有关在线或在本地网络上发布的信赖方的数据）。

1. 对于 **Federation metadata address (host name or URL)** [联合身份验证元数据地址（主机名或 URL）]，请输入 URL ** https://signin.aws.amazon.com/static/saml-metadata.xml**。

1. 选择**下一步**。  
![\[配置数据来源。\]](http://docs.amazonaws.cn/athena/latest/ug/images/odbc-adfs-saml-11.png)

1. 在 **Specify Display Name**（指定显示名称）页面上，为 **Display name**（显示名称）输入依赖方的显示名称，然后选择 **Next**（下一步）。  
![\[输入依赖方显示名称。\]](http://docs.amazonaws.cn/athena/latest/ug/images/odbc-adfs-saml-12.png)

1. 在 **Configure Multi-factor Authentication Now**（立即配置多重身份验证）页面上，本教程选择 **I do not want to configure multi-factor authentication for this relying party trust at this time**（现在不想为此依赖方信任配置多重身份验证）。

   为增强安全性，我们建议您配置多重身份验证以帮助保护 Amazon 资源。由于本教程使用示例数据集，因此不会启用多重身份验证。  
![\[配置多重身份验证。\]](http://docs.amazonaws.cn/athena/latest/ug/images/odbc-adfs-saml-13.png)

1. 选择**下一步**。

1. 在 **Choose Issuance Authorization Rules**（选择颁发授权规则）页面上，选择 **Permit all users to access this relying party**（允许所有用户访问此信赖方）。

   此选项允许 Active Directory 中的所有用户将 AD FS 作为依赖方与 Amazon 结合使用。您应考虑安全要求并对此配置进行相应调整。  
![\[配置用户对依赖方的访问权限。\]](http://docs.amazonaws.cn/athena/latest/ug/images/odbc-adfs-saml-14.png)

1. 选择**下一步**。

1. 在 **Ready to Add Trust**（准备添加信任）页面上，选择 **Next**（下一步）将依赖方信任添加到 AD FS 配置数据库。  
![\[选择下一步。\]](http://docs.amazonaws.cn/athena/latest/ug/images/odbc-adfs-saml-15.png)

1. 在 **Finish**（完成）页面上，选择 **Close**（关闭）。  
![\[选择关闭。\]](http://docs.amazonaws.cn/athena/latest/ug/images/odbc-adfs-saml-16.png)

### 为依赖方配置 SAML 声明规则


在此任务中，您将创建两组声明规则。

第一组规则 1-4 包含 AD FS 声明规则，这些规则需要基于 AD 组成员关系担任 IAM 角色。如果您想建立对 [Amazon Web Services 管理控制台](https://www.amazonaws.cn/console) 的联合访问权限，那么这些规则与您创建的规则相同。

第二组规则 5-6 是 Athena 访问控制所需的声明规则。

**创建 AD FS 声明规则**

1. 在“AD FS 管理”控制台导航窗格中，依次选择 **Trust Relationships**（信任关系）、**Relying Party Trusts**（依赖方信任）。

1. 查找您在上一节中创建的依赖方。

1. 右键单击依赖方并选择 **Edit Claim Rules**（编辑声明规则），或从 **Actions**（操作）菜单中选择 **Edit Claim Rules**（编辑声明规则）。  
![\[选择 Edit Claim Rules（编辑声明规则）。\]](http://docs.amazonaws.cn/athena/latest/ug/images/odbc-adfs-saml-17.png)

1. 选择**添加规则**。

1. 在“添加转换声明规则向导”的 **Configure Rule**（配置规则）页面上，输入以下信息以创建声明规则 1，然后选择 **Finish**（完成）。
   + 对于 **Claim Rule name**（声明规则名称），输入 **NameID**。
   + 对于 **Rule template**（规则模板），使用 **Transform an Incoming Claim**（转换传入声明）。
   + 对于 **Incoming claim type**（传入声明类型），选择 **Windows account name**（Windows 账户名称）。
   + 对于 **Outgoing claim type**（传出声明类型），选择 **Name ID**（名称 ID）。
   + 对于**传出名称 ID 格式**，请选择**持久性标识符**。
   + 选择 **Pass through all claim values**（传递所有声明值）。  
![\[创建第一条声明规则。\]](http://docs.amazonaws.cn/athena/latest/ug/images/odbc-adfs-saml-18.png)

1. 选择 **Add Rule**（添加规则），然后输入以下信息以创建声明规则 2，然后选择 **Finish**（完成）。
   + 对于 **Claim Rule name**（声明规则名称），输入 **RoleSessionName**。
   + 对于 **Rule template**（规则模板），使用 **Send LDAP Attribute as Claims**（将 LDAP 属性作为声明发送）。
   + 对于**特性存储**，请选择 **Active Directory**。
   + 对于 **Mapping of LDAP attributes to outgoing claim types**（将 LDAP 属性映射到传出声明类型），添加属性 **E-Mail-Addresses**。对于 **Outgoing Claim Type**（传出声明类型），输入 ** https://aws.amazon.com/SAML/Attributes/RoleSessionName**。  
![\[创建第二条声明规则。\]](http://docs.amazonaws.cn/athena/latest/ug/images/odbc-adfs-saml-19.png)

1. 选择 **Add Rule**（添加规则），然后输入以下信息以创建声明规则 3，然后选择 **Finish**（完成）。
   + 对于 **Claim Rule name**（声明规则名称），输入 **Get AD Groups**。
   + 对于 **Rule template**（规则模板），使用 **Send Claims Using a Custom Rule**（通过自定义规则发送声明）。
   + 对于 **Custom rule**（自定义规则），输入以下代码：

     ```
     c:[Type == "http://schemas.microsoft.com/ws/2008/06/identity/claims/windowsaccountname", 
      Issuer == "AD AUTHORITY"]=> add(store = "Active Directory", types = ("http://temp/variable"),  
      query = ";tokenGroups;{0}", param = c.Value);
     ```  
![\[创建第三条声明规则。\]](http://docs.amazonaws.cn/athena/latest/ug/images/odbc-adfs-saml-20.png)

1. 选择**添加规则**。输入以下信息以创建声明规则 4，然后选择 **Finish**（完成）。
   + 对于 **Claim Rule name**（声明规则名称），输入 **Role**。
   + 对于 **Rule template**（规则模板），使用 **Send Claims Using a Custom Rule**（通过自定义规则发送声明）。
   + 对于 **Custom rule**（自定义规则），输入以下代码以及您之前创建的 SAML 提供商的账号和账户名称：

     ```
     c:[Type == "http://temp/variable", Value =~ "(?i)^aws-"]=> issue(Type = "https://aws.amazon.com/SAML/Attributes/Role",  
     Value = RegExReplace(c.Value, "aws-", "arn:aws:iam::AWS_ACCOUNT_NUMBER:saml-provider/adfs-saml-provider,arn:aws:iam:: AWS_ACCOUNT_NUMBER:role/"));
     ```  
![\[创建第四条声明规则。\]](http://docs.amazonaws.cn/athena/latest/ug/images/odbc-adfs-saml-21.png)

## 3. 创建 Active Directory 用户和组


现在，您可以创建要访问 Athena 的 AD 用户以及置放这些用户的 AD 组，以便按组控制访问级别。创建对数据访问模式进行分类的 AD 组后，您可以将用户添加到这些组中。

**创建要访问 Athena 的 AD 用户**

1. 在“服务器管理器”控制面板上，选择 **Tools**（工具），然后选择 **Active Directory Users and Computers**（Active Directory 用户和计算机）。  
![\[依次选择 Tools（工具）、Active Directory Users and Computers（Active Directory 用户和计算机）。\]](http://docs.amazonaws.cn/athena/latest/ug/images/odbc-adfs-saml-22.png)

1. 在导航窗格中，选择 **Users**（用户）。

1. 在 **Active Directory Users and Computers**（Active Directory 用户和计算机）工具栏上，选择 **Create user**（创建用户）选项。  
![\[选择创建用户。\]](http://docs.amazonaws.cn/athena/latest/ug/images/odbc-adfs-saml-23.png)

1. 在 **New Object – User**（新对象 – 用户）对话框中，对于 **First name**（名字）、**Last name**（姓氏）和 **Full name**（全名），输入名称。本教程使用的是 **Jane Doe**。  
![\[输入用户名称。\]](http://docs.amazonaws.cn/athena/latest/ug/images/odbc-adfs-saml-24.png)

1. 选择**下一步**。

1. 对于 **Password**（密码），输入密码，然后重新键入以确认。

   为简单起见，本教程取消选择 **User must change password at next sign on**（用户下次登录时必须更改密码）。在真实场景中，您应要求新建用户更改其密码。  
![\[输入密码。\]](http://docs.amazonaws.cn/athena/latest/ug/images/odbc-adfs-saml-25.png)

1. 选择**下一步**。

1. 选择**结束**。  
![\[选择结束。\]](http://docs.amazonaws.cn/athena/latest/ug/images/odbc-adfs-saml-26.png)

1. 在 **Active Directory Users and Computers**（Active Directory 用户和计算机）中，选择用户名称。

1. 在用户的 **Properties**（属性）对话框中，对于 **E-mail**（电子邮件），输入电子邮件地址。本教程使用的是 **jane@example.com**。  
![\[输入电子邮箱地址。\]](http://docs.amazonaws.cn/athena/latest/ug/images/odbc-adfs-saml-27.png)

1. 选择**确定**。

### 创建 AD 组来表示数据访问模式


您可以创建 AD 组，其成员在登录 Amazon 时担任 `adfs-data-access` IAM 角色。以下示例创建了一个名为 aws-adfs-data-access 的 AD 组。

**创建 AD 组**

1. 在“服务器管理器”控制面板上，从 **Tools**（工具）菜单中，选择 **Active Directory Users and Computers**（Active Directory 用户和计算机）。

1. 在工具栏上，选择 **Create new group**（创建新组）选项。  
![\[选择 Create New Group（创建新组）。\]](http://docs.amazonaws.cn/athena/latest/ug/images/odbc-adfs-saml-28.png)

1. 在 **New Object – Group**（新对象 – 组）对话框中，输入以下信息：
   + 对于 **Group Name**（组名称），输入 **aws-adfs-data-access**。
   + 对于 **Group scope**（组范围），选择 **Global**（全局）。
   + 对于 **Group type**（组类型），选择 **Security**（安全）。  
![\[在 AD 中创建全局安全组。\]](http://docs.amazonaws.cn/athena/latest/ug/images/odbc-adfs-saml-29.png)

1. 选择**确定**。

### 将 AD 用户添加到相应的组


现在，您已创建 AD 用户和 AD 组，可将该用户添加到该组。

**将 AD 用户添加到 AD 组**

1. 在“服务器管理器”控制面板上，在 **Tools**（工具）菜单中，选择 **Active Directory Users and Computers**（Active Directory 用户和计算机）。

1. 对于 **First name**（名字）和 **Last name**（姓氏），选择一个用户（例如 **Jane Doe**）。

1. 在用户的 **Properties**（属性）对话框中，在 **Member Of**（隶属于）选项卡上，选择 **Add**（添加）。  
![\[选择添加。\]](http://docs.amazonaws.cn/athena/latest/ug/images/odbc-adfs-saml-30.png)

1. 根据要求添加一个或多个 AD FS 组。本教程添加了 **aws-adfs-data-access** 组。

1. 在 **Select Groups**（选择组）对话框中，对于 **Enter the object names to select**（输入要选择的对象名称），输入您创建的 AD FS 组名称（例如 **aws-adfs-data-access**），然后选择 **Check Names**（检查名称）。  
![\[选择 Check Names（检查名称）。\]](http://docs.amazonaws.cn/athena/latest/ug/images/odbc-adfs-saml-31.png)

1. 选择**确定**。

   在用户的 **Properties**（属性）对话框中，AD 组名称将在 **Member of**（隶属于）列表中显示。  
![\[AD 组已添加到用户属性。\]](http://docs.amazonaws.cn/athena/latest/ug/images/odbc-adfs-saml-32.png)

1. 选择 **Apply**（应用），然后选择 **OK**（确定）。

## 4. 配置 AD FS ODBC 与 Athena 的连接


创建 AD 用户和组后，您就可以使用 Windows 中的 ODBC 数据来源程序为 AD FS 配置 Athena ODBC 连接。

**配置 AD FS ODBC 与 Athena 的连接**

1. 为 Athena 安装 ODBC 驱动程序。有关下载链接，请参阅 [通过 ODBC 连接到 Amazon Athena](connect-with-odbc.md)。

1. 在 Windows 中，依次选择 **Start**（开始）、**ODBC Data Sources**（ODBC 数据来源）。

1. 在 **ODBC 数据来源管理器**程序中，选择 **Add**（添加）。  
![\[选择 Add（添加）以添加 ODBC 数据来源。\]](http://docs.amazonaws.cn/athena/latest/ug/images/odbc-adfs-saml-33.png)

1. 在 **Create New Data Source**（创建新数据来源）对话框中，选择 **Simba Athena ODBC 驱动程序**，然后选择 **Finish**（完成）。  
![\[选择 Simba Athena ODBC Driver（Simba Athena ODBC 驱动程序）。\]](http://docs.amazonaws.cn/athena/latest/ug/images/odbc-adfs-saml-34.png)

1. 在 **Simba Athena ODBC Driver DSN Setup**（Simba Athena ODBC 驱动程序 DSN 设置）对话框中，输入下列值：
   + 对于 **Data Source Name**（数据来源名称），输入数据来源的名称（例如，** Athena-odbc-test**）。
   + 在 **Description**（说明）中，为数据来源输入说明。
   + 在 **Amazon Web Services 区域** 中，输入您正在使用的 Amazon Web Services 区域（例如 ** us-west-1**）。
   + 在 **S3 Output Location**（S3 输出位置）中，输入要存储输出的 Amazon S3 路径。  
![\[为 Simba Athena ODBC Driver DSN Setup（Simba Athena ODBC 驱动程序 DSN 设置）输入值。\]](http://docs.amazonaws.cn/athena/latest/ug/images/odbc-adfs-saml-35.png)

1. 选择 **Authentication Options**（身份验证选项）。

1. 在 **Authentication Options**（身份验证选项）对话框中，指定下列值：
   + 对于 **Authentication Type**（身份验证类型），选择 **ADFS**。
   + 对于 **User**（用户），输入用户的电子邮件地址（例如 **jane@example.com**）。
   + 对于 **Password**（密码），输入用户 ADFS 密码的值。
   + 对于 **IdP Host**（IdP 主机），输入 AD FS 服务器名称（例如 **adfs.example.com**）。
   + 对于 **IdP Port**（IdP 端口），使用默认值 **443**。
   + 选择 **SSL Insecure**（SSL 不安全）选项。  
![\[配置身份验证选项。\]](http://docs.amazonaws.cn/athena/latest/ug/images/odbc-adfs-saml-37.png)

1. 选择 **OK**（确定）以关闭 **Authentication Options**（身份验证选项）。

1. 选择 **Test**（测试）以测试连接，或者 **OK**（确定）以完成。

# 使用 Okta 插件和 Okta 身份提供商为 ODBC 配置 SSO
适用于 ODBC 和 Okta 的 SSO

本页说明了如何配置 Amazon Athena ODBC 驱动程序和 Okta 插件，以使用 Okta 身份提供者添加单点登录（SSO）功能。

## 先决条件


要完成本教程中的步骤，需要以下内容：
+ Amazon Athena ODBC 驱动程序。有关下载链接，请参阅 [通过 ODBC 连接到 Amazon Athena](connect-with-odbc.md)。
+ 要与 SAML 一起使用的 IAM 角色。有关更多信息，请参阅《*IAM 用户指南*》中的[创建用于 SAML 2.0 联合身份验证的角色](https://docs.amazonaws.cn/IAM/latest/UserGuide/id_roles_create_for-idp_saml.html)。
+ Okta 账户。要了解相关信息，请访问 [Okta.com](https://www.okta.com/)。

## 在 Okta 中创建应用程序集成


首先，使用 Okta 控制面板创建和配置 SAML 2.0 应用程序以单点登录 Athena。您可以在 Okta 中使用现有的 Redshift 应用程序来配置对 Athena 的访问权限。

**在 Okta 中创建一个应用程序集成**

1. 在 [Okta.com](https://www.okta.com/) 上登录账户的管理员页面。

1. 在导航窗格中，选择 **Applications**（应用程序）、**Applications**（应用程序）。

1. 在 **Applications**（应用程序）页面上，选择 **Browse App Catalog**（浏览应用程序目录）。

1. 在 **Browse App Integration Catalog**（浏览应用程序集成目录）页面的 **Use Case**（使用场景）部分中，选择 **All Integrations**（所有集成）。

1. 在搜索框中输入 **Amazon Web Services Redshift**，然后选择 **Amazon Web Services Redshift SAML**。

1. 选择 **Add Integration**（添加集成）。  
![\[选择 Add Integration（添加集成）。\]](http://docs.amazonaws.cn/athena/latest/ug/images/odbc-okta-plugin-1.png)

1. 在 **General Settings Required**（必填常规设置）部分中，对于 **Application label**（应用程序标注），输入应用程序的名称。本教程使用的名称是 **Athena-ODBC-Okta**。  
![\[输入 Oktak 应用程序的名称。\]](http://docs.amazonaws.cn/athena/latest/ug/images/odbc-okta-plugin-2.png)

1. 选择**完成**。

1. 在 Okta 应用程序页面（例如，**Athena-ODBC-Okta**）上，选择 **Sign On**（登录）。  
![\[选择 Sign On（登录）选项卡。\]](http://docs.amazonaws.cn/athena/latest/ug/images/odbc-okta-plugin-3.png)

1. 在 **Settings**（设置）部分中，选择 **Edit**（编辑）。  
![\[选择编辑。\]](http://docs.amazonaws.cn/athena/latest/ug/images/odbc-okta-plugin-4.png)

1. 在 **Advanced Sign-on Settings**（高级登录设置）部分中，配置以下值。
   + 对于 **IdP ARN and Role ARN**（IdP ARN 和角色 ARN），输入您的 Amazon IDP ARN 和角色 ARN，用逗号分隔。有关 IAM 角色格式的信息，请参阅《*IAM 用户指南*》中的[为身份验证响应配置 SAML 断言](https://docs.amazonaws.cn/IAM/latest/UserGuide/id_roles_providers_create_saml_assertions.html)。
   + 对于 **Session Duration**（会话持续时间），输入一个介于 900 到 43200 秒之间的值。本教程使用的是默认值 3600（1 小时）。  
![\[输入高级登录设置。\]](http://docs.amazonaws.cn/athena/latest/ug/images/odbc-okta-plugin-5.png)

   Athena 不使用 **DbUser Format**（DbUser 格式）、**AutoCreate**（自动创建）和 **Allowed DBGroups**（允许的数据库组）设置。您不需要配置这些设置。

1. 选择**保存**。

## 从 Okta 检索 ODBC 配置信息


您现在已经创建了 Okta 应用程序，可以检索应用程序的 ID 和 IdP 主机 URL。稍后在配置 ODBC 以连接到 Athena 时将需要这些信息。

**从 Okta 检索 ODBC 配置信息**

1. 选择 Okta 应用程序的 **General**（常规）选项卡，然后向下滚动到 **App Embed Link**（应用程序嵌入式链接）部分。  
![\[Okta 应用程序的嵌入式链接 URL。\]](http://docs.amazonaws.cn/athena/latest/ug/images/odbc-okta-plugin-6.png)

   **Embed Link**（嵌入式链接）URL 采用以下格式：

   ```
   https://trial-1234567.okta.com/home/amazon_aws_redshift/Abc1de2fghi3J45kL678/abc1defghij2klmNo3p4
   ```

1. 从您的 **Embed Link**（嵌入式链接）URL 中提取并保存以下片段：
   + `https://` 之后的第一个片段，直至（包含） `okta.com`（例如，**trial-1234567.okta.com**）。这是您的 IdP 主机。
   + URL 的最后两个片段，包括中间的正斜杠。这些片段是两个有 20 个字符的字符串，混合了数字和大小写字母（例如 **Abc1de2fghi3J45kL678/abc1defghij2klmNo3p4**）。这是您的应用程序 ID。

## 为 Okta 应用程序添加一个用户


您现在可以为您的 Okta 应用程序添加一个用户。

**为 Okta 应用程序添加一个用户**

1. 在左侧导航窗格中，选择 **Directory**（目录），然后选择 **People**（人员）。

1. 选择 **Add person**（添加人员）。  
![\[选择 Add person（添加人员）。\]](http://docs.amazonaws.cn/athena/latest/ug/images/odbc-okta-plugin-7.png)

1. 在 **Add Person**（添加人员）对话框中，输入下列信息。
   + 对于 **First name**（名字）和 **Last name**（姓氏），输入值。本教程使用的是 **test user**。
   + 输入 **Username**（用户名）和 **Primary email**（主电子邮件）的值。对于这两个参数，本教程使用的都是 **test@amazon.com**。您对密码的安全要求可能会有所不同。  
![\[输入用户凭证。\]](http://docs.amazonaws.cn/athena/latest/ug/images/odbc-okta-plugin-8.png)

1. 选择**保存**。

现在您可以将创建的用户分配到您的应用程序。

**要将此用户分配给您的应用程序：**

1. 在导航窗格中，选择 **Applications**（应用程序）、**Applications**（应用程序），然后选择应用程序的名称（例如，**Athena-ODBC-Okta**)。

1. 选择 **Assign**（分配），然后选择 **Assign to People**（分配给人员）。  
![\[选择 Assign to People（分配给人员）。\]](http://docs.amazonaws.cn/athena/latest/ug/images/odbc-okta-plugin-9.png)

1. 为您的用户选择 **Assign**（分配）选项，然后选择 **Done**（完成）。  
![\[选择 Assign（分配），然后选择 Done（完成）。\]](http://docs.amazonaws.cn/athena/latest/ug/images/odbc-okta-plugin-10.png)

1. 在提示时选择 **Save and Go Back**（保存并返回）。此对话框会显示用户的状态为 **Assigned**（已分配）。

1. 选择**完成**。

1. 选择 **Sign On**（登录）选项卡。

1. 向下滚动到 **SAML Signing Certificates**（SAML 签名证书）部分。

1. 选择**操作**。

1. 打开 **View IdP metadata**（查看 IdP 元数据）的上下文（右键单击），然后选择浏览器选项以保存文件。

1. 使用 `.xml` 扩展名保存文件。  
![\[将 IdP 元数据保存到本地 XML 文件。\]](http://docs.amazonaws.cn/athena/latest/ug/images/odbc-okta-plugin-11.png)

## 创建一个 Amazon SAML 身份提供者和角色


现在您可以在 Amazon 中将元数据 XML 文件上传到 IAM 控制台。您将使用此文件来创建一个 AmazonSAML 身份提供者和角色。使用 Amazon 服务管理员帐户来执行这些步骤。

**在 Amazon 中创建一个 SAML 身份提供者和角色**

1. 登录 Amazon Web Services 管理控制台，然后通过以下网址打开 IAM 控制台：[https://console.aws.amazon.com/IAM/](https://console.amazonaws.cn/IAM/)。

1. 在导航窗格中，选择 **Identity providers**（身份提供程序），然后选择 **Add provider**（添加提供商）。  
![\[选择添加提供程序。\]](http://docs.amazonaws.cn/athena/latest/ug/images/odbc-okta-plugin-12.png)

1. 在 **Add an Identity provider**（添加身份提供者）页面上，对于 **Configure provider**（配置提供者），输入以下信息。
   + 对于 **Provider type**（提供程序类型），选择 **SAML**。
   + 对于 **Provider name**（提供者名称），为您的提供者输入一个名称（例如 ** AthenaODBCOkta**）。
   + 对于 **Metadata document**（元数据文档），请使用 **Select file**（选择文件）选项上载您下载的身份提供程序 (IdP) 元数据 XML 文件。  
![\[输入身份提供程序的信息。\]](http://docs.amazonaws.cn/athena/latest/ug/images/odbc-okta-plugin-13.png)

1. 选择**添加提供程序**。

### 创建一个用于访问 Athena 和 Amazon S3 的 IAM 角色


您现在可以创建一个用于访问 Athena 和 Amazon S3 的 IAM 角色。您需要将此角色分配给您的用户，从而可以为该用户提供对 Athena 的单点登录访问权限。

**为您的用户创建一个 IAM 角色**

1. 在 IAM 控制台的导航窗格中，选择 **Roles**（角色），然后选择 **Create role**（创建角色）。  
![\[选择创建角色。\]](http://docs.amazonaws.cn/athena/latest/ug/images/odbc-okta-plugin-14.png)

1. 在 **Create role**（创建角色）页面上，选择以下选项：
   + 对于 **Select type of trusted entity**（选择受信任实体的类型），选择 **SAML 2.0 Federation**。
   + 对于 **SAML 2.0–based provider**（基于 SAML 2.0 的提供者），请选择您创建的 SAML 身份提供者（例如，**AthenaODBCOkta**）。
   + 选择 **Allow programmatic and Amazon Web Services 管理控制台 access**（允许编程和访问）。  
![\[选择 Create role（创建角色）页面上的选项。\]](http://docs.amazonaws.cn/athena/latest/ug/images/odbc-okta-plugin-15.png)

1. 选择**下一步**。

1. 在 **Add Permissions**（添加权限）页面上，对于 **Filter policies**（筛选策略），输入 **AthenaFull**，然后按 ENTER 键。

1. 选择名为 `AmazonAthenaFullAccess` 的托管式策略，然后选择 **Next**（下一步）。  
![\[选择名为 AmazonAthenaFullAccess 的托管式策略。\]](http://docs.amazonaws.cn/athena/latest/ug/images/odbc-okta-plugin-16.png)

1. 在 **Name, review, and create**（命名、检查并创建）页面上，对于 **Role name**（角色名称），输入角色的名称（例如，**Athena-ODBC-OktaRole**），然后选择 **Create role**（创建角色）。

## 配置 Okta ODBC 到 Athena 的连接


您现在可以在 Windows 中使用 ODBC 数据源程序配置 Okta ODBC 到 Athena 的连接。

**配置 Okta ODBC 到 Athena 的连接**

1. 在 Windows 中，启动 **ODBC 数据源**程序。

1. 在 **ODBC 数据源管理器**程序中，选择 **Add**（添加）。  
![\[选择添加。\]](http://docs.amazonaws.cn/athena/latest/ug/images/odbc-okta-plugin-17.png)

1. 选择 **Simba Athena ODBC 驱动程序**，然后选择 **Finish**（完成）。  
![\[选择 Athena ODBC 驱动程序。\]](http://docs.amazonaws.cn/athena/latest/ug/images/odbc-okta-plugin-18.png)

1. 在 **SIMBA Athena ODBC 驱动程序 DSN 设置**对话框中，输入描述的值。
   + 对于 **Data Source Name**（数据源名称），输入数据源的名称（例如，**Athena ODBC 64**）。
   + 在 **Description**（说明）中，为数据来源输入说明。
   + 对于 **Amazon Web Services 区域**，输入您正在使用的 Amazon Web Services 区域（例如 **us-west-1**）。
   + 在 **S3 Output Location**（S3 输出位置）中，输入要存储输出的 Amazon S3 路径。  
![\[输入数据来源名称设置的值。\]](http://docs.amazonaws.cn/athena/latest/ug/images/odbc-okta-plugin-19.png)

1. 选择 **Authentication Options**（身份验证选项）。

1. 在 **Authentication Options**（身份验证选项）对话框中，选择或输入以下值。
   + 对于 **Authentication Type**（身份验证类型），选择 **Okta**。
   + 对于**用户**，请输入您的 Okta 用户名。
   + 对于**密码**，请输入您的 Okta 密码。
   + 对于 **IdP Host**（IdP 主机），输入您之前记录的值（例如，**trial-1234567.okta.com**）。
   + 对于 **IdP Port**（IdP 端口），输入 **443**。
   + 对于 **App ID**（应用程序 ID），输入您之前记录的值（Okta 嵌入式链接的最后两个片段）。
   + 对于 **Okta App Name**（Okta 应用程序名称），输入 **amazon\$1aws\$1redshift**。  
![\[输入身份验证选项。\]](http://docs.amazonaws.cn/athena/latest/ug/images/odbc-okta-plugin-20.png)

1. 选择**确定**。

1. 选择 **Test**（测试）以测试连接，或者选择 **OK**（确定）以完成。

# 使用 ODBC、SAML 2.0 和 Okta 身份提供商配置单点登录
使用 ODBC、SAML 2.0 和 Okta 配置 SSO

要连接到数据源，您可以将 Amazon Athena 与 PingOne、Okta、OneLogin 等身份提供商 (IdP) 一起使用。从 Athena ODBC 驱动程序版本 1.1.13 和 Athena JDBC 驱动程序版本 2.0.25 开始，驱动程序中都包括一个 SAML 浏览器插件，您可以配置此插件以与任何 SAML 2.0 提供商一起使用。本主题向您展示如何配置 Amazon Athena ODBC 驱动程序和基于浏览器的 SAML 插件，从而使用 Okta 身份提供商添加单点登录（SSO）功能。

## 先决条件


要完成本教程中的步骤，需要以下内容：
+ Athena ODBC 驱动程序版本 1.1.13 或更高版本。支持浏览器 SAML 的1.1.13 及更高版本。有关下载链接，请参阅[使用 ODBC 连接到 Amazon Athena](https://docs.amazonaws.cn/athena/latest/ug/connect-with-odbc.html)。
+ 要与 SAML 一起使用的 IAM 角色。有关更多信息，请参阅《*IAM 用户指南*》中的[创建用于 SAML 2.0 联合身份验证的角色](https://docs.amazonaws.cn/IAM/latest/UserGuide/id_roles_create_for-idp_saml.html)。
+ Okta 账户。有关信息，请访问 [okta.com](https://www.okta.com/)。

## 在 Okta 中创建应用程序集成


首先，使用 Okta 控制面板创建和配置 SAML 2.0 应用程序以单点登录 Athena。

**使用 Okta 控制面板设置 Athena 的单点登录**

1. 在 `okta.com` 上登录到 Okta 管理员页面。

1. 在导航窗格中，选择 **Application**（应用程序），**Application**（应用程序）。

1. 在 **Applications**（应用程序）页面上，选择 **Create App Integration**（创建应用程序集成）。  
![\[选择 Create App Integration（创建应用程序集成）。\]](http://docs.amazonaws.cn/athena/latest/ug/images/okta-saml-sso-1.png)

1. 在 **Create a new app integration**（创建新应用程序集成）对话框中，找到 **Sign-in method**（登录方法），选择 **SAML 2.0**，然后选择 **Next**（下一步）。  
![\[选择 SAML 2.0\]](http://docs.amazonaws.cn/athena/latest/ug/images/okta-saml-sso-2.png)

1. 在 **Create SAML Integration**（创建 SAML 集成）页面的 **General Settings**（常规设置）部分中，输入应用程序的名称。本教程使用名称 **SSO Athena**。  
![\[输入 Oktak 应用程序的名称。\]](http://docs.amazonaws.cn/athena/latest/ug/images/okta-saml-sso-3.png)

1. 选择**下一步**。

1. 在 **Configure SAML**（配置 SAML）页面的 **SAML Settings**（SAML 设置）部分，输入以下值：
   + 在 **Single sign on URL**（单点登录 URL）中，输入 **http://localhost:7890/athena**
   + 在 **Audience URI**（受众 URI）中，输入 **urn:amazon:webservices**  
![\[输入 SAML 设置。\]](http://docs.amazonaws.cn/athena/latest/ug/images/okta-saml-sso-4.png)

1. 对于 **Attribute Statements (optional)**（属性语句（可选）），输入以下两个名称/值对。这些是必填的映射属性。
   + 在 **Name**（名称）中，输入以下 URL：

     **https://aws.amazon.com/SAML/Attributes/Role**

     在 **Value**（值）中，输入 IAM 角色的名称。有关 IAM 角色格式的信息，请参阅《*IAM 用户指南*》中的[为身份验证响应配置 SAML 断言](https://docs.amazonaws.cn/IAM/latest/UserGuide/id_roles_providers_create_saml_assertions.html)。
   + 在 **Name**（名称）中，输入以下 URL：

     **https://aws.amazon.com/SAML/Attributes/RoleSessionName**

     对于**值**，请输入 **user.email**。

1. 选择**下一步**，然后选择**完成**。

   当 Okta 创建应用程序时，它还会创建您的登录 URL，接下来您将检索该 URL。

## 从 Okta 控制面板获取登录 URL


现在您的应用程序已经创建完毕，您可以从 Okta 控制面板获取其登录 URL 和其他元数据。

**从 Okta 控制面板获取登录 URL**

1. 在 Okta 导航窗格中，选择 **Application**（应用程序），**Application**（应用程序）。

1. 选择要查找登录 URL 的应用程序（例如，**AthenNasso**)。

1. 在应用程序页面上，选择 **Sign On**（登录）。  
![\[选择 Sign On（登录）。\]](http://docs.amazonaws.cn/athena/latest/ug/images/okta-saml-sso-6.png)

1. 选择 **View Setup Instructions**（查看设置说明）。  
![\[选择 View Setup Instructions（查看设置说明）。\]](http://docs.amazonaws.cn/athena/latest/ug/images/okta-saml-sso-7.png)

1. 在 **How to Configure SAML 2.0 for Athena SSO**（如何为 Athena SSO 配置 SAML 2.0）页面中，找到 **Identity Provider Issuer**（身份提供商发布者）的 URL。Okta 控制面板中的某些地方会将此 URL 称为 **SAML 发布者 ID**。  
![\[Identity Provider Issuer（身份提供商发布者）的值。\]](http://docs.amazonaws.cn/athena/latest/ug/images/okta-saml-sso-8.png)

1. 复制或存储 **Identity Provider Single Sign-On URL**（身份提供商单点登录 URL）的值。

   在下一节中，配置 ODBC 连接时，您将提供此值作为 SAML 浏览器插件的**登录 URL** 连接参数。

## 配置浏览器 SAML ODBC 与 Athena 的连接


现在，您可以在 Windows 中使用 ODBC 数据源程序配置浏览器 SAML 到 Athena 的连接。

**配置浏览器 SAML ODBC 到 Athena 的连接**

1. 在 Windows 中，启动 **ODBC 数据源**程序。

1. 在 **ODBC 数据源管理器**程序中，选择 **Add**（添加）。  
![\[选择添加。\]](http://docs.amazonaws.cn/athena/latest/ug/images/okta-saml-sso-9.png)

1. 选择 **Simba Athena ODBC 驱动程序**，然后选择 **Finish**（完成）。  
![\[选择 Simba Athena 驱动程序\]](http://docs.amazonaws.cn/athena/latest/ug/images/okta-saml-sso-10.png)

1. 在 **SIMBA Athena ODBC 驱动程序 DSN 设置**对话框中，输入描述的值。  
![\[输入 DSN 设置值。\]](http://docs.amazonaws.cn/athena/latest/ug/images/okta-saml-sso-11.png)
   + 在 **Data Source Name**（数据源名称）中，输入数据源的名称（例如，**64 Athena ODBC**）。
   + 在 **Description**（说明）中，为数据源输入说明。
   + 在 **Amazon Web Services 区域** 中，输入您正在使用的 Amazon Web Services 区域（例如 **us-west-1**）。
   + 在 **S3 Output Location**（S3 输出位置）中，输入要存储输出的 Amazon S3 路径。

1. 选择 **Authentication Options**（身份验证选项）。

1. 在 **Authentication Options**（身份验证选项）对话框中，选择或输入以下值。  
![\[输入身份验证选项。\]](http://docs.amazonaws.cn/athena/latest/ug/images/okta-saml-sso-12.png)
   + 在 **Authentication Type**（身份验证类型）中，选择 **BrowserSAML**。
   + 在 **Login URL**（登录 URL）中，输入您从 Okta 控制面板中获得的 **Identity Provider Single Sign-On URL**（身份提供商单点登录 URL）。
   + 对于 **Listen Port**（侦听端口），请输入 **7890**。
   + 对于 **Timeout (sec)**（超时（秒）），请输入连接超时的秒数。

1. 选择 **OK**（确定）以关闭 **Authentication Options**（身份验证选项）。

1. 选择 **Test**（测试）以测试连接，或者 **OK**（确定）以完成。