用于提供 IAM 凭证的选项 - Amazon Redshift
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

用于提供 IAM 凭证的选项

要为 JDBC 或 ODBC 连接提供 IAM 凭证,请选择以下选项之一。

  • Amazon 配置文件

    作为以 JDBC 或 ODBC 设置形式提供凭证值的替代方案,您可在命名配置文件中放置这些值。有关更多信息,请参阅 使用配置文件

  • IAM 凭证

    以 JDBC 或 ODBC 设置形式提供 AccessKeyID 和 SecretAccessKey 的值,还可以选择提供 SessionToken 的值。SessionToken 仅对于具有临时凭证的 IAM 角色是必填的。有关更多信息,请参阅 用于提供 IAM 凭证的 JDBC 和 ODBC 选项

  • 身份提供者联合

    在使用身份提供者联合以允许身份提供者中的用户在 Amazon Redshift 中进行身份验证时,请指定凭证提供商插件的名称。有关更多信息,请参阅 使用凭证提供商插件

    Amazon Redshift JDBC 和 ODBC 驱动程序包括以下基于 SAML 的联合身份验证凭证提供商的插件:

    • Microsoft Active Directory 联合身份验证服务 (AD FS)

    • PingOne

    • Okta

    • Microsoft Azure Active Directory (Azure AD)

    您可以 JDBC 或 ODBC 设置格式提供或使用配置文件提供插件名称和相关值。有关更多信息,请参阅 JDBC 驱动程序版本 2.1 配置的选项配置 ODBC 驱动程序选项

有关更多信息,请参阅 配置 JDBC 或 ODBC 连接以使用 IAM 凭证

使用配置文件

您可提供 IAM 凭证选项和 GetClusterCredentials 选项作为 Amazon 配置文件中的命名配置文件的设置。要提供配置文件名称,请使用配置文件 JDBC 选项。该配置存储在名为 config 的文件或位于主目录下面的名为 credentials 的文件夹中的名为 .aws 的文件中。

对于 Amazon Redshift JDBC 或 ODBC 驱动程序附带的基于 SAML 的凭证提供商插件,您可以使用 使用凭证提供商插件 中前面所述的设置。如果未使用 plugin_name,则忽略其他选项。

下例所示为一个有两个配置文件的 ~/.aws/credentials 文件。

[default] aws_access_key_id=AKIAIOSFODNN7EXAMPLE aws_secret_access_key=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY [user2] aws_access_key_id=AKIAI44QH8DHBEXAMPLE aws_secret_access_key=je7MtGbClwBF/2Zp9Utk/h3yCo8nvbEXAMPLEKEY session_token=AQoDYXdzEPT//////////wEXAMPLEtc764bNrC9SAPBSM22wDOk4x4HIZ8j4FZTwdQWLWsKWHGBuFqwAeMicRXmxfpSPfIeoIYRqTflfKD8YUuwthAx7mSEI/qkPpKPi/kMcGd QrmGdeehM4IC1NtBmUpp2wUE8phUZampKsburEDy0KPkyQDYwT7WZ0wq5VSXDvp75YU 9HFvlRd8Tx6q6fE8YQcHNVXAkiY9q6d+xo0rKwT38xVqr7ZD0u0iPPkUL64lIZbqBAz +scqKmlzm8FDrypNC9Yjc8fPOLn9FX9KSYvKTr4rvx3iSIlTJabIQwj2ICCR/oLxBA==

要使用 user2 示例的凭证,请在 JDBC URL 中指定 Profile=user2

有关使用配置文件的更多信息,请参阅《Amazon Command Line Interface 用户指南》中的配置和凭证文件设置

有关为 JDBC 驱动程序使用配置文件的更多信息,请参阅指定配置文件

有关为 ODBC 驱动程序使用配置文件的更多信息,请参阅配置身份验证

用于提供 IAM 凭证的 JDBC 和 ODBC 选项

下表列出了用于提供 IAM 凭证的 JDBC 和 ODBC 选项。

选项

描述

Iam

仅用于 ODBC 连接字符串。设置为 1 可使用 IAM 身份验证。

AccessKeyID

SecretAccessKey

SessionToken

为 IAM 数据库身份验证配置的 IAM 角色或用户的访问密钥 ID 和秘密访问密钥。SessionToken 仅对具有临时凭证的 IAM 角色是必需的。SessionToken 不用于用户。有关更多信息,请参阅临时安全凭证
plugin_name 实施凭证提供商的类的完全限定名称。Amazon Redshift JDBC 驱动程序包括基于 SAML 的凭证提供商插件。如果提供 plugin_name,您还可以提供其他相关选项。有关更多信息,请参阅 使用凭证提供商插件

Profile

Amazon 凭证中配置文件的名称或包含 JDBC 连接选项值的 config 文件的名称。有关更多信息,请参阅 使用配置文件

使用凭证提供商插件

Amazon Redshift 使用凭证提供商插件进行单点登录身份验证。

为了支持单点登录身份验证,Amazon Redshift 提供了适用于 Microsoft Azure Active Directory 的 Azure AD 插件。有关如何配置该插件的信息,请参阅在 Microsoft Azure AD 中设置 JDBC 或 ODBC 单点登录身份验证

设置 Multi-Factor Authentication

为了支持多重身份验证(MFA),Amazon Redshift 提供了基于浏览器的插件。请使用适用于 Okta、PingOne 的的浏览器 SAML 插件,以及适用于 Microsoft Azure Active Directory 的浏览器 Azure AD 插件。

在使用浏览器 SAML 插件时,SAML 身份验证流程如下所示:

  1. 用户尝试登录。

  2. 该插件启动本地服务器以侦听 localhost 上的传入连接。

  3. 该插件启动 Web 浏览器,以通过 HTTPS 从指定的单点登录 URL 联合身份提供者端点请求 SAML 响应。

  4. Web 浏览器访问该链接,并提示用户输入凭证。

  5. 在用户进行身份验证并获得允许后,联合身份提供者端点通过 HTTPS 向 redirect_uri 指示的 URI 返回 SAML 响应。

  6. Web 浏览器将包含 SAML 响应的响应消息传送到指示的 redirect_uri

  7. 本地服务器接受传入连接,该插件检索 SAML 响应并将其传送到 Amazon Redshift。

