设置 Amazon Redshift IAM Identity Center OAuth

从 Tableau 2023.3.2 本地部署(Tableau Desktop、Tableau Server 和 Tableau Prep)开始以及 2024 年 3 月下旬的 Tableau Cloud 开始,您可以使用 OAuth 2.0/OIDC 将外部身份提供程序的身份联合到 Amazon Redshift。

注意:由于驱动程序限制,此功能不适用于 OSX。

这些说明适用于较新的 AWS IAM IDC 服务。有关原始 IAM 集成,请参见设置 Amazon Redshift IAM OAuth

根据身份提供程序的不同,配置集成需要执行不同的步骤。这是一个简略概述。Tableau 无法提供有关如何配置 AWS 或 IDP 的详细说明,但这是一般方法。

配置 IDP

  1. 在 IDP 上为 Tableau Desktop 和 Tableau Server 或 Tableau Cloud 创建 OAuth 客户端。Desktop 客户端应启用 PKCE 并使用 http://localhost 重定向。

  2. 添加用于角色授权的任何必需的自定义声明。

  3. 创建 Tableau OAuth 配置文件。请参见 GitHub(链接在新窗口中打开) 上的文档和示例(链接在新窗口中打开)。我们欢迎提供其他 IDP 的示例。

    1. 请务必在 Tableau OAuth 配置 ID 前添加“custom_”前缀。

    2. 如果您的 IDP 支持动态本地主机端口,则禁用 OAUTH_CAP_FIXED_PORT_IN_CALLBACK_URL。如果没有,请确保将多个本地主机回调 URL 添加到配置文件和 IDP 上的允许列表中。

  4. 在桌面计算机 和 Tableau Server 或 Tableau Cloud 站点上安装 Tableau OAuth 配置文件。

步骤 2:配置 IDP 和 AWS 上的角色

有关执行此操作的信息,请参见 AWS 文档。

步骤 3:连接到 Redshift

  1. 连接到 Redshift。

  2. “身份验证”选择 OAuth。

  3. “联合类型”选择 Identity Center。

  4. (可选)如有必要,请指定“Identity Center 命名空间”

正确配置后,您将被重定向到 IDP 以对 Tableau 的令牌进行身份验证和授权。Tableau 将收到访问令牌和刷新令牌。它将访问令牌发送给驱动程序进行身份验证。

Okta

如果使用 Okta,最好使用“自定义授权服务器”而不是“组织授权服务器”。自定义授权服务器更加灵活。默认情况下会创建自定义授权服务器,称为“默认”。授权 URL 应如下所示:

https://${yourOktaDomain}/oauth2/{authServerName}/v1/authorize

更新驱动程序

对于使用 IAM IDC 服务的 Redshift OAuth,您必须使用从版本 2.0.1.0 开始的 Redshift ODBC 驱动程序,该驱动程序可以从 https://github.com/aws/amazon-redshift-odbc-driver/tags(链接在新窗口中打开) 下载。请注意,没有适用于 OSX 的 v2 驱动程序。

Redshift IAM IDC OAuth 故障排除

如果您在第一次连接时看到来自驱动程序的无效/过期令牌的错误消息(错误消息中将包含类似 [28000] 或 [08001] 的 SQLState 错误代码),则 Tableau 已成功完成 OAuth 流程,并且驱动程序失败。这意味着 AWS 端或 IDP 端存在配置错误。驱动程序还可能返回权限或授权错误,这也不受 Tableau 的控制。

诊断这些错误的最佳方法是从图片中删除 Tableau。您首先需要获取访问令牌(IAM IDC 的默认设置)或访问令牌(如果自定义)以发送给驱动程序。

这是 Okta 的示例。几乎所有 IDP 都有一种非常相似的方法来做到这一点。请注意,若要使用此流程,您需要启用资源所有者密码授予类型。替换 IDP URL、客户端密文、客户端 ID、用户名和密码。

curl -X POST "https://OKTA_URL/v1/token" \
-H 'accept: application/json' \
-H "Authorization: Basic $(echo -n 'CLIENTID:CLIENTSECRET' | base64)" \
-H "Content-Type: application/x-www-form-urlencoded" \
-d "grant_type=password&username=USER&password=PASSWORD&scope=openid"

获得令牌后,您可以使用 DSN 进行测试。下面是在 Windows 上使用 ODBC 驱动程序管理器的示例。在 Mac 上,您可以使用 iODBC 驱动程序管理器 UI。在 Linux 上,您可以使用 Tableau Server 附带的 customer-bin 文件夹中的 isql 命令行工具。

感谢您的反馈!您的反馈已成功提交。谢谢!