java API 访问带有Kerberos认证的HBase时window服务器的配置

首先第一步,是确定的代码运行在window服务器还是linux服务器下, 如果是window服务器下,首先要检测window服务器是否可以连接的通 hadoop平台的zk (2181端口) (telnet xxx.xxx.xxx.xxx 2181)确定连接无误的情况下,进行连接hbase服务器的验证操作(60020端口) (telnet xxx.xxx.xxx.xxx 60020)两者都通的话。下一步就是去的认证了。

 

首先,安装Kerberos客户端 , 安装windows版本的Kerberos客户端(链接:http://pan.baidu.com/s/1pLdIA5l 密码:e82j) ,然后进行创建配置文件 -- krb5.ini。

/**

[libdefaults]

default_realm = 登录用户

dns_lookup_kdc = false

dns_lookup_realm = false

ticket_lifetime = 86400

renew_lifetime = 604800

forwardable = true

default_tgs_enctypes = des3-cbc-sha1

default_tkt_enctypes = des3-cbc-sha1

permitted_enctypes = des3-cbc-sha1

udp_preference_limit = 1

kdc_timeout = 3000

 

[realms]

FHC = {

kdc = zookeeper的服务器器地址

admin_server =zookeeper的服务器器地址

kdc = zookeeper的服务器器地址

}

 

[domain_realm]

.example.com =

example.com =

*/

第三步 配置window服务器的系统环境变量

如 KRB5_CONFIG=d:\krb5.ini

 

最后就是 初始化 Kerberos 证书,keytab文件从hadoop服务器端可以下载到XXX.keytab

(kinit.exe –kt xxx.keytab xxx@xxx)

再次出现401则需要重新执行kinit命令 (Kerberos证书24小时超时)

 

之后就可以写个demo测试一下啦~

 

附demo代码:

//这一行在window服务器下必须要加,否则读取不到配置文件

System. setProperty("java.security.krb5.conf", krb5.ini文件的window下的路径 )

config = HBaseConfiguration.create();

//其中这些xml的配置文件来自于hbase服务器的配置文件,将他们拷下来放在相应的目录下在代码里

指定他们的路径

config.addResource("E:\\HbaseConf\\hbase-site.xml");

config.addResource("E:\\HbaseConf\\core-site.xml");

config.addResource("E:\\HbaseConf\\hdfs-site.xml");

config.addResource("E:\\HbaseConf\\ssl-clinet.xml");

UserGroupInformation.setConfiguration(config);

try{

UserGroupInformation.loginUserFromKeytab("xxx", "C:\\xxx.keytab" );

htable = new HTable(config, "表名");

Put put = new Put(Bytes.toBytes("TESTROW0004"));

put.setWriteToWAL(false);

put.add(Bytes.toBytes("INFO"), Bytes.toBytes("TESTCOLUMN"),

Bytes.toBytes("TESTVALUES0004") );

htable.put(put);

Scan scan = new Scan();

scan.addFamily(Bytes.toBytes("INFO"));

ResultScanner rs = htable.getScanner(scan);

for (Result r : rs) {

String rowkey = Bytes.toString(r.getRow());

String rowvalues = Bytes.toString( r.getValue( Bytes.toBytes("INFO"),

Bytes.toBytes( "TESTCOLUMN")) );

System.out.println("== rowkey :"+ rowkey +" rowvalues :" +rowvalues);

}

} catch (IOException e) {

e.printStackTrace();

} finally{

if( htable != null ) htable.close();

}
 

 

---------------------------------------------------------------------------------------------------------------------------------------------------------------------

Windows配置kerberos:

  1. 下载4.1版本的kerberos客户端。下载地址

http://web.mit.edu/kerberos/dist/index.html

安装直接next

  1. 修改kerberos的keb5.ini文件,一般都在C:\ProgramData\MIT\Kerberos5

  1. 修改环境变量中的path路径

如果kerberos的环境变量在后面的话,其他的软件的指令里面也带了一些 kinit, ktab, klist 等软件,所以输入 kinit 、klist 的时候执行的是其他软件的指令。所以最好把kerberos放最前面!

重中之重:改完之后一定要重启电脑!!!

  1. 之后再cmd中输入登录指令

---------------------------------------------------------------------------------------------------------------------------------------------------------------------

Linux配置kerberos:

最近需要给hadoop集群加上安全验证,采用kerberos作为认证,这里记录一下安装kerberos kdc的经验

服务器centos6.7,采用在线yum安装的方式

1、使用yum install krb5-libs krb5-server krb5-workstation 进行安装,遇到是/否一律选择是

2、等待安装完成,开始进行配置,首先配置/etc/krb5.conf文件,其中特别要配置的为default_realm,这里为自定义的一个领域(可以理解为域名),注意一定要大写如TEST.COM/TEST,下面花括号外面值和default-realm一样。话括号里为配置kdc和admin的主机名,这里配置为同一台主机即当前主机名,如果kdc有多台的话,也可以配置多个kdc=xxx

3、配置/var/kerberos/krb5kdc/kdc.conf和/var/kerberos/krb5kdc/kadm5.acl文件,其中kadm5.acl表示kadmin管理帐号为*/admin@YOUR_EALM的,即所有带/admin都为可以是管理帐号

4、创建kerberos数据库,

4-1首先创建前看到/var/kerberos/krb5kdc/仅用两个文件

4-2创建数据库,使用命令kdb5_util create -r your_realm -s,注意,在Loading random data这里的时候可能会要比较久的时间

 

[root@centos0xx ~]# kdb5_util create -r TEST.COM -s

Loading random data

Initializing database '/var/kerberos/krb5kdc/principal' for realm 'TEST.COM',

master key name 'K/M@TEST.COM'

You will be prompted for the database Master Password.

It is important that you NOT FORGET this password.

Enter KDC database master key:

Re-enter KDC database master key to verify:

[root@centos0xx ~]#

5、创建完毕后,在查看/var/kerberos/krb5kdc/下面发现已经多了几个principal相关的文件,其实这些就是kerberos的数据文件。而如果把这个文件删除就相当于把数据库删除需要重建,可以把这些文件mv走然后kadmin.local试试,应该是会报错的,然后再把这些文件mv回来。又可以了

6、创建管理员并输入密码(帐号admin/admin(一定要带xxx/admin) 密码一定要记住)

[root@centos0xx ~]# /usr/sbin/kadmin.local -q "addprinc admin/admin"

Authenticating as principal root/admin@TEST.COM with password.

WARNING: no policy specified for admin/admin@TEST.COM; defaulting to no policy

Enter password for principal "admin/admin@TEST.COM":

Re-enter password for principal "admin/admin@TEST.COM":

Principal "admin/admin@TEST.COM" created.

7、设置kadmin和k5bdkdc服务开机启动(一个kdc的服务一个kadmin管理服务)

8、验证通过admin登录

9、添加一个test帐号并且查看是否进入数据库(通过kadmin.local 然后listprincs查看)

以上已经安装成功,接下来将在cdh hadoop集群上开启kerberos管理、

参考http://web.mit.edu/kerberos/krb5-latest/doc/index.html

 

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值