在使用浏览器 Azure AD 插件时,SAML 身份验证流程如下所示:

  1. 用户尝试登录。

  2. 该插件启动本地服务器以侦听 localhost 上的传入连接。

  3. 该插件启动 Web 浏览器,以从 Azure AD oauth2/authorize 端点请求授权代码。

  4. Web 浏览器通过 HTTPS 访问生成的链接,并提示用户输入凭证。该链接是使用配置属性(例如 tenant 和 client_id)生成的。

  5. 在用户进行身份验证并获得允许后,Azure AD oauth2/authorize 端点通过 HTTPS 返回包含授权代码的响应并将其发送到指示的 redirect_uri

  6. Web 浏览器将包含 SAML 响应的响应消息传送到指示的 redirect_uri

  7. 本地服务器接受传入连接,该插件请求和检索授权代码,并将 POST 请求发送到 Azure AD oauth2/token 端点。

  8. Azure AD oauth2/token 端点将包含访问令牌的响应返回到指示的 redirect_uri

  9. 该插件检索 SAML 响应并将其传送到 Amazon Redshift。

参阅以下部分:

配置插件选项

要使用基于 SAML 的凭证提供商插件,请使用 JBDC 或 ODBC 选项,或在命名配置文件中指定以下选项。如果未指定 plugin_name,则忽略其他选项。

选项

描述
plugin_name

对于 JDBC,为实施凭证提供商的类名称。指定下列项之一:

  • 对于 Active Directory 联合身份验证服务

    com.amazon.redshift.plugin.AdfsCredentialsProvider
  • 对于 Okta

    com.amazon.redshift.plugin.OktaCredentialsProvider
  • 对于 PingFederate

    com.amazon.redshift.plugin.PingCredentialsProvider
  • 对于 Microsoft Azure Active Directory

    com.amazon.redshift.plugin.AzureCredentialsProvider
  • 对于 SAML MFA

    com.amazon.redshift.plugin.BrowserSamlCredentialsProvider
  • 对于具有 MFA 的 Microsoft Azure Active Directory 单点登录

    com.amazon.redshift.plugin.BrowserAzureCredentialsProvider

对于 ODBC,指定下列项之一:

  • 对于 Active Directory 联合身份验证服务:adfs

  • 对于 Okta:okta

  • 对于 PingFederate:ping

  • 对于 Microsoft Azure Active Directory:azure

  • 对于 SAML MFA:browser saml

  • 对于具有 MFA 的 Microsoft Azure Active Directory 单点登录: browser azure ad

idp_host 企业身份提供者主机的名称。此名称不应包含任何斜线 (“/”)。对于 Okta 身份提供者,idp_host 的值应以 .okta.com 结尾。

idp_port

身份提供者使用的端口。默认值为 443。Okta 将忽略该端口。

preferred_role

SAML 断言中的 AttributeValue 属性的 Role 元素中的角色 Amazon 资源名称(ARN)。请与 IdP 管理员一起查找适合首选角色的值。有关更多信息,请参阅 为 IdP 配置 SAML 断言

user

企业用户名,包括域 (如果适用)。例如,对于 Active Directory,域名的格式需为 domain\username
密码

企业用户的密码。我们建议不使用此选项,而是使用您的 SQL 客户端提供密码。

app_id

Okta 应用程序的 ID。仅用于 Okta。app_id 的值位于 Okta 应用程序嵌入链接中的 amazon_aws 后面。与 IdP 管理员一起获取该值。以下是应用程序嵌入链接的示例:https://example.okta.com/home/amazon_aws/0oa2hylwrpM8UGehd1t7/272

idp_tenant

用于 Azure AD 的租户。仅与 Azure 一起使用。

client_id

Azure AD 中的 Amazon Redshift 企业应用程序的客户端 ID。仅与 Azure 一起使用。

在 Microsoft Azure AD 中设置 JDBC 或 ODBC 单点登录身份验证

您可以使用 Microsoft Azure AD 作为身份提供者 (IdP) 来访问 Amazon Redshift 集群。下面,您可以找到描述如何为此目的设置信任关系的过程。有关配置 Amazon 作为 IdP 的服务提供商的更多信息,请参阅 IAM 用户指南中的通过信赖方信任和添加陈述来配置 SAML 2.0 IdP

注意

要将 Azure AD 与 JDBC 一起使用,Amazon Redshift JDBC 驱动程序必须是版本 1.2.37.1061 或更高版本。要将 Azure AD 与 ODBC 一起使用,Amazon Redshift ODBC 驱动程序必须是版本 1.4.10.1000 或更高版本。

要了解如何通过 Microsoft Azure AD 单点登录进行联合 Amazon Redshift 访问,请观看以下视频。

