为Linux客户端配置Kerberos
为Linux客户端配置Kerberos
可以配置Linux客户端应用来连接一个配置为用Kerberos认证的Greenplum数据库系统。
如果在RedHat Enterprise Linux上的JDBC应用连接Greenplum数据库时使用Kerberos认证,客户端系统必须被配置为使用Kerberos认证。如果没有使用Kerberos认证来连接到Greenplum数据库,就无需在客户端系统上配置Kerberos。
有关在Greenplum数据库中启用Kerberos认证的信息,请见Greenplum数据库管理员指南中的"使用Kerberos认证"。
要求
下面是从一个客户端系统用JDBC应用连接到启用了Kerberos认证的Greenplum数据库的要求。
先决条件
- 在Greenplum数据库的Master主机上必须安装并配置好Kerberos。 重要: Greenplum数据库必须被配置好,这样远程用户能够用Kerberos认证连接到Greenplum数据库。对Greenplum数据库访问的授权由pg_hba.conf文件控制。细节请见Greenplum数据库管理员指南中的"编辑pg_hba.conf文件",还可参见Greenplum数据库安全性配置指南。
- 客户端系统从Greenplum数据库的Master请求Kerberos配置文件krb5.conf。
- 客户端系统要求一个Kerberos的keytab文件,其中含有被用来登入数据库的Greenplum数据库用户的认证证书。
- 客户端机器必须能够连接到Greenplum数据库的Master主机。
如果需要,把Greenplum数据库的Master主机名和IP地址添加到系统的hosts文件中。在Linux系统上,hosts文件在/etc中。
客户端机器上的必备软件
- 在客户端机器上要求Kerberos的kinit工具。在安装Kerberos包时就有kinit工具:
- krb5-libs
- krb5-workstation
注意: 在安装Kerberos包时,可以使用其他Kerberos工具(例如klist)来显示Kerberos的ticket信息。
- Java JDK
在Red Hat Enterprise Linux 6.x上支持Java JDK 1.7.0_17。
- 确保JAVA_HOME被设置为受支持的Java JDK的安装目录。
设置带有Kerberos认证的客户端系统
用Kerberos认证连接到Greenplum数据库需要一个Kerberos的ticket。在客户端系统上,ticket从Kerberos的keytab文件用kinit工具生成,并且被保存在一个缓冲文件中。
-
从Greenplum数据库的Master上的Kerberos配置文件krb5.conf复制一份拷贝。这个文件会被Greenplum数据库客户端软件以及Kerberos工具使用。
把krb5.conf安装在目录/etc中。
如果需要,把参数default_ccache_name添加到krb5.ini文件的[libdefaults]小节中,并且为它指定客户端系统上的Kerberos ticket缓冲文件。
- 获得一个包含Greenplum数据库用户的认证证书的Kerberos keytab文件。
-
运行kinit根据指定的keytab文件在客户端机器上创建一个ticket。对于这个例子,keytab文件gpdb-kerberos.keytab在当前目录中。ticket缓冲文件在gpadmin用户的主目录中。
> kinit -k -t gpdb-kerberos.keytab -c /home/gpadmin/cache.txt gpadmin/kerberos-gpdb@KRB.EXAMPLE.COM
运行psql
用户可以从一个远程系统访问启用了Kerberos认证的Greenplum数据库。
要用psql连接到Greenplum数据库
- 作为gpadmin用户,打开一个命令窗口。
-
从命令窗口启动psql,并且指定建立到Greenplum数据库的连接,连接使用一个配置了Kerberos认证的用户。
下面的例子作为gpadmin用户登入到kerberos-gpdb机器上的Greenplum数据库,该用户的Kerberos证书是gpadmin/kerberos-gpdb:
$ psql -U "gpadmin/kerberos-gpdb" -h kerberos-gpdb postgres
运行一个Java应用
从一个Kerberos认证的Java应用使用Java认证和授权服务(JAAS)访问Greenplum数据库
-
在用户主目录中创建文件.java.login.config。
例如,在一个Linux系统上,主目录类似于/home/gpadmin。
把下列文本加到该文件中:
pgjdbc { com.sun.security.auth.module.Krb5LoginModule required doNotPrompt=true useTicketCache=true ticketCache = "/home/gpadmin/cache.txt" debug=true client=true; };
- 创建一个使用Kerberos认证连接到Greenplum数据库的Java应用,并且作为该用户运行该应用。
这个示例数据库连接URL使用了一种PostgreSQL JDBC驱动并且指定了用于Kerberos认证的参数。
jdbc:postgresql://kerberos-gpdb:5432/mytest? kerberosServerName=postgres&jaasApplicationName=pgjdbc& user=gpadmin/kerberos-gpdb
指定的参数名和值取决于该Java应用如何执行Kerberos认证。