用过hbase的朋友可能都有过这样的疑问,我写一个java client,好像提供了zookeeper quorum地址连上hbase了,那么是不是存在安全问题?的确是,如何解决?hbase中引入了kerberos认证。我准备用两篇博文介绍hbase + kerberos的相关内容,本篇主要介绍kerberos的配置。
  · 环境准备
  · kerberos简介
  · kerberos server配置
  · kerberos client配置
  环境准备
  这里我准备了三台server,各自安装上centos 6.5 64bit
  kb1: kerberos server
  kbhbase1: kerberos client, 后续也用于安装运行HBase
  kbjavatest1: kerberos client, 后续将在其上部署java程序访问kbhbase1上的hbase数据库
  kerberos简介
  kerberos简单来说是一套完全控制机制,它有一个中心服务器(KDC),KDC中有数据库,你可以往里添加各种“人”以及各种“服务”的“身份证”,当某个人要访问某个服务时,他拿着自己的“身份证”联系KDC并告诉KDC他想要访问的服务,KDC经过一系列验证步骤,终依据验证结果允许/拒绝这个人访问此服务。关于kerberos具体的工作流程,参见文章《Explain like I’m 5: Kerberos》
  kerberos server配置
  安装
  #yum install krb5-libs krb5-server krb5-workstation
  配置
  1)#vim /etc/krb5.conf
[logging]
default = FILE:/var/log/krb5libs.log
kdc = FILE:/var/log/krb5kdc.log
admin_server = FILE:/var/log/kadmind.log
[libdefaults]
default_realm = MH.COM
dns_lookup_realm = false
dns_lookup_kdc = false
ticket_lifetime = 24h
renew_lifetime = 7d
forwardable = true
[realms]
MH.COM = {
kdc = kb1.mh.com:88
admin_server = kb1.mh.com:749
}
[domain_realm]
.mh.com = MH.COM
mh.com = MH.COM
  2)#vim /var/kerberos/krb5kdc/kdc.conf
[kdcdefaults]
kdc_ports = 88
kdc_tcp_ports = 88
[realms]
MH.COM = {
#master_key_type = aes256-cts
acl_file = /var/kerberos/krb5kdc/kadm5.acl
dict_file = /usr/share/dict/words
admin_keytab = /var/kerberos/krb5kdc/kadm5.keytab
supported_enctypes = aes256-cts:normal aes128-cts:normal des3-hmac-sha1:normal arcfour-hmac:normal des-hmac-sha1:normal des-cbc-md5:normal des-cbc-crc:normal
}
  kerberos中的realm,即kerberos的域,类似于计算机网络中"domain"的概念。