配置连接的安全选项 - Amazon Redshift
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

配置连接的安全选项

Amazon Redshift 支持安全套接字层 (SSL) 连接来加密数据和服务器证书,以验证客户端连接到的服务器证书。

使用 SSL 进行连接

为了支持 SSL 连接,Amazon Redshift 会在每个集群中创建并安装 Amazon Certificate Manager (ACM) 颁发的 SSL 证书。ACM 证书受到大多数操作系统、Web 浏览器和客户端的公开信任。如果您的 SQL 客户端或应用程序使用 SSL 连接到 Amazon Redshift,并且 sslMode 连接选项设置为 requireverify-caverify-full,则您可能需要下载证书捆绑包。如果您的客户需要,Amazon Redshift 会提供如下捆绑证书:

  • 捆绑包下载地址:https://s3.amazonaws.com/redshift-downloads/amazon-trust-ca-bundle.crt

    • 预期的 MD5 校验码为 418dea9b6d5d5d5de7a8f1ac42e164cdcf。

    • sha256 预期的 MD5 校验码是 36dba8e4b8041cd14b9d601593963301bcbb92e1c456847784de2acb5bd550。

    不要使用位于 https://s3.amazonaws.com/redshift-downloads/redshift-ca-bundle.crt 的之前的证书捆绑包。

  • 在中国 Amazon Web Services 区域,请从以下网址下载捆绑包:https://s3.cn-north-1.amazonaws.com.cn/redshift-downloads-cn/amazon-trust-ca-bundle.crt

    • 预期的 MD5 校验码为 418dea9b6d5d5d5de7a8f1ac42e164cdcf。

    • sha256 预期的 MD5 校验码是 36dba8e4b8041cd14b9d601593963301bcbb92e1c456847784de2acb5bd550。

    不要使用位于 https://s3.cn-north-1.amazonaws.com.cn/redshift-downloads-cn/redshift-ca-bundle.crthttps://s3.cn-north-1.amazonaws.com.cn/redshift-downloads-cn/redshift-ssl-ca-cert.pem 的以前的证书捆绑包

重要

Amazon Redshift 改变了我们管理 SSL 证书的方法。您可能需要更新当前的信任根 CA 证书,才能继续使用 SSL 连接集群。有关更多信息,请参阅 将 SSL 连接过渡到 ACM 证书

默认情况下,无论连接是否使用 SSL,集群数据库都会接受该连接。要将您的集群配置为需要使用 SSL 连接,请在与集群关联的参数组中将 require_SSL 参数设置为 true

Amazon Redshift 支持符合联邦信息处理标准 (FIPS) 140-2 的 SSL 模式。符合 FIPS 的 SSL 模式在默认情况下处于禁用状态。

重要

仅在您的系统需要与 FIPS 兼容时才启用与 FIPS 兼容的 SSL 模式。

要启用符合 FIPS 的 SSL 模式,请在与集群关联的参数组中将 use_fips_ssl 参数和 require_SSL 参数设置为 true。有关修改参数组的信息,请参阅Amazon Redshift 参数组

Amazon Redshift 支持 Elliptic Curve Diffie—Hellman Ephemeral (ECDHE) 密钥协商协议。ECDHE 使得客户端和服务器各有一个椭圆曲线公有/私有密钥对,用来在不安全的通道上创建共享密钥。您无需在 Amazon Redshift 中进行任何配置即可启用 ECDHE。如果您从使用 ECDHE 来加密客户端与服务器间通信的 SQL 客户端工具进行连接,则 Amazon Redshift 将使用提供的密码列表来建立合适的连接。有关更多信息,请参阅 Wikipedia 上的 Elliptic curve diffie—hellman 和 OpenSSL 网站上的密码

在 ODBC 中使用 SSL 和信任 CA 证书

如果您使用最新 Amazon Redshift ODBC 驱动程序 (1.3.7.1000 版或更高版本) 连接,则可以跳过此部分。要下载最新驱动程序,请参阅配置 ODBC 连接

您可能需要更新当前的信任根 CA 证书,才能继续使用 SSL 连接集群。有关更多信息,请参阅 使用 SSL 进行连接

您可以验证下载的证书是否与此预期的 MD5 校验和码匹配。为此,您可以在 Linux 操作系统上使用 Md5sum 程序,或者在 Windows 和 macOS X 操作系统上使用其他工具。