将 Azure AD 和您的 Amazon 账户设置为彼此信任
  1. 创建或使用现有的 Amazon Redshift 集群,以使 Azure AD 用户连接到该集群。要配置连接,需要此集群的某些属性,例如集群标识符。有关更多信息,请参阅创建集群

  2. 在 Microsoft Azure 门户上设置用于 Amazon 的 Azure Active Directory、组、用户。

  3. 在 Microsoft Azure 门户上添加 Amazon Redshift 以作为企业应用程序,以用于 Amazon 控制台单点登录和 Amazon Redshift 联合登录。选择企业应用程序

  4. 选择 + 新建应用程序。将显示“添加应用程序”页面。

  5. 在搜索字段中搜索 AWS

  6. 选择 Amazon Web Services (Amazon),然后选择添加。将会创建 Amazon 应用程序。

  7. 管理下方,选择单点登录

  8. 选择 SAML。将显示 Amazon Web Services (Amazon) | 基于 SAML 的登录页面。

  9. 选择以转到“使用 SAML 设置单点登录”页面。该页面显示预配置的单点登录相关属性的列表。

  10. 对于基本 SAML 配置,请选择编辑图标,然后选择保存

  11. 在配置多个应用程序时,请提供一个标识符值。例如,输入 https://signin.aws.amazon.com/saml#2。请注意,从第二个应用程序开始,将该格式与 # 符号一起使用以指定唯一的 SPN 值。

  12. 用户属性和声明部分中,选择编辑图标。

    默认情况下,预配置了唯一用户标识符 (UID)、角色、RoleSessionName 和 SessionDuration 声明。

  13. 选择 + 添加新的声明,以便为数据库用户添加声明。

    对于名称,请输入 DbUser

    对于命名空间,请输入 https://redshift.amazon.com/SAML/Attributes

    对于,请选择属性

    对于源属性,请选择 user.userprincipalname。然后,选择保存

  14. 选择 + 添加新的声明,以便为 AutoCreate 添加声明。

    对于名称,请输入 AutoCreate

    对于命名空间,请输入 https://redshift.amazon.com/SAML/Attributes

    对于,请选择属性

    对于源属性,请选择 "true"。然后,选择保存

    此处,123456789012 是您 Amazon 账户,AzureSSO 是您创建的 IAM 角色,AzureADProvider 是 IAM 提供商。

    声明名称

    唯一用户标识符(名称 ID)

    user.userprincipalname

    https://aws.amazon.com/SAML/Attributes/SessionDuration

    "900"

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

    arn:aws:iam::123456789012:role/AzureSSO,arn:aws:iam::123456789012:saml-provider/AzureADProvider

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

    user.userprincipalname

    https://redshift.amazon.com/SAML/Attributes/AutoCreate

    "true"

    https://redshift.amazon.com/SAML/Attributes/DbGroups

    user.assignedroles

    https://redshift.amazon.com/SAML/Attributes/DbUser

    user.userprincipalname

  15. 应用程序注册 > your-application-name > 身份验证 下,添加移动和桌面应用程序。将 URL 指定为 http://localhost/redshift/。

  16. SAML 签名证书 部分中,选择下载以下载并保存联合元数据 XML 文件,以便在创建 IAM SAML 身份提供者时使用。该文件用于创建单点登录联合身份。

  17. 在 IAM 控制台上创建 IAM SAML 身份提供者。您提供的元数据文档是您在设置 Azure 企业应用程序时保存的联合元数据 XML 文件。有关详细步骤,请参阅《IAM 用户指南》中的创建和管理 IAM 身份提供者(控制台)

  18. 在 IAM 控制台上为 SAML 2.0 联合身份创建 IAM 角色。有关详细步骤,请参阅 IAM 用户指南中的创建用于 SAML 的角色

  19. 创建一个 IAM 策略,您可以将其附加到您在 IAM 控制台上为 SAML 2.0 联合身份验证创建的 IAM 角色。有关详细步骤,请参阅《IAM 用户指南》中的创建 IAM 策略(控制台)

    为您的环境修改以下策略(JSON 格式):

    • 将集群的 Amazon 区域替换为 us-west-1

    • 将您的 Amazon 账户替换为 123456789012

    • 将您的集群标识符(或对于所有集群,则为 *)替换为 cluster-identifier

    • 将您的数据库(或对于所有集群,则为 *)替换为 dev

    • 将 IAM 角色的唯一标识符替换为 AROAJ2UCCR6DPCEXAMPLE

    • 将您的租户或公司电子邮件域替换为 example.com

    • 将您计划为其分配用户的数据库组替换为 my_dbgroup

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "redshift:GetClusterCredentials", "Resource": [ "arn:aws:redshift:us-west-1:123456789012:dbname:cluster-identifier/dev", "arn:aws:redshift:us-west-1:123456789012:dbuser:cluster-identifier/${redshift:DbUser}", "arn:aws:redshift:us-west-1:123456789012:cluster:cluster-identifier" ], "Condition": { "StringEquals": { "aws:userid": "AROAJ2UCCR6DPCEXAMPLE:${redshift:DbUser}@example.com" } } }, { "Effect": "Allow", "Action": "redshift:CreateClusterUser", "Resource": "arn:aws:redshift:us-west-1:123456789012:dbuser:cluster-identifier/${redshift:DbUser}" }, { "Effect": "Allow", "Action": "redshift:JoinGroup", "Resource": "arn:aws:redshift:us-west-1:123456789012:dbgroup:cluster-identifier/my_dbgroup" }, { "Effect": "Allow", "Action": [ "redshift:DescribeClusters", "iam:ListRoles" ], "Resource": "*" } ] }

    此策略授予权限,如下所示:

    • 第一部分授予执行 GetClusterCredentials API 操作的权限,以获取指定集群的临时凭证。在此示例中,资源是 cluster-identifier,所在的数据库为 dev,所在的账户为 123456789012,所在的 Amazon 区域为 us-west-1${redshift:DbUser} 子句仅允许与在 Azure AD 中指定的 DbUser 值匹配的用户进行连接。

    • 条件子句会强制只有特定用户能够获得临时凭证。这些用户是由角色唯一 ID AROAJ2UCCR6DPCEXAMPLE 指定的角色下的用户,该 ID 位于您公司的电子邮件域中的电子邮件地址所标识的 IAM 账户中。有关唯一 ID 的更多信息,请参阅 IAM 用户指南中的唯一 ID

      您使用 IdP(在本例中为 Azure AD)进行的设置决定了条件子句的写入方式。如果员工的电子邮件是 johndoe@example.com,请首先将 ${redshift:DbUser} 设置为与员工用户名 johndoe 匹配的超级用户字段。然后,要使该条件有效,请将 Amazon SAML RoleSessionName 字段设置为与员工电子邮件 johndoe@example.com 匹配的超级用户字段。使用这种方法时,请考虑以下几点:

      • 如果您将 ${redshift:DbUser} 设置为员工的电子邮件,则删除示例 JSON 中的 @example.com 以匹配 RoleSessionName

      • 如果您只是将 RoleSessionId 设置为员工的用户名,则删除示例中的 @example.com 以匹配 RoleSessionName

      • 在示例 JSON 中,${redshift:DbUser}RoleSessionName 都已设置为员工电子邮件。此示例 JSON 使用 Amazon Redshift 数据库用户名以及 @example.com 让用户登录以访问集群。

    • 第二部分授予在指定集群中创建 dbuser 名称的权限。在此示例 JSON 中,它将创建限制为 ${redshift:DbUser}

    • 第三部分授予指定用户可以加入 dbgroup 的权限。在此示例 JSON 中,用户可以加入指定集群中的 my_dbgroup 组。

    • 第四部分授予用户可以对所有资源执行的操作的权限。在此示例 JSON 中,它允许用户调用 redshift:DescribeClusters 以获取集群信息,例如集群端点、Amazon 区域和端口。它还允许用户调用 iam:ListRoles 以检查用户可以代入哪些角色。

