用过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.logkdc = FILE:/var/log/krb5kdc.logadmin_server = FILE:/var/log/kadmind.log[libdefaults]default_realm = MH.COMdns_lookup_realm = falsedns_lookup_kdc = falseticket_lifetime = 24hrenew_lifetime = 7dforwardable = true [realms]MH.COM = {kdc = kb1.mh.com:88admin_server = kb1.mh.com:749} [domain_realm].mh.com = MH.COMmh.com = MH.COM

View Code

2)#vim /var/kerberos/krb5kdc/kdc.conf

[kdcdefaults]kdc_ports = 88kdc_tcp_ports = 88[realms]MH.COM = {#master_key_type = aes256-ctsacl_file = /var/kerberos/krb5kdc/kadm5.acldict_file = /usr/share/dict/wordsadmin_keytab = /var/kerberos/krb5kdc/kadm5.keytabsupported_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}

View Code

kerberos中的realm,即kerberos的域,类似于计算机网络中"domain"的概念。

3)#vim /var/kerberos/krb5kdc/kadm5.acl

这个文件是用来控制哪些人可以使用kadmin工具来管理kerberos数据库,我这里就配了一行:

*/admin@MH.COM *

其中前一个*号是通配符,表示像名为“abc/admin”或“xxx/admin”的人都可以使用此工具(远程或本地)管理kerberos数据库,后一个*跟权限有关,*表示所有权限,还可以进行更细的控制,参见ACL。

4)#kdb5_util create -s
初始化一个kerberos数据库。

5)现在数据库是空的,想要使用kadmin添加一个人到数据库中,这是需要权限的,那么最开始的那一个人是怎么加到数据库中的?这就需要kadmin.local这个工具,这个工具只能在kerberos server上执行(类似于oracle中的sys用户无密码登录)。
#kadmin.local -q "addprinc admin/admin"
我这里把管理员叫“admin/admin”,你可以叫任何名字,但是因为此前我们在kadm5.acl中的配置,名字必须以/admin结尾。过程中会提示你输入两次密码,记住这个密码,当你在别的机器连接kadmin时,需要这个密码。

启动

  • #service krb5kdc start
  • #service kadmin start
  • #chkconfig krb5kdc on
  • #chkconfig kadmin on

验证

  • #kinit admin/admin

如果kinit不带参数,则会默认以当前操作系统用户名,比如root,作为名称。因为root在kerberos的数据库中并没有,所以会提示失败

  • #klist

正常应该显示:

Ticket cache: FILE:/tmp/krb5cc_0

Default principal: admin/admin@MH.COM

Valid starting     Expires            Service principal

04/10/15 13:03:36  04/11/15 13:03:36  krbtgt/MH.COM@MH.COM

renew until 04/10/15 13:03:36

以下这两个应该不是必须的,与兼容性有关,ktadd命令会把“身份证”写入到文件(.keytab后缀),可以指定keytab文件,如不指定,默认写入/etc/krb5.keytab

  • kadmin.local: ktadd kadmin/admin
  • kadmin.local: ktadd kadmin/changepw

其它一些命令

  • #kdestroy,退出当前kerberos用户,即你最后使用kinit过的那个用户
  • kadmin.local>listprincs 列出所有存在数据库中的人或服务
  • kadmin.local>delprinc zookeeper/kbhbase1.mh.com@MH.COM 删除人或服务
  • kadmin.local>addprinc admin/admin 添加人或服务
  • kadmin.local>q 退出kadmin
  • kadmin:  addprinc -randkey root/kbhbase1.mh@MH.COM
  • kadmin:  xst -k root.keytab root/kbhbase1.mh.com
  • # klist -kt root.keytab 列出这个keytab中保存的所有人或服务

一般在实例使用中通过kinit的方式较少,因为每次都要输入密码,所以更经常使用的是keytab文件,相当于为某个人或服务生成一个密码,并放在文件中,程序中则指向这个keytab,不用每次都输入密码。

kerberos client配置

现在,我们到kbhbase1这台机器上,即我们的kerberos 客户端上。kerberos对服务器跟客户端之间的时间有要求,所以一般需要安装ntp来作时间同步,我这里直接手工同步了一下,就不再介绍ntp了。 #yum install krb5-libs krb5-workstation 注意与kerberos server上的yum命令对比。安装完成后把server上的krb5.conf文件拷贝过来覆盖一下即可。注意:

  • kb1和kbhbase1的/etc/hosts文件都要把各自以及对方添加上去
  • 关闭这两个server上的防火墙
    • #service iptables stop
    • #chkconfig iptables off

与在server上类似,使用kinit和klist查看一下。也可以尝试执行kadmin,按提示使用admin/admin并输入密码(你之前创建管理员时输入的密码),正常应该能够连接上服务器,并对数据库进行操作(比如添加或删除人、服务)。