ODBC DSN 中的 sslmode 设置用于确定如何处理客户端连接加密和服务器证书验证。Amazon Redshift 支持客户端连接中的以下 sslmode 值:

  • disable

    SSL 处于禁用状态,且连接未加密。

  • allow

    如果服务器需要,则使用 SSL。

  • prefer

    如果服务器支持,则使用 SSL。Amazon Redshift 支持 SSL,因此您可以在将 sslmode 设置为 prefer 时使用 SSL。

  • require

    需要使用 SSL。

  • verify-ca

    必须使用 SSL,且必须验证服务器证书。

  • verify-full

    必须使用 SSL。必须验证服务器证书,且服务器主机名必须与证书上的主机名属性一致。

您可以确定是否使用了 SSL 以及是否在客户端和服务器之间的连接中验证了服务器证书。为此,您需要查看客户端上 ODBC DSN 的 sslmode 设置以及服务器上 Amazon Redshift 集群的 require_SSL 设置。下表介绍了各种客户端与服务器设置组合的加密结果:

sslmode(客户端) require_SSL(服务器) 结果
disable false 连接未加密。
disable true 由于服务器需要使用 SSL,但客户端针对该连接禁用了 SSL,因此无法建立连接。
allow true 连接经过加密。
allow false 连接未加密。
prefer 或者 require true 连接经过加密。
prefer 或者 require false 连接经过加密。
verify-ca true 连接经过加密,且验证了服务器证书。
verify-ca false 连接经过加密,且验证了服务器证书。
verify-full true 连接经过加密,且验证了服务器证书和主机名。
verify-full false 连接经过加密,且验证了服务器证书和主机名。

在 Microsoft Windows 上使用服务器证书和 ODBC 进行连接

如果要使用 SSL 和服务器证书连接到集群,请先将证书下载到客户端计算机或 Amazon EC2 实例。然后配置 ODBC DSN。

  1. 将 Amazon Redshift 证书颁发机构包下载到客户端计算机上的驱动程序安装目录中的 lib 文件夹,然后将该文件另存为 root.crt。有关下载信息,请参阅使用 SSL 进行连接

  2. 打开 ODBC Data Source Administrator,然后添加或编辑 ODBC 连接的系统 DSN 条目。对于 SSL Mode,如果不使用 DNS 别名,请选择 verify-full。如果您使用 DNS 别名,请选择 verify-ca。然后选择 Save (保存)

    有关配置 ODBC DSN 的更多信息,请参阅配置 ODBC 连接

在 Java 中使用 SSL 和服务器证书

SSL 通过加密可在您的客户端与集群之间移动的数据来提供一个安全层。使用服务器证书可验证集群是否为 Amazon Redshift 集群,从而提供一个额外的安全层。具体方法是,检查自动安装在您预配置的所有集群上的服务器证书。有关将服务器证书 JDBC 一起使用的更多信息,请转到 PostgreSQL 文档中的配置客户端

在 Java 中使用信任 CA 证书以进行连接

如果您使用最新 Amazon Redshift JDBC 驱动程序 (1.2.8.1005 版或更高版本) 连接,则可以跳过此部分。要下载最新的驱动程序,请参阅配置 JDBC 连接

重要

Amazon Redshift 改变了我们管理 SSL 证书的方法。您可能需要更新当前的信任根 CA 证书,才能继续使用 SSL 连接集群。有关更多信息,请参阅 使用 SSL 进行连接

使用信任 CA 证书进行连接

您可以使用 redshift-keytool.jar 文件将 Amazon Redshift 证书颁发机构包中的 CA 证书导入 Java 信任存储库或您的私有信任存储库中。

  1. 如果您使用 Java 命令行 -Djavax.net.ssl.trustStore 选项,请尽量将其从命令行中删除。

  2. 下载 redshift-keytool.jar

  3. 请执行下列操作之一:

    • 要将 Amazon Redshift 证书颁发机构捆绑包导入 Java 信任存储库中,请运行以下命令。

      java -jar redshift-keytool.jar -s
    • 要将 Amazon Redshift 证书颁发机构捆绑包导入您的私有信任存储库中,请运行以下命令:

      java -jar redshift-keytool.jar -k <your_private_trust_store> -p <keystore_password>