

 从补丁 198 开始，Amazon Redshift 将不再支持创建新的 Python UDF。现有的 Python UDF 将继续正常运行至 2026 年 6 月 30 日。有关更多信息，请参阅[博客文章](https://aws.amazon.com/blogs/big-data/amazon-redshift-python-user-defined-functions-will-reach-end-of-support-after-june-30-2026/)。

# Okta
<a name="setup-identity-provider-okta"></a>

您可以将 Okta 作为身份提供者 (IdP) 以访问 Amazon Redshift 集群。本教程将向您展示如何将 Okta 用作身份提供者（IdP）来访问 Amazon Redshift 集群。

## 第 1 步：设置 Okta 和您的 AWS 账户相互信任
<a name="setup-identity-provider-okta-trust"></a>

以下过程介绍如何建立信任关系。

**将 Okta 和您的 AWS 账户设置为相互信任**

1. 创建或使用现有的 Amazon Redshift 集群，以使 Okta 用户连接到该集群。要配置连接，需要此集群的某些属性，例如集群标识符。有关更多信息，请参阅[创建集群](https://docs.aws.amazon.com/redshift/latest/mgmt/create-cluster.html)。

1. 在 Okta 门户上添加 Amazon Redshift 以作为新应用程序。有关详细步骤，请参阅 [Okta 文档](https://developer.okta.com/docs/)。
   + 选择**添加应用程序**。
   + 在**添加应用程序**下面，选择**创建新的应用程序**。
   + 在**创建新添加应用程序集成**页面上，为**平台** 选择 **Web**。
   + 对于**登录方法**，请选择 **SAML v2.0**。
   + 在**常规设置**页面上，为**应用程序名称** 输入 **{{your-redshift-saml-sso-name}}**。这是您的应用程序的名称。
   + 在 **SAML 设置**页面上，为**单点登录 URL** 输入 **{{your-redshift-local-host-url}}**。这是 SAML 断言重定向到的本地主机和端口，例如 `http://localhost:7890/redshift/`。

1. 将**单点登录 URL** 作为**收件人 URL** 和**目标 URL**。

1. 对于**签名**，请选择**签名断言**。

1. 对于**受众 URI (SP 实体 ID)**，为声明输入 **urn:amazon:webservices**，如下表中所示。

1.  在**高级设置**部分中，为 **SAML 颁发者 ID** 输入 **{{your-Identity-Provider-Issuer-ID}}**，您可以在**查看设置说明**部分中找到该 ID。

1. 在**属性语句**部分中，创建声明，如下表中所示。    
[See the AWS documentation website for more details](http://docs.aws.amazon.com/zh_cn/redshift/latest/mgmt/setup-identity-provider-okta.html)

1. 在**应用程序嵌入式链接**部分中，找到可用作浏览器 SAML 插件登录 URL 的 URL。

1. 在 IAM 控制台上创建 IAM SAML 身份提供者。您提供的元数据文档是您在设置 Okta 时保存的联合元数据 XML 文件。有关详细步骤，请参阅 *IAM 用户指南*中的[创建和管理 IAM 身份提供者（控制台）](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_providers_create_saml.html#idp-manage-identityprovider-console)。

1. 在 IAM 控制台上为 SAML 2.0 联合身份创建 IAM 角色。有关详细步骤，请参阅 *IAM 用户指南*中的[创建用于 SAML 的角色](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-idp_saml.html#idp_saml_Create)。

1. 创建一个 IAM 策略，您可以将其附加到您在 IAM 控制台上为 SAML 2.0 联合身份验证创建的 IAM 角色。有关详细步骤，请参阅《IAM 用户指南》**中的[创建 IAM 策略（控制台）](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create.html#access_policies_create-start)。有关 Azure AD 示例，请参阅[设置 JDBC 或 ODBC 单点登录身份验证](setup-azure-ad-identity-provider.md)。

## 第 2 步：设置 JDBC 或 ODBC，以便向 Okta 进行身份验证
<a name="setup-identity-provider-okta-auth"></a>

------
#### [ JDBC ]

**设置 JDBC 以在 Okta 中进行身份验证**
+ 将数据库客户端配置为通过 JDBC 并使用 Okta 单点登录连接到集群。

  您可以使用任何采用 JDBC 驱动程序的客户端通过 Okta 单点登录进行连接，也可以使用像 Java 这样的语言通过脚本进行连接。有关安装和配置信息，请参阅[为 Amazon Redshift 配置 JDBC 驱动程序版本 2.x 连接](jdbc20-install.md)。

  例如，您可以使用 SQLWorkbench/J 作为客户端。当您配置 SQLWorkbench/J 时，数据库的 URL 使用以下格式。

  ```
  jdbc:redshift:iam://{{cluster-identifier}}:{{us-west-1}}/{{dev}}
  ```

  如果您使用 SQLWorkbench/J 作为客户端，请执行以下步骤：

  1. 启动 SQL Workbench/J。在**选择连接配置文件**页面中，添加一个**配置文件组**，例如，**Okta**。

  1. 对于**连接配置文件**，请输入 **{{your-connection-profile-name}}**，例如，**Okta**。

  1. 选择**管理驱动程序**，然后选择 **Amazon Redshift**。选择**库**旁边的**打开文件夹**图标，然后选择适当的 JDBC .jar 文件。

  1. 在**选择连接配置文件**页面上，向连接配置文件添加信息，如下所示：
     + 对于**用户**，请输入您的 Okta 用户名。这是您用于单点登录的 Okta 账户的用户名，该账户有权限访问您在尝试进行身份验证时使用的集群。
     + 对于**密码**，请输入您的 Okta 密码。
     + 对于**驱动程序**，请选择 **Amazon Redshift (com.amazon.redshift.jdbc.Driver)**。
     + 对于 **URL**，请输入 **jdbc:redshift:iam://{{your-cluster-identifier}}:{{your-cluster-region}}/{{your-database-name}}**。

  1. 选择**扩展属性**并执行以下操作之一：
     + 对于 **login\_url**，请输入 **{{your-okta-sso-login-url}}**。该值指定 URL 将单点登录作为身份验证方法以登录到 Okta。
     + 对于 Okta 单点登录，请为 **plugin\_name** 输入 **com.amazon.redshift.plugin.OktaCredentialsProvider**。此值指定驱动程序使用 Okta 单点登录作为身份验证方法。
     + 对于具有 MFA 的 Okta 单点登录，请为 **plugin\_name** 输入 **com.amazon.redshift.plugin.BrowserSamlCredentialsProvider**。此值指定驱动程序将具有 MFA 的 Okta 单点登录作为身份验证方法。

------
#### [ ODBC ]

**设置 ODBC 以在 Okta 中进行身份验证**
+ 将数据库客户端配置为通过 ODBC 并使用 Okta 单点登录连接到集群。

  Amazon Redshift 提供了适用于 Linux、Windows 和 macOS 操作系统的 ODBC 驱动程序。在安装 ODBC 驱动程序之前，请确定您的 SQL 客户端工具是 32 位还是 64 位。安装符合 SQL 客户端工具要求的 ODBC 驱动程序。

  在 Windows 上的 **Amazon Redshift ODBC 驱动程序 DSN 安装**页的**连接设置**下，输入以下信息：
  + 对于**数据源名称**，输入 **{{your-DSN}}**。这将指定用作 ODBC 配置文件名称的数据源名称。
  + 对于**身份验证类型**，请执行以下操作之一：
    + 对于 Okta 单点登录配置，请选择 **Identity Provider: Okta**。这是 ODBC 驱动程序在通过 Okta 单点登录进行身份验证时使用的身份验证方法。
    + 对于具有 MFA 的 Okta 单点登录配置，请选择 **Identity Provider: Browser SAML**。这是 ODBC 驱动程序在通过具有 MFA 的 Okta 单点登录进行身份验证时使用的身份验证方法。
  + 对于**集群 ID**，请输入 **{{your-cluster-identifier}}**。
  + 对于**区域**，请输入 **{{your-cluster-region}}**。
  + 对于**数据库**，请输入 **{{your-database-name}}**。
  + 对于**用户**，请输入 **{{your-okta-username}}**。这是您用于单点登录的 Okta 账户的用户名，该账户有权访问您在尝试进行身份验证时使用的集群。请仅将其用于**身份验证类型**为**身份提供者: Okta** 的情况。
  + 对于**密码**，请输入 **{{your-okta-password}}**。请仅将其用于 **Auth type (身份验证类型)** 为 **Identity Provider: Okta (身份提供者: Okta)** 的情况。

  在 macOS 和 Linux 上，按如下方式编辑 `odbc.ini` 文件：
**注意**  
所有条目不区分大小写。
  + 对于 **clusterid**，请输入 **{{your-cluster-identifier}}**。这是已创建的 Amazon Redshift 集群的名称。
  + 对于**区域**，请输入 **{{your-cluster-region}}**。这是已创建的 Amazon Redshift 集群的 AWS 区域。
  + 对于**数据库**，请输入 **{{your-database-name}}**。这是您尝试在 Amazon Redshift 集群上访问的数据库的名称。
  + 对于**区域设置**，请输入 **en-us**。这是显示错误消息的语言。
  + 对于 **iam**，请输入 **1**。此值指定要使用 IAM 凭证进行身份验证的驱动程序。
  + 对于 **plugin\_name**，请执行以下操作之一：
    + 对于具有 MFA 的 Okta 单点登录配置，请输入 **BrowserSAML**。这是 ODBC 驱动程序在通过具有 MFA 的 Okta 单点登录进行身份验证时使用的身份验证方法。
    + 对于 Okta 单点登录配置，请输入 **Okta**。这是 ODBC 驱动程序在通过 Okta 单点登录进行身份验证时使用的身份验证方法。
  + 对于 **uid**，请输入 **{{your-okta-username}}**。这是您用于单点登录的 Okta 账户的用户名，该账户有权访问您在尝试进行身份验证时使用的集群。请仅将其用于 **plugin\_name** 为 **Okta** 的情况。
  + 对于**密码**，请输入 **{{your-okta-password}}**。请仅将其用于 **plugin\_name** 为 **Okta** 的情况。
  + 对于 **login\_url**，请输入 **{{your-login-url}}**。这是返回 SAML 响应的启动单点登录 URL。这仅适用于浏览器 SAML 插件。
  + 对于 **idp\_response\_timeout**，请输入 **{{the-number-of-seconds}}**。这是等待 PingOne 响应的指定时间段（以秒为单位）。这仅适用于浏览器 SAML 插件。
  + 对于**侦听端口**，请输入 **{{your-listen-port}}**。这是本地服务器正在侦听的端口。默认值为 7890。这仅适用于浏览器 SAML 插件。

  在 macOS 和 Linux 上，还要编辑配置文件设置以添加以下导出。

  ```
  export ODBCINI=/opt/amazon/redshift/Setup/odbc.ini
  ```

  ```
  export ODBCINSTINI=/opt/amazon/redshift/Setup/odbcinst.ini
  ```

------