送书了,送书了,关注公众号“程序员杂书馆”,送出O'Reilly《Spark快速大数据分析》纸质书(亦有一批PDF分享)! —— 2018年12月

转载于:https://www.cnblogs.com/morvenhuang/p/4503478.html

HBase + Kerberos 配置示例(一)相关推荐

  1. hbase 默认目录_HBase 配置示例

    基本分布式HBase安装 在下文内容中是一个分布式10节点的群集的基本配置示例:其中,节点被命名为example0,example1...一直到example9,在这个例子中:HBase Master ...

  2. Linux环境HBase安装配置及使用

    Linux环境HBase安装配置及使用 1. 认识HBase (1) HBase介绍 HBase = Hadoop database,Hadoop数据库 开源数据库 官网:hbase.apache.o ...

  3. linux的krb5文件放哪里,7.5.2 krb5.conf配置文件配置示例

    7.5.2  krb5.conf配置文件配置示例 在配置ads模式Samba服务器时,/etc/krb5.conf配置文件是必须配置的.它作为Kerberos身份验证模块,可以使Samba服务器对Wi ...

  4. Cisco Easy ***综合配置示例

    以下内容摘自正在全面热销的最新网络设备图书"豪华四件套"之一<Cisco路由器配置与管理完全手册>(第二版)(其余三本分别是:<Cisco交换机配置与管理完全手册 ...

  5. LVS DR模型配置示例

    要让路由知道哪台主机是Director,进行选择: 1.VIP:MAC(Director VIP) -- MAC绑定,但未必可行,例如路由是运营商的. 2.arptables 3.kernel par ...

  6. Logstash 参考指南(使用Filebeat Modules配置示例)

    使用Filebeat Modules配置示例 本节中的示例展示了如何构建用于解析Filebeat模块收集的数据的Logstash管道: Apache 2日志 本例中的Logstash管道配置展示了如何 ...

  7. Spring boot自动配置示例

    自动配置示例 HttpEncodingAutoConfiguration Http编码自动配置 以该类为例,查看自动配置过程 EnableAutoConfiguration HttpEncodingA ...

  8. hbase安装配置(整合到hadoop)

    如果想详细了解hbase的安装:http://abloz.com/hbase/book.html 和官网http://hbase.apache.org/ 1.  快速单击安装 在单机安装Hbase的方 ...

  9. Tomcat server.xml配置示例

    转载自    Tomcat server.xml配置示例 几乎所有容器类型的应用都会包含一个名为 server.xml 的文件结构.基本上,其中的每个元数据或者配置都是容器完成初始化所需要的.正是由于 ...

  10. 交华为换机access配置_华为交换机VLAN内Proxy ARP配置示例

    华为交换机VLAN内Proxy ARP配置示例 1.组网需求 图1 VLAN内Proxy ARP组网示例图 如上图1所示,Switch的接口GE1/0/2和GE1/0/1属于同一个sub-VLAN2. ...

最新文章

  1. w3wp进程发生死锁ISAPI aspnet
  2. matlab遍历cell和array的for循环写法
  3. 程序员入职后千万不要沾沾自喜,不注意这一点,将来很可能后悔!
  4. Java案例:Swing版记事本
  5. 深入理解Spring Redis的使用 (九)、通过Redis 实现 分布式锁 的 BUG,以及和数据库加锁的性能测试...
  6. python库怎么绘画_python中的turtle库(图形绘画库)
  7. Android ListView
  8. linux c 库依赖
  9. java导出excel 图片_将图片导出到Excel中(poi导出)
  10. 8.1 - mysql 基本知识
  11. 【机器学习-白板推导系列】学习笔记---支持向量机和主成分分析法
  12. 【AI产品】认猫、认花、认车、认吃,请认准识别全能王
  13. 前台、后台、前端、后端的区分
  14. 又一年的五一劳动节!
  15. 使用KMS批量激活操作系统
  16. python3-输入华氏度转化为摄氏度
  17. Windows安装lua,并使用SciTE进行编辑
  18. 开发大百科之 RobotStudio 机器人离线编程工具
  19. matlab图像处理 支持向量机,Matlab图像处理滑动窗口SVM
  20. 【中国银联】数据挖掘笔试+三面面经

热门文章

  1. 文件自动备份和同步bypy和syncthing
  2. Python获取路径中的文件名
  3. SLAM会议笔记(四)Lego-LOAM
  4. mysql模式匹配详解_老生常谈MYSQL模式匹配 REGEXP和like的用法
  5. Android 解决EditText和ScrollView的滚动冲突
  6. Android BroadcastReceiver(一)
  7. ubuntu下开机自动运行脚本以及定时任务的处理
  8. $bzoj1046-HAOI2007$ 上升子序列 $dp$ 贪心
  9. 从properties配置文件中获取到的中文乱码
  10. (一)apache atlas源代码编译与打包