设置 JDBC 以在 Microsoft Azure AD 中进行身份验证
  • 将数据库客户端配置为通过 JDBC 连接(使用 Azure AD 单点登录)到集群。

    您可以使用任何采用 JDBC 驱动程序的客户端通过 Azure AD 单点登录进行连接,也可以使用像 Java 这样的语言通过脚本进行连接。有关安装和配置信息,请参阅为 Amazon Redshift 配置 JDBC 驱动程序版本 2.1 连接

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

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

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

    1. 启动 SQL Workbench/J。在选择连接配置文件页面上,添加一个称为 AzureAuth配置文件组

    2. 对于连接配置文件,请输入 Azure

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

    4. 选择连接配置文件页面上,向连接配置文件添加信息,如下所示:

      • 对于用户,请输入 Microsoft Azure 用户名。这是您用于单点登录的 Microsoft Azure 账户的用户名,该账户有权限访问您在尝试进行身份验证时使用的集群。

      • 对于密码,请输入您的 Microsoft Azure 密码。

      • 对于驱动程序,请选择 Amazon Redshift (com.amazon.redshift.jdbc.Driver)

      • 对于 URL,请输入 jdbc:redshift:iam://your-cluster-identifier:your-cluster-region/your-database-name

    5. 选择扩展属性以在连接属性中添加其他信息,如下所述。

      对于 Azure AD 单点登录配置,请添加附加信息,如下所示:

      • 对于 plugin_name,请输入 com.amazon.redshift.plugin.AzureCredentialsProvider。该值指定驱动程序将 Azure AD 单点登录作为身份验证方法。

      • 对于 idp_tenant,请输入 your-idp-tenant。仅用于 Microsoft Azure AD。这是在 Azure AD 上为您的公司配置的租户名称。此值可以是租户名或带连字符的租户唯一 ID。

      • 对于 client_secret,请输入 your-azure-redshift-application-client-secret。仅用于 Microsoft Azure AD。这是您在设置 Azure 单点登录配置时创建的 Amazon Redshift 应用程序的客户端密钥。这仅适用于 com.amazon.redshift.plugin.AzureCredentialsProvider 插件。

      • 对于 client_id,请输入 your-azure-redshift-application-client-id。仅用于 Microsoft Azure AD。这是您在设置 Azure 单点登录配置时创建的 Amazon Redshift 应用程序的客户端 ID(带连字符)。

      对于具有 MFA 的 Azure AD 单点登录配置,请在连接属性中添加附加信息,如下所示:

      • 对于 plugin_name,请输入 com.amazon.redshift.plugin.BrowserAzureCredentialsProvider。此值指定驱动程序将具有 MFA 的 Azure 单点登录作为身份验证方法。

      • 对于 idp_tenant,请输入 your-idp-tenant。仅用于 Microsoft Azure AD。这是在 Azure AD 上为您的公司配置的租户名称。此值可以是租户名或带连字符的租户唯一 ID。

      • 对于 client_id,请输入 your-azure-redshift-application-client-id。此选项仅用于 Microsoft Azure AD。这是您在设置具有 MFA 的 Azure AD 单点登录配置时创建的 Amazon Redshift 应用程序的客户端 ID(带连字符)。

      • 对于侦听端口,请输入 your-listen-port。这是本地服务器正在侦听的端口。默认值为 7890。

      • 对于 idp_response_timeout,请输入 the-number-of-seconds。这是 IdP 服务器发回响应时超时之前等待的秒数。最小秒数必须为 10。如果建立连接的用时长于此阈值,则连接将被中止。

设置 ODBC 以在 Microsoft Azure AD 中进行身份验证
  • 将数据库客户端配置为通过 ODBC 连接(使用 Azure AD 单点登录)到集群。

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

    此外,为您的操作系统安装和配置最新的 Amazon Redshift OBDC 驱动程序,如下所示:

    在 Windows 上的 Amazon Redshift ODBC 驱动程序 DSN 安装页的连接设置下,输入以下信息:

    • 对于数据源名称,输入 your-DSN。这将指定用作 ODBC 配置文件名称的数据源名称。

    • 对于 Azure AD 单点登录配置的身份验证类型,请选择 Identity Provider: Azure AD。这是 ODBC 驱动程序在通过 Azure 单点登录进行身份验证时使用的验证方法。

    • 对于具有 MFA 的 Azure AD 单点登录配置的身份验证类型,请选择 Identity Provider: Browser Azure AD。这是 ODBC 驱动程序在通过 Azure 单点登录(采用 MFA)进行身份验证时使用的验证方法。

    • 对于集群 ID,请输入 your-cluster-identifier

    • 对于区域,请输入 your-cluster-region

    • 对于数据库,请输入 your-database-name

    • 对于用户,请输入 your-azure-username。这是您用于单点登录的 Microsoft Azure 账户的用户名,该账户有权限访问您在尝试进行身份验证时使用的集群。请仅将其用于身份验证类型身份提供者: Azure AD 的情况。

    • 对于密码,请输入 your-azure-password。请仅将其用于身份验证类型身份提供者: Azure AD 的情况。

    • 对于 IdP 租户,请输入 your-idp-tenant。这是在 IdP (Azure) 上配置的公司的租户名称。此值可以是租户名或带连字符的租户唯一 ID。

    • 对于 Azure 客户端密钥,请输入 your-azure-redshift-application-client-secret。这是您在设置 Azure 单点登录配置时创建的 Amazon Redshift 应用程序的客户端密钥。

    • 对于 Azure 客户端 ID,请输入 your-azure-redshift-application-client-id。这是您在设置 Azure 单点登录配置时创建的 Amazon Redshift 应用程序的客户端 ID(带连字符)。

    • 对于侦听端口,请输入 your-listen-port。这是本地服务器正在侦听的默认侦听端口。默认值为 7890。这仅适用于浏览器 Azure AD 插件。

    • 对于响应超时,请输入 the-number-of-seconds。这是 IdP 服务器发回响应时超时之前等待的秒数。最小秒数必须为 10。如果建立连接的用时长于此阈值,则连接将被中止。该选项仅适用于浏览器 Azure AD 插件。

    在 macOS 和 Linux 上,按如下方式编辑 odbc.ini 文件:

    注意

    所有条目不区分大小写。

    • 对于 clusterid,请输入 your-cluster-identifier。这是已创建的 Amazon Redshift 集群的名称。

    • 对于区域,请输入 your-cluster-region。这是已创建的 Amazon Redshift 集群的 Amazon 区域。

    • 对于数据库,请输入 your-database-name。这是您尝试在 Amazon Redshift 集群上访问的数据库的名称。

    • 对于区域设置,请输入 en-us。这是显示错误消息的语言。

    • 对于 iam,请输入 1。此值指定要使用 IAM 凭证进行身份验证的驱动程序。

    • 对于 Azure AD 单点登录配置的 plugin_name,请输入 AzureAD。这指定驱动程序使用 Azure 单点登录作为身份验证方法。

    • 对于具有 MFA 的 Azure AD 单点登录配置的 plugin_name,请输入 BrowserAzureAD。这指定驱动程序将 Azure 单点登录(采用 MFA)作为身份验证方法。

    • 对于 uid,请输入 your-azure-username。这是您用于单点登录的 Microsoft Azure 账户的用户名,该账户有权限访问您在尝试进行身份验证时使用的集群。请仅将其用于 plugin_nameAzureAD 的情况。

    • 对于密码,请输入 your-azure-password。请仅将其用于 plugin_nameAzureAD 的情况。

    • 对于 idp_tenant,请输入 your-idp-tenant。这是在 IdP (Azure) 上配置的公司的租户名称。此值可以是租户名或带连字符的租户唯一 ID。

    • 对于 client_secret,请输入 your-azure-redshift-application-client-secret。这是您在设置 Azure 单点登录配置时创建的 Amazon Redshift 应用程序的客户端密钥。

    • 对于 client_id,请输入 your-azure-redshift-application-client-id。这是您在设置 Azure 单点登录配置时创建的 Amazon Redshift 应用程序的客户端 ID(带连字符)。

    • 对于侦听端口,请输入 your-listen-port。这是本地服务器正在侦听的端口。默认值为 7890。这适用于浏览器 Azure AD 插件。

    • 对于 idp_response_timeout,请输入 the-number-of-seconds。这是等待 Azure 响应的指定时间段(以秒为单位)。此选项适用于浏览器 Azure AD 插件。

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

    export ODBCINI=/opt/amazon/redshift/Setup/odbc.ini
    export ODBCINSTINI=/opt/amazon/redshift/Setup/odbcinst.ini
