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

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

配置身份验证和 SSL

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

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

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

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

配置 Amazon Redshift JDBC 驱动程序 2.0 版,以根据要连接到的 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(通常是jssecacerts或者cacerts)。

配置单向 SSL 身份验证

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

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

  3. 将 SSL 属性设置为 true。

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

  5. 如果未使用默认 Java 信任存储库之一,请执行以下操作之一:

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

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

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

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

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

    • 要验证证书,请将 SSLMode 属性设置为 “验证”。

    • 或者,要验证证书并验证证书中的主机名,请将 SSLMode 属性设置为验证已满。

配置 IAM 身份验证

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

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

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

连接字符串 描述

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

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

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凭证中的Amazon SDK for Java

使用实例配置文件凭证

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

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

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

使用凭据提供程序

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

  • AD FS

  • Azure AD

  • Okta

  • PingFederate

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

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

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

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

  • 用户— idp_host 服务器的用户名。

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

  • DbUser— 您作为连接的 Amazon Redshift 用户名。

  • SSL_不安全— 指示是否应验证 IDP 服务器证书。

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

  • 客户端 _ 密钥— 与 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。

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

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

  • 登录网址-通过浏览器插件使用 SAML 或 Azure AD 服务时,身份提供商网站上资源的 URL。当您要使用浏览器插件时才需要此参数。

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

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

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