• Greenplum身份验证方式-Kerberos


    记述验证Greenplum使用Kerberos做登录身份验证的过程

    略过kerberos服务端配置过程。

    基础环境(linux)

      10.110.18.84  idap-server-84.idap.com    安装了所有kerberos服务

      10.110.18.241 idap-241           gpdb master

      10.110.18.67  idap-67             模拟gpdb客户端登录gpdb

    kerberos用户应如是设置(postgresql和gpdb文档)

    对数据库来说需要设置两个kerberos账号,

    一个是数据库用户名,当然这个用户是在数据库里面实际创建好的

    比如数据库用户为user4,则设置账号为 user4@IDAP.COM ,格式是username@realm name;

    一个是postgres,这个名字对应于master上的postgresql.conf中 krb_srvname = 'postgres' ,

    则设置账号为 postgres/idap-241@IDAP.COM,格式是postgres/svrname@realm name

    操作系统基本设置

      做主机间互信(idap-server-84 的root与 idap-241的用户(root,gpadmin))

      修改/etc/hosts文件

          kerberos server增加

            10.110.18.241 idap-241

          gpdb master 增加

            10.110.18.84 idap-server-84.idap.com

      时钟同步(idap-server-84 与 idap-241)  ntp

    配置过程:

      kerberos服务端配置

        

    #kadmin.local

    kadmin.local: addprinc user4@IDAP.COM

    kadmin.local:addprinc postgres/idap-241@IDAP.COM

    kadmin.local: xst -k gpdb-user4-7.keytab user4@IDAP.COM postgres/idap-241@IDAP.COM

    然后复制生成的gpdb-user4-7.keytab到241上。因为是在gpadmin用户下使用,所有最好是拷贝到gpadmin home目录下且拥有所有权限

    否则可能有如下错误 kinit: Permission denied while getting initial credentials

    复制/etc/krb5.conf文件到241 /etc/下

      

      kerberos客户端(gpdb master)

    安装krb5客户端

      #yum install krb5-libs krb5-workstation

    从kerberos server 拷贝 /etc/krb5.conf文件到/etc/

    安装票据(gpadmin用户下执行)

    $kdestroy -A

    $kinit -k -t /home/gpadmin/gpdb-user4-7.keytab postgres/idap-241@IDAP.COM

    $kinit -k -t /home/gpadmin/gpdb-user4-7.keytab user4@IDAP.COM

    kinit顺序可能是有关的,验证失败留意是否有如下提示 provided user name (user4) and authenticated user name (postgres/idap-241) do not match

    gpdb master配置

    创建数据库用户 user4

    修改postgresql.conf

      krb_server_keyfile = '/home/gpadmin/gpdb-user4-7.keytab'

    修改pg_hba.conf

      host all all 0.0.0.0/0 gss include_realm=0 krb_realm=IDAP.COM

    重启gpdb服务,使配置生效

     

    PSQL登录验证(在master上)

      [gpadmin@idap-241 ~]$ psql -U user4 -h idap-241 template1

    JDBC登录验证(在master上)

      创建配置文件文件 ~/.java.login.config ,路径和名称无关紧要

    pgjdbc{

    com.sun.security.auth.module.Krb5LoginModule required

    doNotPrompt=true

    useKeyTab=true

    keyTab="/home/gpadmin/gpdb-user4-7.keytab"

    useTicketCache=true

    debug=true

    principal="user4@IDAP.COM"

    useFirstPass=true

    isInitiator=true

    client=true;

    };

    Java代码

    String url = "jdbc:postgresql://idap-241/testdb?kerberosServerName=postgres&jaasApplicationName=pgjdbc&user=user4";

    Connection conn = DriverManager.getConnection(url);

    //注意这里没有要求输入密码;注意这里的user和pgjdbc config中配置的账号是一样的。

    注意 因为创建账号为 postgres/idap-241@IDAP.COM ,所以这里也得用idap-241拼接URL,否则提示 服务器不匹配。好奇怪的感觉。

      测试

        $java -jar App1.jar

    JDBC登录验证(在67机器上)

      安装kerberos客户端,并配置票据

        #yum install krb5-libs krb5-workstation

        从kerberos服务器拷贝/etc/krb5.conf 到/etc/krb5.conf

        从241拷贝keytab文件到/root/下

        修改67 /etc/hosts 增加

          10.110.18.84 idap-server-84.idap.com

          10.110.18.241 idap-241

        [root@hostname67 ~]# kinit -k -t gpdb-user4-7.keytab postgres/idap-241@IDAP.COM

        [root@hostname67 ~]# kinit -k -t gpdb-user4-7.keytab user4@IDAP.COM

      创建 /root/pgjdbc.login.conf 文件

    内容为

    pgjdbc{

    com.sun.security.auth.module.Krb5LoginModule required

    doNotPrompt=true

    useKeyTab=true

    keyTab="/root/gpdb-user4-7.keytab"

    useTicketCache=true

    debug=true

    principal="user4@IDAP.COM"

    useFirstPass=true

    isInitiator=true

    client=true;

    };

      测试java客户端

        [root@hostname67 ~]# java -Djava.security.auth.login.config=/root/pgjdbc.login.conf -jar App1.jar

    基础知识很重要,官网文档很重要,细节很重要。测试遇到的坑多来自不够细心,胡乱假设,基础知识不通,文档看的不细

  • 相关阅读:
    ASP.NET MVC 部分视图
    IIS7.5安全配置研究
    微信公众号抢现金红包活动的核心代码分析(asp.net C#)
    [Android] hid设备按键流程简述
    [Android] AudioTrack::start
    [Android] createTrack_l
    [Android] 输入系统(三):加载按键映射
    [Android] 获取音频输出getOutput
    [Android] AudioTrack实例
    [Android] 输入系统(二)
  • 原文地址:https://www.cnblogs.com/fangjx/p/6396255.html
Copyright © 2020-2023  润新知