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

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

配置连接的安全选项

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

使用 SSL 进行连接

为了支持 SSL 连接,Amazon Redshift 会创建并安装Amazon Certificate Manager(ACM)在每个群集上颁发 SSL 证书。可以在 https://s3.amazonaws.com/redshift-downloads/redshift-ca-bundle.crt 中找到为了正确支持 SSL 必须信任的证书颁发机构的集合。如果证书捆绑包未下载,请打开链接的上下文(右键单击)菜单,然后选择将链接另存为...

重要

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

在 2021 年 1 月 5 日的中国地区,Amazon Redshift 正将您的集群中的 SSL 证书替换为Amazon Certificate Manager(ACM) 颁发的证书. 如果您的 SQL 客户端或应用程序使用 SSL 连接 Amazon Redshift,并使用sslMode连接选项设置为requireverify-ca,或者verify-full。之前的证书捆绑包 (https://s3.cn-north-1.amazonaws.com.cn/redshift-downloads-cn/redshift-ssl-ca-cert.pem)在迁移之后不起作用。

使用更新后的捆绑包https://s3.amazonaws.com/redshift-downloads/redshift-ca-bundle.crt。预期的 MD5 校验和编号为 该校验和的数据是数据库中的数据。(中国)Amazon区域中,使用以下链接:https://s3.cn-north-1.amazonaws.com.cn/redshift-downloads-cn/redshift-ca-bundle.crt。预期的 MD5 校验和编号为 7cc6 立方厘米。该数据的校验和价值为英镑。

默认情况下,无论连接是否使用 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 支持椭圆曲线差异-赫尔曼短暂 (ECDHE) 密钥协商协议。ECDHE 使得客户端和服务器各有一个椭圆曲线公有/私有密钥对,用来在不安全的通道上创建共享密钥。您无需在 Amazon Redshift 中进行任何配置即可启用 ECDHE。如果您从使用 ECDHE 来加密客户端与服务器间通信的 SQL 客户端工具进行连接,则 Amazon Redshift 将使用提供的密码列表来建立合适的连接。有关更多信息,请参阅 。椭圆曲线差异-赫尔曼在维基百科和密码在 OpenSSL 网站上。

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

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

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

Amazon Redshift 证书颁发机构捆绑包存储在https://s3.amazonaws.com/redshift-downloads/redshift-ca-bundle.crt

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

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

  • disable

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

  • allow

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

  • prefer

    如果服务器支持,则使用 SSL。Amazon Redshift 支持 SSL,因此您在设置sslmodeprefer

  • require

    需要使用 SSL。

  • verify-ca

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

  • verify-full

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

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

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

  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 连接过渡到 ACM 证书

使用信任 CA 证书进行连接

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

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

  2. 下载 redshift-keytool.jar

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

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

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

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