解决浏览器 Azure AD 插件的问题
  1. 要使用浏览器 Azure AD 插件,在请求中指定的回复 URL 必须与为应用程序配置的回复 URL 一致。

    导航到 Microsoft Azure 门户上的使用 SAML 设置单点登录页面。然后检查回复 URL 是否已设置为 http://localhost/redshift/。

  2. 如果收到 IdP 租户错误,请验证 IdP 租户名称是否与最初在 Microsoft Azure 中设置 Active Directory 时所用的域名匹配。

    在 Windows 上,导航到 Amazon Redshift ODBC DSN 设置页面的连接设置部分。然后检查在 IdP (Azure) 上配置的公司租户名称是否与最初在 Microsoft Azure 中设置 Active Directory 时所用的域名匹配。

    在 macOS 和 Linux 上,找到 odbc.ini 文件。然后检查在 IdP (Azure) 上配置的公司租户名称是否与最初在 Microsoft Azure 中设置 Active Directory 时所用的域名匹配。

  3. 如果收到请求中指定的回复 URL 与为应用程序配置的回复 URL 不一致的错误,请验证重定向 URI 是否与回复 URL 相同。

    在 Microsoft Azure 门户上,导航到您的应用程序的应用程序注册页面。然后检查重定向 URI 是否与回复 URL 一致。

  4. 如果收到“未经授权错误”意外响应,请验证是否已完成移动和桌面应用程序配置。

    在 Microsoft Azure 门户上,导航到您的应用程序的应用程序注册页面。然后导航到身份验证,检查是否已将移动和桌面应用程序配置为使用 http://localhost/redshift/ 作为重定向 URI。

在 AD FS 中设置 JDBC 或 ODBC 单点登录身份验证

您可以将 AD FS 作为身份提供者 (IdP) 以访问 Amazon Redshift 集群。下面,您可以找到描述如何为此目的设置信任关系的过程。有关配置 Amazon 作为 AD FS 的服务提供商的更多信息,请参阅 IAM 用户指南中的通过信赖方信任和添加陈述来配置 SAML 2.0 IdP

