配置身份验证和 SSL - Amazon Redshift

配置身份验证和 SSL

为了防止数据遭到未经授权的访问,Amazon Redshift 数据存储要求所有连接都使用用户凭据进行身份验证。某些数据存储还要求通过安全套接字层 (SSL) 协议建立连接,无论是否使用单向身份验证。

Amazon Redshift JDBC 驱动程序 2.1 版提供了对这些身份验证协议的完全支持。

驱动程序支持的 SSL 版本取决于您使用的 JVM 版本。有关每个 Java 版本支持的 SSL 版本的信息,请参阅 Java 平台组产品管理博客上的诊断 TLS、SSL 和 HTTPS

用于连接的 SSL 版本是驱动程序和服务器都支持的最高版本,该版本在连接时确定。

配置 Amazon Redshift JDBC 驱动程序版本 2.1,以根据要连接到的 Redshift 服务器的安全要求对连接进行身份验证。

要对连接进行身份验证,您必须始终提供您的 Redshift 用户名和密码。根据服务器上是否启用或需要 SSL,您可能还需要将驱动程序配置为通过 SSL 进行连接。或者,您可能要使用单向 SSL 身份验证,以便客户端(驱动程序本身)验证服务器的身份。

在连接 URL 中将配置信息提供给驱动程序。有关连接 URL 的语法的更多信息,请参阅 构建连接 URL

SSL 表示 TLS/SSL,包括传输层安全性和安全套接字层。驱动程序支持 TLS/SSL 的行业标准版本。

配置 IAM 身份验证

如果您使用 IAM 身份验证连接到 Amazon Redshift 服务器,请将以下属性设置为数据来源连接字符串的一部分。

有关 IAM 身份验证的更多信息,请参阅 Amazon Redshift 中的 Identity and Access Management

要使用 IAM 身份验证,请使用以下连接字符串格式之一:

连接字符串 描述

jdbc:redshift:iam:// [host]:[port]/[db]

常规连接字符串。驱动程序从主机推断 ClusterID 和区域。

jdbc:redshift:iam:// [cluster-id]: [region]/[db]

在已知 ClusterID 和区域的情况下,驱动程序将检索主机信息。

jdbc:redshift:iam:// [host]/[db]

驱动程序默认为端口 5439,并从主机推断 ClusterID 和区域。根据您在创建、修改或迁移集群时选择的端口,允许访问所选端口。

指定配置文件

如果您使用 IAM 身份验证,则可以在配置文件名称下指定任何其他必需或可选的连接属性。通过这样做,您可以避免将某些信息直接放入连接字符串中。您可以使用 Profile 属性在连接字符串中指定配置文件名称。

配置文件可以添加到 AWS 凭证文件。此文件的默认位置为:~/.aws/credentials

您可以通过在以下环境变量中设置路径更改默认值:AWS_CREDENTIAL_PROFILES_FILE

有关配置文件的更多信息,请参阅 AWS SDK for Java 中的使用 AWS 凭证

使用实例配置文件凭证

如果您在与 IAM 角色关联的 Amazon EC2 实例上运行应用程序,则可以使用实例配置文件凭证进行连接。

为此,请使用上表中的 IAM 连接字符串格式之一,并将 dbuser 连接属性设置为您正要以其身份连接的 Amazon Redshift 用户名。

有关实例配置文件的更多信息,请参阅《IAM 用户指南》中的访问控制

使用凭证提供程序

驱动程序还支持来自以下服务的凭证提供程序插件:

  • AWS IAM Identity Center

  • Active Directory 联合身份验证服务 (ADFS)

  • JSON Web Token (JWT) 服务

  • Microsoft Azure Active Directory (AD) 服务和浏览器 Microsoft Azure Active Directory (AD) 服务

  • Okta 服务

  • PingFederate 服务

  • 适用于 SAML 服务(如 Okta、Ping 或 ADFS)的浏览器 SAML

如果您使用上述服务之一,则连接 URL 需要指定以下属性:

  • Plugin_Name – 凭证提供程序插件类的完全限定类路径。

  • IdP_Host:– 您用于对 Amazon Redshift 进行身份验证的服务的主机。

  • IdP_Port – 身份验证服务的主机侦听的端口。Okta 不需要。

  • User – idp_host 服务器的用户名。

  • Password – 与 idp_host 用户名关联的密码。

  • DbUser – 您连接时使用的 Amazon Redshift 用户名。

  • SSL_Insecure – 指示是否应验证 IDP 服务器证书。

  • Client_ID – 与 Azure AD 门户中的用户名关联的客户端 ID。仅用于 Azure AD。

  • Client_Secret – 与 Azure AD 门户中的客户端 ID 关联的客户端密钥。仅用于 Azure AD。

  • IdP_Tenant – 适用于您的 Amazon Redshift 应用程序的 Azure AD 租户 ID。仅用于 Azure AD。

  • App_ID – 您的 Amazon Redshift 应用程序的 Okta 应用程序 ID。仅适用于 Okta。

  • 应用程序名称 – 您的 Amazon Redshift 应用程序的可选 Okta 应用程序名称。仅适用于 Okta。

  • Partner_SPID – 可选的合作伙伴 SPID(服务提供商 ID)值。仅用于 PingFederate。

  • Idc_Region – AWS IAM Identity Center 实例所在的 AWS 区域。仅用于 AWS IAM Identity Center。

  • Issuer_Url – AWS IAM Identity Center 服务器的实例端点。仅用于 AWS IAM Identity Center。

如果您将浏览器插件用于这些服务之一,则连接 URL 还可以包括:

  • Login_URL – 通过浏览器插件使用安全断言标记语言 (SAML) 或 Azure AD 服务时,身份提供者网站上的资源的 URL。如果使用浏览器插件,则此参数是必需的。

  • Listen_Port – 通过浏览器插件使用 SAML、Azure AD 或 AWS IAM Identity Center 服务时,驱动程序用于从身份提供者获取 SAML 响应的端口。

  • IdP_Response_Timeout – 通过浏览器插件使用 SAML、Azure AD 或 AWS IAM Identity Center 服务时,驱动程序等待身份提供者的 SAML 响应的时间(以秒为单位)。

有关其他连接字符串属性的信息,请参阅JDBC 驱动程序版本 2.1 配置的选项