gpfdists:// 协议

gpfdists:// 协议是gpfdist:// 协议的一个安全版本。

要使用它,用户需要以--ssl选项运行gpfdist工具。 当在一个URI中指定gpfdists://协议时,它启用文件服务器和Greenplum数据库的加密通信以及安全鉴定以保护其不受窃听和中间人等攻击。

gpfdists以客户端/服务器形式实现了SSL安全性,并且有下列属性和限制:

  • 客户端证书是必需的。
  • 不支持多语言证书。
  • 不支持证书撤销列表(CRL)。
  • TLSv1协议被用于TLS_RSA_WITH_AES_128_CBC_SHA加密算法。
  • SSL参数不能被更改。
  • 支持SSL重新协商。
  • SSL忽略被设置为false的主机失配参数。
  • 对于gpfdist文件服务器(server.key)和Greenplum数据库(client.key)不支持包含密码的私钥。
  • 为操作系统发行合适的证书是用户的责任。通常,支持转换https://www.sslshopper.com/ssl-converter.html中所示的证书。

    Note: 一个用gpfdist —ssl选项启动的服务器只能与gpfdists协议通讯。一个不带--ssl选项启动的gpfdists服务器只能与gpfdists协议通讯。

  • 客户端证书文件是client.crt

  • 客户端私钥文件是client.key

使用下列方法之一来调用gpfdists协议。

  • 用--ssl选项运行gpfdist, 然后在CREATE EXTERNAL TABLE语句的LOCATION子句中使用 gpfdists协议。
  • 使用一个SSL选项设置为真的gpload YAML控制文件。 运行gpload,它会用--ssl选项启动gpfdist服务器, 然后使用gpfdists协议。

使用gpfdists要求下列客户端证书存在于每个Segment的$PGDATA/gpfdists目录中。

  • 客户端证书文件是client.crt
  • 客户端私钥文件是client.key
  • 受信证书发行机构root.crt

一个装载数据到具有安全性的外部表中的例子可见Example 3—Multiple gpfdists instances

服务器配置参数verify_gpfdists_cert 控制当Greenplum数据库与gpfdist实用程序通信以从外部数据源读取数据或将数据写入外部数据源时是否启用SSL证书认证。 在测试Greenplum数据库外部表与提供外部数据的gpfdist实用程序之间的通信时, 可以将参数值设置为false,以禁用身份验证。 如果值为false,这些SSL异常将被忽略:

  • gpfdist使用的自签名SSL证书不被Greenplum数据库信任。
  • SSL证书中包含的主机名与运行gpfdist的主机名不匹配。

Warning: 禁用SSL证书身份验证会暴露安全风险,因为不会去验证gpfdists SSL证书。

Parent topic: 定义外部表