将 AD FS 和您的 Amazon 账户设置为相互信任
  1. 创建或使用现有的 Amazon Redshift 集群,以使 AD FS 用户连接到该集群。要配置连接,需要此集群的某些属性,例如集群标识符。有关更多信息,请参阅创建集群

  2. 在 Microsoft 管理控制台上设置 AD FS 以控制 Amazon Redshift 访问:

    1. 选择 ADFS 2.0,然后选择添加信赖方信任。在添加信赖方信任向导页面上,选择开始

    2. 选择数据源页面上,选择导入有关在线或在本地网络上发布的信赖方的数据

    3. 对于联合元数据地址(主机名或 URL),请输入 https://signin.aws.amazon.com/saml-metadata.xml。元数据 XML 文件是将 Amazon 描述为信赖方的标准 SAML 元数据文档。

    4. 指定显示名称页面上,输入显示名称的值。

    5. 选择颁发授权规则页面上,选择一个颁发授权规则以允许或拒绝所有用户访问该信赖方。

    6. 准备好添加信任页面上,查看您的设置。

    7. 完成页面上,选择向导关闭时打开此信赖方信任的“编辑声明规则”对话框

    8. 在上下文(右键单击)菜单上,选择信赖方信任

    9. 对于您的信赖方,打开上下文(右键单击)菜单,然后选择编辑声明规则。在编辑声明规则页面上,选择添加规则

    10. 对于声明规则模板,请选择转换传入声明,然后在编辑规则 - NameId 页面上执行以下操作:

      • 对于声明规则名称,请输入 NameId

      • 对于传入声明名称,请选择 Windows 账户名

      • 对于传出声明名称,请选择名称 ID

      • 对于传出名称 ID 格式,请选择持久性标识符

      • 选择传递所有声明值

    11. 编辑声明规则页面上,选择添加规则。在选择规则模板页面上,对于声明规则模板,请选择以声明方式发送 LDAP 特性

    12. 配置规则页面上,执行以下操作:

      • 对于声明规则名称,请输入 RoleSessionName

      • 对于特性存储,请选择 Active Directory

      • 对于 LDAP 特性,请选择电子邮件地址

      • 对于传出声明类型,选择 https://aws.amazon.com/SAML/Attributes/RoleSessionName

    13. 编辑声明规则页面上,选择添加规则。在选择规则模板页面上,对于声明规则模板,请选择使用自定义规则发送声明

    14. 编辑规则 - 获取 AD 组页面上,对于声明规则名称,请输入获取 AD 组

    15. 对于自定义规则,请输入以下内容。

      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);
    16. 编辑声明规则页面上,选择添加规则。在选择规则模板页面上,对于声明规则模板,请选择使用自定义规则发送声明

    17. 编辑规则 - 角色页面上,对于声明规则名称,请键入角色

    18. 对于自定义规则,请输入以下内容。

      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::123456789012:saml-provider/ADFS,arn:aws:iam::123456789012:role/ADFS-"));

      请注意 SAML 提供商的 ARN 和要担任的角色。在该示例中,arn:aws:iam:123456789012:saml-provider/ADFS 是 SAML 提供商的 ARN,arn:aws:iam:123456789012:role/ADFS- 是角色的 ARN。

  3. 确保您已下载 federationmetadata.xml 文件。检查以确认文档内容不包含无效的字符。这是在配置与 Amazon 的信任关系时使用的元数据文件。

  4. 在 IAM 控制台上创建 IAM SAML 身份提供者。您提供的元数据文档是您在设置 Azure 企业应用程序时保存的联合元数据 XML 文件。有关详细步骤,请参阅《IAM 用户指南》中的创建和管理 IAM 身份提供者(控制台)

  5. 在 IAM 控制台上为 SAML 2.0 联合身份创建 IAM 角色。有关详细步骤,请参阅 IAM 用户指南中的创建用于 SAML 的角色

  6. 创建一个 IAM 策略,您可以将其附加到您在 IAM 控制台上为 SAML 2.0 联合身份验证创建的 IAM 角色。有关详细步骤,请参阅《IAM 用户指南》中的创建 IAM 策略(控制台)。有关 Azure AD 示例,请参阅在 Microsoft Azure AD 中设置 JDBC 或 ODBC 单点登录身份验证

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

    您可以使用任何采用 JDBC 驱动程序的客户端通过 AD FS 单点登录进行连接,也可以使用像 Java 这样的语言通过脚本进行连接。有关安装和配置信息,请参阅为 Amazon Redshift 配置 JDBC 驱动程序版本 2.1 连接

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

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

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

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

    2. 对于连接配置文件,请输入您的连接配置文件名称,例如 ADFS

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

    4. 选择连接配置文件页面上,向连接配置文件添加信息,如下所示:

      • 对于用户,请输入您的 AD FS 用户名。这是您用于单点登录的账户的用户名,该账户有权限访问您在尝试进行身份验证时使用的集群。

      • 对于密码,请输入您的 AD FS 密码。

      • 对于驱动程序,请选择 Amazon Redshift (com.amazon.redshift.jdbc.Driver)

      • 对于 URL,请输入 jdbc:redshift:iam://your-cluster-identifier:your-cluster-region/your-database-name

    5. 选择扩展属性。对于 plugin_name,请输入 com.amazon.redshift.plugin.AdfsCredentialsProvider。该值指定驱动程序将 AD FS 单点登录作为身份验证方法。

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

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

    此外,为您的操作系统安装和配置最新的 Amazon Redshift OBDC 驱动程序,如下所示:

    在 Windows 上的 Amazon Redshift ODBC 驱动程序 DSN 安装页的连接设置下,输入以下信息:

    • 对于数据源名称,输入 your-DSN。这将指定用作 ODBC 配置文件名称的数据源名称。

    • 对于身份验证类型,选择身份提供者:SAML。这是 ODBC 驱动程序在通过 AD FS 单点登录进行身份验证时使用的身份验证方法。

    • 对于集群 ID,请输入 your-cluster-identifier

    • 对于区域,请输入 your-cluster-region

    • 对于数据库,请输入 your-database-name

    • 对于用户,请输入 your-adfs-username。这是您用于单点登录的 AD FS 账户的用户名,该账户有权访问您在尝试进行身份验证时使用的集群。请仅将其用于身份验证类型身份提供者: SAML 的情况。

    • 对于密码,请输入 your-adfs-password。请仅将其用于身份验证类型身份提供者: SAML 的情况。

    在 macOS 和 Linux 上,按如下方式编辑 odbc.ini 文件:

    注意

    所有条目不区分大小写。

    • 对于 clusterid,请输入 your-cluster-identifier。这是已创建的 Amazon Redshift 集群的名称。

    • 对于区域,请输入 your-cluster-region。这是已创建的 Amazon Redshift 集群的 Amazon 区域。

    • 对于数据库,请输入 your-database-name。这是您尝试在 Amazon Redshift 集群上访问的数据库的名称。

    • 对于区域设置,请输入 en-us。这是显示错误消息的语言。

    • 对于 iam,请输入 1。此值指定要使用 IAM 凭证进行身份验证的驱动程序。

    • 对于 plugin_name,请执行以下操作之一:

      • 对于具有 MFA 的 AD FS 单点登录配置,请输入 BrowserSAML。这是 ODBC 驱动程序在 AD FS 中进行身份验证时使用的身份验证方法。

      • 对于 AD FS 单点登录配置,请输入 ADFS。这是 ODBC 驱动程序在通过 Azure AD 单点登录进行身份验证时使用的身份验证方法。

    • 对于 uid,请输入 your-adfs-username。这是您用于单点登录的 Microsoft Azure 账户的用户名,该账户有权限访问您在尝试进行身份验证时使用的集群。请仅将其用于 plugin_nameADFS 的情况。

    • 对于密码,请输入 your-adfs-password。请仅将其用于 plugin_nameADFS 的情况。

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

    export ODBCINI=/opt/amazon/redshift/Setup/odbc.ini
    export ODBCINSTINI=/opt/amazon/redshift/Setup/odbcinst.ini

在 Ping Identity 中设置 JDBC 或 ODBC 单点登录身份验证

您可以将 Ping Identity 作为身份提供者 (IdP) 以访问 Amazon Redshift 集群。下面,您可以找到描述如何使用 PingOne 门户为此目的设置信任关系的过程。有关配置 Amazon 作为 Ping 身份的服务提供商的更多信息,请参阅 IAM 用户指南中的通过信赖方信任和添加陈述来配置 SAML 2.0 IdP

