

# 使用 Okta 插件和 Okta 身份提供商为 ODBC 配置 SSO
<a name="odbc-okta-plugin"></a>

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

## 先决条件
<a name="odbc-okta-plugin-prerequisites"></a>

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

## 在 Okta 中创建应用程序集成
<a name="odbc-okta-plugin-creating-an-app-integration-in-okta"></a>

首先，使用 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.aws.amazon.com/zh_cn/athena/latest/ug/images/odbc-okta-plugin-1.png)

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

1. 选择**完成**。

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

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

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

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

1. 选择**保存**。

## 从 Okta 检索 ODBC 配置信息
<a name="odbc-okta-plugin-retrieve-odbc-configuration-information-from-okta"></a>

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

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

1. 选择 Okta 应用程序的 **General**（常规）选项卡，然后向下滚动到 **App Embed Link**（应用程序嵌入式链接）部分。  
![\[Okta 应用程序的嵌入式链接 URL。\]](http://docs.aws.amazon.com/zh_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 应用程序添加一个用户
<a name="odbc-okta-plugin-add-a-user-to-the-okta-application"></a>

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

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

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

1. 选择 **Add person**（添加人员）。  
![\[选择 Add person（添加人员）。\]](http://docs.aws.amazon.com/zh_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.aws.amazon.com/zh_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.aws.amazon.com/zh_cn/athena/latest/ug/images/odbc-okta-plugin-9.png)

1. 为您的用户选择 **Assign**（分配）选项，然后选择 **Done**（完成）。  
![\[选择 Assign（分配），然后选择 Done（完成）。\]](http://docs.aws.amazon.com/zh_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.aws.amazon.com/zh_cn/athena/latest/ug/images/odbc-okta-plugin-11.png)

## 创建一个 AWS SAML 身份提供者和角色
<a name="odbc-okta-plugin-create-an-aws-saml-identity-provider-and-role"></a>

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

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

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

1. 在导航窗格中，选择 **Identity providers**（身份提供程序），然后选择 **Add provider**（添加提供商）。  
![\[选择添加提供程序。\]](http://docs.aws.amazon.com/zh_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.aws.amazon.com/zh_cn/athena/latest/ug/images/odbc-okta-plugin-13.png)

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

### 创建一个用于访问 Athena 和 Amazon S3 的 IAM 角色
<a name="odbc-okta-plugin-creating-an-iam-role-for-athena-and-amazon-s3-access"></a>

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

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

1. 在 IAM 控制台的导航窗格中，选择 **Roles**（角色），然后选择 **Create role**（创建角色）。  
![\[选择创建角色。\]](http://docs.aws.amazon.com/zh_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 AWS 管理控制台 access**（允许编程和访问）。  
![\[选择 Create role（创建角色）页面上的选项。\]](http://docs.aws.amazon.com/zh_cn/athena/latest/ug/images/odbc-okta-plugin-15.png)

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

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

1. 选择名为 `AmazonAthenaFullAccess` 的托管式策略，然后选择 **Next**（下一步）。  
![\[选择名为 AmazonAthenaFullAccess 的托管式策略。\]](http://docs.aws.amazon.com/zh_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 的连接
<a name="odbc-okta-plugin-configuring-the-okta-odbc-connection-to-athena"></a>

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

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

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

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

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

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

1. 选择**确定**。

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