为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应用程序需要如下额外软件:
  • Java JDK

    Red Hat Enterprise Linux 6.x支持Java JDK 1.7.0_17。

  • 确保将JAVA_HOME设置为Java JDK支持的安装目录。

设置客户端系统使用Kerberos身份认证

要使用Kerberos身份认证连接到Greenplum数据库,需要Kerberos票证。 在客户端系统上,使用kinit工具生成Kerberos的密钥表文件生成票证并存储在缓存文件中。

  1. 安装Greenplum数据库maste主机中Kerberos配置文件krb5.conf的副本。 该文件可用于Greenplum数据库客户端软件和Kerberos实用程序。

    安装krb5.conf文件到/etc目录。

    如果需要,增加default_ccache_name参数到krb5.ini文件的 [libdefaults]部分,用于指定Kerberos票据缓存文件在客户端系统中位置。

  2. 获取包含Greenplum数据库用户的身份认证凭据的Kerberos密钥表文件。
  3. 运行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数据库

  1. 作为gpadmin用户打开命令窗口。
  2. 从命令窗口启动psql,指定与Greenplum数据库的连接,使用Kerberos身份验证配置的用户。

    例如,使用Kerberos主体gpadmin/kerberos-gpdb,以gpadmin用户身份, 登录到计算机上的Greenplum数据库:

    $ psql -U "gpadmin/kerberos-gpdb" -h kerberos-gpdb postgres

运行Java应用程序

使用Java身份验证和授权服务(JAAS),通过Java应用程序访问已启用Kerberos身份验证的Greenplum数据库。

  1. 在用户家目录创建.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;
    };
  2. 创建Java应用程序连接到已启用Kerberos身份验证的Greenplum数据库的,并以用户身份运行应用程序。

此示例数据库连接URL使用PostgreSQL的JDBC驱动程序并指定Kerberos身份验证的参数。

jdbc:postgresql://kerberos-gpdb:5432/mytest? 
  kerberosServerName=postgres&jaasApplicationName=pgjdbc& 
  user=gpadmin/kerberos-gpdb

指定的参数名称和值取决于Java应用程序如何执行Kerberos身份验证。