配置身份验证和 SSL - Amazon Redshift
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

配置身份验证和 SSL

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

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

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

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

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

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

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

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

仅使用用户名和密码

如果要连接的服务器不使用 SSL,则只需提供用户名和密码即可对连接进行身份验证。

仅使用您的用户名和密码配置身份验证

  1. UID 属性设置为您的用户名,以便访问 Amazon Redshift 服务器。

  2. 将 PWD 属性设置为与您的用户名相对应的密码。

在不验证身份的情况下使用 SSL

如果要连接的服务器使用 SSL 但不需要身份验证,则可以将驱动程序配置为使用非验证 SSL 出厂设置。

要在不进行身份验证的情况下配置 SSL 连接

  1. UID 属性设置为您的用户名,以便访问 Amazon Redshift 服务器。

  2. PWD 属性设置为与您的用户名对应的密码。

  3. SSLFactory 属性设置为 com.amazon.redshift.ssl.NonValidatingFactory

使用单向 SSL 身份验证

如果要连接的服务器使用 SSL 并且具有证书,则您可以将驱动程序配置为使用单向身份验证来验证服务器的身份。

单向身份验证需要签名、受信任的 SSL 证书来验证服务器的身份。您可以将驱动程序配置为使用特定证书或访问包含相应证书的 TrustStore。如果您未指定证书或 TrustStore,则驱动程序将使用默认的 Java TrustStore(通常为 jssecacertscacerts)。

要配置单向 SSL 身份验证

  1. 将 UID 属性设置为您的用户名,以便访问 Amazon Redshift 服务器。

  2. 将 PWD 属性设置为与您的用户名相对应的密码。

  3. 将 SSL 属性设置为 true。

  4. 将 SSLRootCert 属性设置为根 CA 证书的位置。

  5. 如果您未使用默认的 Java TrustStore 之一,请执行以下操作之一:

    • 要指定服务器证书,请将 SSLRootCert 属性设置为证书的完整路径。

    • 要指定 TrustStore,请执行以下操作:

      1. 使用 keytool 程序将服务器证书添加到要使用的 TrustStore 中。

      2. 指定使用驱动程序启动 Java 应用程序时要使用的 TrustStore 和密码。例如:

        -Djavax.net.ssl.trustStore=[TrustStoreName] -Djavax.net.ssl.trustStorePassword= [TrustStorePassword]
  6. 请选择一种:

    • 要验证证书,请将 SSLMode 属性设置为 verify-ca。

    • 要验证证书并确认证书中的主机名,请将 SSLMode 属性设置为 verify-full。

配置 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 属性在连接字符串中指定配置文件名称。

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

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

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

使用实例配置文件凭证

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

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

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

使用凭证提供程序

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

  • 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。

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

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

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

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

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