为Linux客户端进行Kerberos配置
为Linux客户端进行Kerberos配置
您可以配置Linux client客户端应用来连接一个已配置Kerberos认证的Greenplum数据库系统。
如果在Red Hat Enterprise Linux,JDBC连接Greenplum数据库时,使用Kerberos认证。 在客户端系统必须被配置为使用Kerberos认证。 如果不使用Kerberos认证连接Greenplum数据库,在客户端系统中不需要Kerberos。
有关在Greenplum数据库中启用Kerberos认证的信息,参阅Greenplum数据库管理员指南中的“使用Kerberos认证”部分。
要求
如下是从客户端系统使用JDBC应用连接到已启用Kerberos认证的Greenplum数据库的要求。
先决条件
- 在Greenplum数据库master主机上必须安装并配置好Kerberos。
Important: Greenplum数据库必须被配置完毕,这样远程用户才能使用Kerberos认证连接到Greenplum数据库。 授权访问Greenplum Database数据库,通过pg_hba.conf文件控制。 关于细节,参阅Greenplum数据库管理员指南中的“编辑pg_hba.conf文件”部分。
- The client system requires the Kerberos configuration file krb5.conf from the Greenplum Database master.
- 客户端系统从Greenplum数据库的Master请求Kerberos配置文件krb5.conf。 客户端系统需要Kerberos密钥表文件,该文件包含用于登录数据库的Greenplum数据库用户的身份认证凭据。
- 客户端机器必须能够连接到Greenplum数据库master主机。
如有必要,将Greenplum数据库master主机名和IP地址添加到系统的hosts文件。 在Linux系统上,hosts 文件在/etc目录下。
客户端机器上的必需软件
- 在客户端机器上需要Kerberos的kinit工具。
该kinit在安装安装Kerberos软件包时即可获得:
- krb5-libs
- krb5-workstation
Note: 安装Kerberos软件包时,可以使用其他Kerberos的klist工具显示Kerberos票证信息。
- Java JDK
Red Hat Enterprise Linux 6.x支持Java JDK 1.7.0_17。
- 确保将JAVA_HOME设置为Java JDK支持的安装目录。
设置客户端系统使用Kerberos身份认证
要使用Kerberos身份认证连接到Greenplum数据库,需要Kerberos票证。 在客户端系统上,使用kinit工具生成Kerberos的密钥表文件生成票证并存储在缓存文件中。
-
安装Greenplum数据库maste主机中Kerberos配置文件krb5.conf的副本。
该文件可用于Greenplum数据库客户端软件和Kerberos实用程序。
安装krb5.conf文件到/etc目录。
如果需要,增加default_ccache_name参数到krb5.ini文件的 [libdefaults]部分,用于指定Kerberos票据缓存文件在客户端系统中位置。
- 获取包含Greenplum数据库用户的身份认证凭据的Kerberos密钥表文件。
- 运行kinit指定密钥表文件在客户端计算机上创建票证。
对于此示例,密钥表文件gpdb-kerberos.keytab在当前目录中。
票证缓存文件位于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身份验证配置的用户。
例如,使用Kerberos主体gpadmin/kerberos-gpdb,以gpadmin用户身份, 登录到计算机上的Greenplum数据库:
$ psql -U "gpadmin/kerberos-gpdb" -h kerberos-gpdb postgres
运行Java应用程序
使用Java身份验证和授权服务(JAAS),通过Java应用程序访问已启用Kerberos身份验证的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; };
- 创建Java应用程序连接到已启用Kerberos身份验证的Greenplum数据库的,并以用户身份运行应用程序。
此示例数据库连接URL使用PostgreSQL的JDBC驱动程序并指定Kerberos身份验证的参数。
jdbc:postgresql://kerberos-gpdb:5432/mytest? kerberosServerName=postgres&jaasApplicationName=pgjdbc& user=gpadmin/kerberos-gpdb
指定的参数名称和值取决于Java应用程序如何执行Kerberos身份验证。