将 Ping 身份和您的 Amazon 账户设置为相互信任
  1. 创建或使用现有的 Amazon Redshift 集群,以使 Ping 身份用户连接到该集群。要配置连接,需要此集群的某些属性,例如集群标识符。有关更多信息,请参阅创建集群

  2. 在 PingOne 门户上添加 Amazon Redshift 以作为新的 SAML 应用程序。有关详细步骤,请参阅 Ping Identity 文档

    1. 转到我的应用程序

    2. 添加应用程序下面,选择新建 SAML 应用程序

    3. 对于应用程序名称,请输入 Amazon Redshift

    4. 对于协议版本,请选择 SAML v2.0

    5. 对于类别,请选择 your-application-category

    6. 对于断言消费者服务(ACS),请键入 your-redshift-local-host-url。这是 SAML 断言重定向到的本地主机和端口。

    7. 对于实体 ID,请输入 urn:amazon:webservices

    8. 对于签名,请选择签名断言

    9. SSO 属性映射部分中,创建声明,如下表中所示。

      应用程序属性 文本值的身份关联属性

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

      arn:aws:iam::123456789012:role/Ping,arn:aws:iam::123456789012:saml-provider/PingProvider

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

      email

      https://redshift.amazon.com/SAML/Attributes/AutoCreate

      "true"

      https://redshift.amazon.com/SAML/Attributes/DbUser

      email

      https://redshift.amazon.com/SAML/Attributes/DbGroups

      “DbGroups”属性中的组包含 @directory 前缀。若要删除此项,请在身份关联中,输入 memberOf。在函数中,选择 ExtractByRegularExpression。在表达式中,输入 (.*)[\@](?:.*)

  3. 对于组访问权限,请设置以下组访问权限(如果需要):

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

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

    • https://redshift.amazon.com/SAML/Attributes/AutoCreate

    • https://redshift.amazon.com/SAML/Attributes/DbUser

  4. 查看设置,并在必要时进行更改。

  5. 启动单点登录(SSO) URL 作为浏览器 SAML 插件的登录 URL。

  6. 在 IAM 控制台上创建 IAM SAML 身份提供者。您提供的元数据文档是您在设置 Ping Identity 时保存的联合元数据 XML 文件。有关详细步骤,请参阅《IAM 用户指南》中的创建和管理 IAM 身份提供者(控制台)

  7. 在 IAM 控制台上为 SAML 2.0 联合身份创建 IAM 角色。有关详细步骤,请参阅 IAM 用户指南中的创建用于 SAML 的角色

  8. 创建一个 IAM 策略,您可以将其附加到您在 IAM 控制台上为 SAML 2.0 联合身份验证创建的 IAM 角色。有关详细步骤,请参阅《IAM 用户指南》中的创建 IAM 策略(控制台)。有关 Azure AD 示例,请参阅在 Microsoft Azure AD 中设置 JDBC 或 ODBC 单点登录身份验证

设置 JDBC 以在 Ping Identity 中进行身份验证
  • 配置数据库客户端以使用 Ping Identity 单点登录通过 JDBC 连接到集群。

    您可以使用任何采用 JDBC 驱动程序的客户端通过 Ping Identity 单点登录进行连接,也可以使用像 Java 这样的语言通过脚本进行连接。有关安装和配置信息,请参阅为 Amazon Redshift 配置 JDBC 驱动程序版本 2.1 连接

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

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

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

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

    2. 对于连接配置文件,请输入 your-connection-profile-name,例如,Ping

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

    4. 选择连接配置文件页面上,向连接配置文件添加信息,如下所示:

      • 对于用户,请输入您的 PingOne 用户名。这是您用于单点登录的 PingOne 账户的用户名,该账户有权限访问您在尝试进行身份验证时使用的集群。

      • 对于密码,请输入您的 PingOne 密码。

      • 对于驱动程序,请选择 Amazon Redshift (com.amazon.redshift.jdbc.Driver)

      • 对于 URL,请输入 jdbc:redshift:iam://your-cluster-identifier:your-cluster-region/your-database-name

    5. 选择扩展属性并执行以下操作之一:

      • 对于 login_url,请输入 your-ping-sso-login-url。该值指定 URL 将单点登录用作登录时的身份验证方法。

      • 对于 Ping Identity,请为 plugin_name 输入 com.amazon.redshift.plugin.PingCredentialsProvider。此值指定驱动程序使用 Ping Identity 单点登录作为身份验证方法。

      • 对于具有单点登录的 Ping Identity,请为 plugin_name 输入 com.amazon.redshift.plugin.BrowserSamlCredentialsProvider。该值指定驱动程序将具有单点登录的 Ping Identity PingOne 用作身份验证方法。

设置 ODBC 以在 Ping Identity 中进行身份验证
  • 配置数据库客户端以使用 Ping Identity PingOne 单点登录通过 ODBC 连接到集群。

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

    此外,为您的操作系统安装和配置最新的 Amazon Redshift OBDC 驱动程序,如下所示:

    在 Windows 上的 Amazon Redshift ODBC 驱动程序 DSN 安装页的连接设置下,输入以下信息:

    • 对于数据源名称,输入 your-DSN。这将指定用作 ODBC 配置文件名称的数据源名称。

    • 对于身份验证类型,请执行以下操作之一:

      • 对于 Ping Identity 配置,请选择身份提供者:Ping Federate。这是 ODBC 驱动程序在通过 Ping Identity 单点登录进行身份验证时使用的身份验证方法。

      • 对于具有单点登录的 Ping Identity 配置,请选择身份提供者:浏览器 SAML。这是 ODBC 驱动程序在使用具有单点登录的 Ping Identity 进行身份验证时使用的身份验证方法。

    • 对于集群 ID,请输入 your-cluster-identifier

    • 对于区域,请输入 your-cluster-region

    • 对于数据库,请输入 your-database-name

    • 对于用户,请输入 your-ping-username。这是您用于单点登录的 PingOne 账户的用户名,该账户有权访问您在尝试进行身份验证时使用的集群。请仅将其用于身份验证类型身份提供者: PingFederate的情况。

    • 对于密码,请输入 your-ping-password。请仅将其用于身份验证类型身份提供者: PingFederate的情况。

    • 对于侦听端口,请输入 your-listen-port。这是本地服务器正在侦听的端口。默认值为 7890。这仅适用于浏览器 SAML 插件。

    • 对于响应超时,请输入 the-number-of-seconds。这是 IdP 服务器发回响应时超时之前等待的秒数。最小秒数必须为 10。如果建立连接的用时长于此阈值,则连接将被中止。这仅适用于浏览器 SAML 插件。

    • 对于登录 URL,请输入 your-login-url。这仅适用于浏览器 SAML 插件。

    在 macOS 和 Linux 上,按如下方式编辑 odbc.ini 文件:

    注意

    所有条目不区分大小写。

    • 对于 clusterid,请输入 your-cluster-identifier。这是已创建的 Amazon Redshift 集群的名称。

    • 对于区域,请输入 your-cluster-region。这是已创建的 Amazon Redshift 集群的 Amazon 区域。

    • 对于数据库,请输入 your-database-name。这是您尝试在 Amazon Redshift 集群上访问的数据库的名称。

    • 对于区域设置,请输入 en-us。这是显示错误消息的语言。

    • 对于 iam,请输入 1。此值指定要使用 IAM 凭证进行身份验证的驱动程序。

    • 对于 plugin_name,请执行以下操作之一:

      • 对于 Ping Identity 配置,请输入 BrowserSAML。这是 ODBC 驱动程序在使用 Ping Identity 进行身份验证时所采用的身份验证方法。

      • 对于具有单点登录的 Ping Identity 配置,请输入 Ping。这是 ODBC 驱动程序在使用具有单点登录的 Ping Identity 进行身份验证时使用的身份验证方法。

    • 对于 uid,请输入 your-ping-username。这是您用于单点登录的 Microsoft Azure 账户的用户名,该账户有权限访问您在尝试进行身份验证时使用的集群。请仅将其用于 plugin_namePing 的情况。

    • 对于密码,请输入 your-ping-password。请仅将其用于 plugin_namePing 的情况。

    • 对于 login_url,请输入 your-login-url。这是返回 SAML 响应的启动单点登录 URL。这仅适用于浏览器 SAML 插件。

    • 对于 idp_response_timeout,请输入 the-number-of-seconds。这是等待 PingOne Identity 响应的指定时间段(以秒为单位)。这仅适用于浏览器 SAML 插件。

    • 对于侦听端口,请输入 your-listen-port。这是本地服务器正在侦听的端口。默认值为 7890。这仅适用于浏览器 SAML 插件。

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

    export ODBCINI=/opt/amazon/redshift/Setup/odbc.ini
    export ODBCINSTINI=/opt/amazon/redshift/Setup/odbcinst.ini

