使用带TLS/SSL的LDAP认证
使用带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参数。
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
注释
如果在pg_hba.conf文件的条目中指定了以下内容,则Greenplum数据库会记录错误:
- 同时指定了ldaps://前缀,和ldaptls=1参数
- 同时指定了ldaps://前缀,和ldapport参数
为LDAP认证启用加密通信,仅加密Greenplum数据库和LDAP服务器之间的通信。
有关加密客户端连接的信息,参考加密客户端/服务器连接所示。
示例
如下是一个pg_hba.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"