使用带TLS/SSL的LDAP认证
使用带TLS/SSL的LDAP认证
通过对pg_hba.conf文件条目增加参数,可以用一台LDAP服务器以及可选的加密连接来控制对Greenplum数据库的访问。
- 使用STARTTLS和TLS协议的LDAP认证 – STARTTLS从一个明文连接(不加密)的连接开始并且把它升级到一个安全的连接(加密)。
- 使用安全连接和TLS/SSL(LDAPS)的LDAP认证 – Greenplum数据库使用以LDAP服务器所用协议为基础的TLS或者SSL协议。
如果没有指定协议,Greenplum数据库会使用明文连接与LDAP服务器通信。
要使用LDAP认证,Greenplum数据库的Master主机必须被配置为LDAP客户端。有关配置LDAP客户端的信息请见LDAP文档。
启用使用STARTTLS和TLS的LDAP认证
ldap ldapserver=myldap.com ldaptls=1 ldapprefix="uid=" ldapsuffix=",ou=People,dc=example,dc=com"
ldap ldapserver=myldap.com ldaptls=1 ldapport=500 ldapprefix="uid=" ldapsuffix=",ou=People,dc=example,dc=com"
启用使用安全连接和TLS/SSL的LDAP认证
要启用用TLS/SSL的安全连接,把ldaps://作为前缀添加到参数ldapserver中指定的LDAP服务器名上。默认端口是636。
这个ldapserver参数的例子指定一个安全连接并且为LDAP服务器myldap.com指定TLS/SSL协议。
ldapserver=ldaps://myldap.com
要指定一个非默认端口,可以在LDAP服务器名后面加一个冒号(:)和端口号。这个This example ldapserver参数的例子包括ldaps://前缀和非默认端口550。
ldapserver=ldaps://myldap.com:550
用一个系统级的OpenLDAP系统配置认证
could not start LDAP TLS session: error code '-11'
- 从活动目录或者LDAP服务器中复制base64编码的根CA链文件到Greenplum数据库的Master和后备Master主机。这个例子使用目录/etc/pki/tls/certs。
-
以root用户切换到复制该CA证书文件的目录,为OpenLDAP生成哈希:
# cd /etc/pki/tls/certs # openssl x509 -noout -hash -in <ca-certificate-file> # ln -s <ca-certificate-file> <ca-certificate-file>.0
-
用指定的CA证书目录和证书文件为Greenplum数据库配置一个OpenLDAP配置文件。
作为root用户编辑OpenLDAP配置文件 /etc/openldap/ldap.conf:
SASL_NOCANON on URI ldaps://ldapA.example.priv ldaps://ldapB.example.priv ldaps://ldapC.example.priv BASE dc=example,dc=priv TLS_CACERTDIR /etc/pki/tls/certs TLS_CACERT /etc/pki/tls/certs/<ca-certificate-file>
注意: 为了让证书验证成功,证书中的主机名必须匹配URI属性中的一个主机名。否则,还必须在该文件中增加TLS_REQCERT allow。 -
作为gpadmin用户编辑/usr/local/greenplum-db/greenplum_path.sh并且添加下列行。
export LDAPCONF=/etc/openldap/ldap.conf
注解
- 如果同时指定ldaps://前缀和ldaptls=1参数。
- 如果同时指定ldaps://前缀和ldapport参数。
为LDAP认证启用加密通信只会加密Greenplum数据库和LDAP服务器之间的通信。
有关加密客户端连接的信息请见加密客户端/服务器连接。
例子
这些例子是一个pg_hba.conf文件中的条目。
这个例子指定进行LDAP认证时,在Greenplum数据库和LDAP服务器之间的通信上不做加密。
host all plainuser 0.0.0.0/0 ldap ldapserver=myldap.com ldapprefix="uid=" ldapsuffix=",ou=People,dc=example,dc=com"
这个例子指定进行LDAP认证时,在Greenplum数据库和LDAP服务器之间的通信上使用STARTTLS和TLS协议。
host all tlsuser 0.0.0.0/0 ldap ldapserver=myldap.com ldaptls=1 ldapprefix="uid=" ldapsuffix=",ou=People,dc=example,dc=com"
这个例子指定进行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"