配置身份验证和 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 的行业标准版本。
仅使用用户名和密码
如果要连接的服务器不使用 SSL,则只需提供 Redshift 用户名和密码即可对连接进行身份验证。
仅使用您的 Redshift 用户名和密码配置身份验证
-
将
UID
属性设置为您的 Redshift 用户名,以便访问 Amazon Redshift 服务器。 -
将 PWD 属性设置为与您的 Redshift 用户名相对应的密码。
在不验证身份的情况下使用 SSL
如果要连接的服务器使用 SSL 但不需要身份验证,则可以将驱动程序配置为使用非验证 SSL 出厂设置。
要在不进行身份验证的情况下配置 SSL 连接
-
将
UID
属性设置为您的 Redshift 用户名,以便访问 Amazon Redshift 服务器。 -
将
PWD
属性设置为与您的 Redshift 用户名对应的密码。 -
将
SSLFactory
属性设置为com.amazon.redshift.ssl.NonValidatingFactory
。
使用单向 SSL 身份验证
如果要连接的服务器使用 SSL 并且具有证书,则您可以将驱动程序配置为使用单向身份验证来验证服务器的身份。
单向身份验证需要签名、受信任的 SSL 证书来验证服务器的身份。您可以将驱动程序配置为使用特定证书或访问包含相应证书的 TrustStore。如果您未指定证书或 TrustStore,则驱动程序将使用默认的 Java TrustStore(通常为 jssecacerts
或 cacerts
)。
要配置单向 SSL 身份验证
-
将 UID 属性设置为您的 Redshift 用户名,以便访问 Amazon Redshift 服务器。
-
将 PWD 属性设置为与您的 Redshift 用户名相对应的密码。
-
将 SSL 属性设置为 true。
-
将 SSLRootCert 属性设置为根 CA 证书的位置。
-
如果您未使用默认的 Java TrustStore 之一,请执行以下操作之一:
-
要指定服务器证书,请将 SSLRootCert 属性设置为证书的完整路径。
-
要指定 TrustStore,请执行以下操作:
-
使用 keytool 程序将服务器证书添加到要使用的 TrustStore 中。
-
指定使用驱动程序启动 Java 应用程序时要使用的 TrustStore 和密码。例如:
-Djavax.net.ssl.trustStore=[TrustStoreName] -Djavax.net.ssl.trustStorePassword= [TrustStorePassword]
-
-
-
请选择一种:
-
要验证证书,请将 SSLMode 属性设置为 verify-ca。
-
要验证证书并确认证书中的主机名,请将 SSLMode 属性设置为 verify-full。
-
配置 IAM 身份验证
如果您使用 IAM 身份验证连接到 Amazon Redshift 服务器,请将以下属性设置为数据源连接字符串的一部分。
有关 IAM 身份验证的更多信息,请参阅 Amazon Redshift 中的 Identity and Access Management。
要使用 IAM 身份验证,请使用以下连接字符串格式之一:
连接字符串 | 描述 |
---|---|
|
常规连接字符串。驱动程序从主机推断 ClusterID 和区域。 |
|
在已知 ClusterID 和区域的情况下,驱动程序将检索主机信息。 |
|
驱动程序默认为端口 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 配置的选项。