可以使用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
参数。
ldap ldapserver=myldap.com ldaptls=1 ldapprefix="uid=" ldapsuffix=",ou=People,dc=example,dc=com"
使用指定非默认端口
ldapport
参数。在此示例中,
认证方法参数包括
ldaptls
参数,
包括指定550端口的
ldapport
参数。
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协议。
ldapserver=ldaps://myldap.com
要指定非默认端口,请在LDAP服务器名称后添加冒号(:)和端口号。
在此示例中example
ldapserver
参数包括
ldaps://
前缀及非默认端口550。
ldapserver=ldaps://myldap.com:550
使用系统级的OpenLDAP系统配置认证
如果有一个系统级的OpenLDAP系统,并且在pg_hba.conf文件中配置使用带TLS或者SSL的LDAP登录,则登录可能会失败并显示以下消息:
could not start LDAP TLS session: error code '-11'
要使用现有的OpenLDAP系统进行身份验证,Greenplum数据库必须被设置为使用该LDAP服务器的CA证书来验证用户证书。
在master主机和standby主机上执行以下步骤以配置Greenplum数据库:
将base64编码的根CA链文件从活动目录或LDAP服务器复制到Greenplum数据库的master主机和standby主机。在此示例中,使用
/etc/pki/tls/certs
目录。
-
切换到复制CA证书文件的目录,并以root用户身份为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>
Note:
要使证书验证成功,证书中的主机名必须与URI属性中的主机名匹配。否则,您还必须添加
TLS_REQCERT
allow
参数到文件中。
-
以gpadmin用户身份,编辑
/usr/local/greenplum-db/greenplum_path.sh
并添加以下行。
export LDAPCONF=/etc/openldap/ldap.conf
此示例指定Greenplum数据库和LDAP服务器之间没有加密的LDAP认证。
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认证。
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认证。
host all ldapsuser 0.0.0.0/0 ldap ldapserver=ldaps://myldap.com ldapprefix="uid=" ldapsuffix=",ou=People,dc=example,dc=com"