Amazon Redshift
管理指南 (API Version 2012-12-01)
AWS 服务或AWS文档中描述的功能,可能因地区/位置而异。点 击 Getting Started with Amazon AWS to see specific differences applicable to the China (Beijing) Region.

配置连接的安全选项

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

使用 SSL 进行连接

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

重要

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 将使用提供的密码列表建立合适的连接。有关更多信息,请参阅维基百科上的椭圆曲线迪菲-赫尔曼和 OpenSSL 网站上的 Ciphers

在 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 中。如果证书捆绑包无法下载,请右键单击上一个链接,然后选择 Save link as...。预期的 MD5 校验码是 e7a76d62fc7775ac54cfc4d21e89d36b。sha256 校验和是 e77daa6243a940eb2d144d26757135195b4bdefd345c32a064d4ebea02b9f8a1。在 中国(北京) 区域,预期的 MD5 校验码是 d8f7fd008ec30d4722d42519ff1c2962。您可以使用 Md5sum 程序(在 Linux 操作系统上)或其他工具(在 Windows 和 Mac OS X 操作系统上)来验证您下载的证书与此预期的 MD5 校验码是否匹配。

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

  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 文档中的 Configuring the Client

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

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

重要

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

使用信任 CA 证书进行连接

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

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

  2. 下载 redshift-keytool.jar

  3. 执行以下任一操作:

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

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

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