使用带TLS/SSL的LDAP认证

可以使用LDAP服务器控制对Greenplum数据库的访问。此外,通过对pg_hba.conf文件条目增加参数,可使用加密来保护访问连接。

Greenplum数据库支持在带TLS/SSL协议的LDAP认证,用以加密与LDAP服务器的通信:

  • 带STARTTLS和TLS协议的LDAP认证 – STARTTLS以明文连接(无加密)开始,并将其升级为安全连接(使用加密)。
  • 带安全连接与TLS/SSL的LDAP认证(LDAPS) – Greenplum数据库可以使用基于LDAP服务器协议的TLS或SSL协议。

如果未指定协议,Greenplum Database将使用明文连接与LDAP服务器通信。

要使用LDAP认证,必须将Greenplum数据库的master节点配置为LDAP客户端。有关配置LDAP客户端的更多信息,请参阅LDAP文档。

启用带STARTTLS和TLS协议的LDAP认证

要启用带TLS协议的STARTTLS,在pg_hba.conf文件中,增加一个 ldap行,并制定ldaptls参数值为1。 默认端口是389。在此示例中,认证方法参数包括ldaptls参数。

  1. ldap ldapserver=myldap.com ldaptls=1 ldapprefix="uid=" ldapsuffix=",ou=People,dc=example,dc=com"

使用指定非默认端口ldapport 参数。在此示例中, 认证方法参数包括ldaptls参数, 包括指定550端口的ldapport参数。

  1. ldap ldapserver=myldap.com ldaptls=1 ldapport=500 ldapprefix="uid=" ldapsuffix=",ou=People,dc=example,dc=com"

启用带安全连接与TLS/SSL的LDAP认证

要启用带TLS/SSL的安全连接,将以ldaps://为前缀的LDAP服务器名称,指定到ldapserver参数上. 默认端口是636。

在此示例中,ldapserver参数为LDAP服务器myldap.com指定安全连接及 TLS/SSL协议。

  1. ldapserver=ldaps://myldap.com

要指定非默认端口,请在LDAP服务器名称后添加冒号(:)和端口号。 在此示例中example ldapserver参数包括 ldaps://前缀及非默认端口550。

  1. ldapserver=ldaps://myldap.com:550

使用系统级的OpenLDAP系统配置认证

如果有一个系统级的OpenLDAP系统,并且在pg_hba.conf文件中配置使用带TLS或者SSL的LDAP登录,则登录可能会失败并显示以下消息:

  1. could not start LDAP TLS session: error code '-11'

要使用现有的OpenLDAP系统进行身份验证,Greenplum数据库必须被设置为使用该LDAP服务器的CA证书来验证用户证书。 在master主机和standby主机上执行以下步骤以配置Greenplum数据库:

  1. 将base64编码的根CA链文件从活动目录或LDAP服务器复制到Greenplum数据库的master主机和standby主机。在此示例中,使用/etc/pki/tls/certs目录。
  2. 切换到复制CA证书文件的目录,并以root用户身份为OpenLDAP生成哈希:

    1. # cd /etc/pki/tls/certs
    2. # openssl x509 -noout -hash -in <ca-certificate-file>
    3. # ln -s <ca-certificate-file> <ca-certificate-file>.0
  3. 使用指定的CA证书目录和证书文件为Greenplum数据库配置OpenLDAP配置文件。

    以root用户身份编辑OpenLDAP配置文件/etc/openldap/ldap.conf内容:

    1. SASL_NOCANON on
    2. URI ldaps://ldapA.example.priv ldaps://ldapB.example.priv ldaps://ldapC.example.priv
    3. BASE dc=example,dc=priv
    4. TLS_CACERTDIR /etc/pki/tls/certs
    5. TLS_CACERT /etc/pki/tls/certs/<ca-certificate-file>

    Note: 要使证书验证成功,证书中的主机名必须与URI属性中的主机名匹配。否则,您还必须添加TLS_REQCERT allow参数到文件中。

  4. 以gpadmin用户身份,编辑/usr/local/greenplum-db/greenplum_path.sh并添加以下行。

    1. export LDAPCONF=/etc/openldap/ldap.conf

注释

如果在pg_hba.conf文件的条目中指定了以下内容,则Greenplum数据库会记录错误:

  • 同时指定了ldaps://前缀,和ldaptls=1参数
  • 同时指定了ldaps://前缀,和ldapport参数

为LDAP认证启用加密通信,仅加密Greenplum数据库和LDAP服务器之间的通信。

有关加密客户端连接的信息,参考加密客户端/服务器连接所示。

示例

如下是一个pg_hba.conf文件中的示例条目。

此示例指定Greenplum数据库和LDAP服务器之间没有加密的LDAP认证。

  1. host all plainuser 0.0.0.0/0 ldap ldapserver=myldap.com ldapprefix="uid=" ldapsuffix=",ou=People,dc=example,dc=com"

此示例指定Greenplum数据库和LDAP服务器之间的带STARTTLS和TLS协议的LDAP认证。

  1. host all tlsuser 0.0.0.0/0 ldap ldapserver=myldap.com ldaptls=1 ldapprefix="uid=" ldapsuffix=",ou=People,dc=example,dc=com"

此示例指定Greenplum数据库和LDAP服务器之间的带安全连接与TLS/SSL的LDAP认证。

  1. host all ldapsuser 0.0.0.0/0 ldap ldapserver=ldaps://myldap.com ldapprefix="uid=" ldapsuffix=",ou=People,dc=example,dc=com"

Parent topic: 配置客户端认证