使用带TLS/SSL的LDAP认证
Greenplum数据库支持在LDAP认证中用TLS/SSL协议加密与LDAP服务器的通信:
- 使用STARTTLS和TLS协议的LDAP认证 – STARTTLS从一个明文连接(不加密)的连接开始并且把它升级到一个安全的连接(加密)。
如果没有指定协议,Greenplum数据库会使用明文连接与LDAP服务器通信。
要使用LDAP认证,Greenplum数据库的Master主机必须被配置为LDAP客户端。有关配置LDAP客户端的信息请见LDAP文档。
注意: Greenplum数据库中捆绑的PgBouncer连接池已经被修改为对通过该连接池连接连接Greenplum数据库的用户支持LDAP或者活动目录认证。具体指导请见对PgBouncer设置LDAP认证。
要启用用TLS协议的STARTTLS,在pg_hba.conf文件中增加一个ldap行并且指定ldaptls参数的值为1。默认端口是389。在这个例子中,认证方法参数包括ldaptls参数。
用ldapport参数可以指定一个非默认的端口。在这个例子中,认证方法包括ldaptls参数和指定端口为550的ldapport参数。
要启用用TLS/SSL的安全连接,把ldaps://作为前缀添加到参数ldapserver中指定的LDAP服务器名上。默认端口是636。
ldapserver=ldaps://myldap.com
要指定一个非默认端口,可以在LDAP服务器名后面加一个冒号(:)和端口号。这个This example ldapserver参数的例子包括ldaps://前缀和非默认端口550。
如果有一个系统级的OpenLDAP系统并且在pg_hba.conf文件中配置登录使用带TLS或者SSL的LDAP,登录可能会失败并且给出下面的消息:
could not start LDAP TLS session: error code '-11'
要把一个现有的OpenLDAP系统用于认证,Greenplum数据库必须被设置为使用该LDAP服务器的CA证书来验证用户证书。在Master和后备主机上按照下列步骤配置Greenplum数据库:
- 从活动目录或者LDAP服务器中复制base64编码的根CA链文件到Greenplum数据库的Master和后备Master主机。这个例子使用目录/etc/pki/tls/certs。
以root用户切换到复制该CA证书文件的目录,为OpenLDAP生成哈希:
# ln -s <ca-certificate-file> <ca-certificate-file>.0
用指定的CA证书目录和证书文件为Greenplum数据库配置一个OpenLDAP配置文件。
作为root用户编辑OpenLDAP配置文件 /etc/openldap/ldap.conf:
注意: 为了让证书验证成功,证书中的主机名必须匹配URI属性中的一个主机名。否则,还必须在该文件中增加TLS_REQCERT allow。
-
如果在一个pg_hba.conf文件条目中出现下列情况,Greenplum数据库会记录一个错误:
- 如果同时指定ldaps://前缀和ldaptls=1参数。
- 如果同时指定ldaps://前缀和ldapport参数。
为LDAP认证启用加密通信只会加密Greenplum数据库和LDAP服务器之间的通信。
有关加密客户端连接的信息请见。
这些例子是一个pg_hba.conf文件中的条目。
这个例子指定进行LDAP认证时,在Greenplum数据库和LDAP服务器之间的通信上不做加密。
这个例子指定进行LDAP认证时,在Greenplum数据库和LDAP服务器之间的通信上使用STARTTLS和TLS协议。
这个例子指定进行LDAP认证时,在Greenplum数据库和LDAP服务器之间的通信使用安全连接和TLS/SSL协议。
host all ldapsuser 0.0.0.0/0 ldap ldapserver=ldaps://myldap.com ldapprefix="uid=" ldapsuffix=",ou=People,dc=example,dc=com"