在 Okta 中设置 JDBC 或 ODBC 单点登录身份验证

您可以将 Okta 作为身份提供者 (IdP) 以访问 Amazon Redshift 集群。下面,您可以找到描述如何为此目的设置信任关系的过程。有关配置 Amazon 作为 Okta 的服务提供商的更多信息,请参阅 IAM 用户指南中的通过信赖方信任和添加陈述来配置 SAML 2.0 IdP

将 Okta 和您的 Amazon 账户设置为相互信任
  1. 创建或使用现有的 Amazon Redshift 集群,以使 Okta 用户连接到该集群。要配置连接,需要此集群的某些属性,例如集群标识符。有关更多信息,请参阅创建集群

  2. 在 Okta 门户上添加 Amazon Redshift 以作为新应用程序。有关详细步骤,请参阅 Okta 文档

    • 选择添加应用程序

    • 添加应用程序下面,选择创建新的应用程序

    • 创建新添加应用程序集成页面上,为平台 选择 Web

    • 对于登录方法,请选择 SAML v2.0

    • 常规设置页面上,为应用程序名称 输入 your-redshift-saml-sso-name。这是您的应用程序的名称。

    • SAML 设置页面上,为单点登录 URL 输入 your-redshift-local-host-url。这是 SAML 断言重定向到的本地主机和端口,例如 http://localhost:7890/redshift/

  3. 单点登录 URL 作为收件人 URL目标 URL

  4. 对于签名,请选择签名断言

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

  6. 高级设置部分中,为 SAML 发布者 ID输入 your-Identity-Provider-Issuer-ID;您可以在查看设置说明部分中找到该 ID。

  7. 属性语句部分中,创建声明,如下表中所示。

    声明名称

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

    arn:aws:iam::123456789012:role/Okta,arn:aws:iam::123456789012:saml-provider/Okta

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

    user.email

    https://redshift.amazon.com/SAML/Attributes/AutoCreate

    "true"

    https://redshift.amazon.com/SAML/Attributes/DbUser

    user.email

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

  9. 在 IAM 控制台上创建 IAM SAML 身份提供者。您提供的元数据文档是您在设置 Okta 时保存的联合元数据 XML 文件。有关详细步骤,请参阅《IAM 用户指南》中的创建和管理 IAM 身份提供者(控制台)

  10. 在 IAM 控制台上为 SAML 2.0 联合身份创建 IAM 角色。有关详细步骤,请参阅 IAM 用户指南中的创建用于 SAML 的角色

  11. 创建一个 IAM 策略,您可以将其附加到您在 IAM 控制台上为 SAML 2.0 联合身份验证创建的 IAM 角色。有关详细步骤,请参阅《IAM 用户指南》中的创建 IAM 策略(控制台)。有关 Azure AD 示例,请参阅在 Microsoft Azure AD 中设置 JDBC 或 ODBC 单点登录身份验证

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

    您可以使用任何采用 JDBC 驱动程序的客户端通过 Okta 单点登录进行连接,也可以使用像 Java 这样的语言通过脚本进行连接。有关安装和配置信息,请参阅为 Amazon Redshift 配置 JDBC 驱动程序版本 2.1 连接

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

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

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

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

    2. 对于连接配置文件,请输入 your-connection-profile-name,例如,Okta

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

    4. 选择连接配置文件页面上,向连接配置文件添加信息,如下所示:

      • 对于用户,请输入您的 Okta 用户名。这是您用于单点登录的 Okta 账户的用户名,该账户有权限访问您在尝试进行身份验证时使用的集群。

      • 对于密码,请输入您的 Okta 密码。

      • 对于驱动程序,请选择 Amazon Redshift (com.amazon.redshift.jdbc.Driver)

      • 对于 URL,请输入 jdbc:redshift:iam://your-cluster-identifier:your-cluster-region/your-database-name

    5. 选择扩展属性并执行以下操作之一:

      • 对于 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 以在 Okta 中进行身份验证
  • 将数据库客户端配置为通过 ODBC 并使用 Okta 单点登录连接到集群。

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

    此外,为您的操作系统安装和配置最新的 Amazon Redshift OBDC 驱动程序,如下所示:

    在 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。请仅将其用于身份验证类型身份提供者: Okta 的情况。

    在 macOS 和 Linux 上,按如下方式编辑 odbc.ini 文件:

    注意

    所有条目不区分大小写。

    • 对于 clusterid,请输入 your-cluster-identifier。这是已创建的 Amazon Redshift 集群的名称。

    • 对于区域,请输入 your-cluster-region。这是已创建的 Amazon Redshift 集群的 Amazon 区域。

    • 对于数据库,请输入 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_nameOkta 的情况。

    • 对于密码,请输入 your-okta-password。请仅将其用于 plugin_nameOkta 的情况。

    • 对于 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