Ambari集成Kerberos


搭建ambari请参考我的上一篇博客: centos7安装Ambari 2.7.5 + HDP3.1.5

一、Kerberos搭建

环境:

  1. 首先时间一定要同步(上一篇博客中已同步)。
  2. 节点
    server:hadoop101
    client:hadoop102 hadoop103

搭建Kerberos Server

kdc服务器包含三个配置文件:

# 集群上所有节点都有这个文件而且内容同步
/etc/krb5.conf
# 主服务器上的kdc配置
/var/kerberos/krb5kdc/kdc.conf
# 能够不直接访问 KDC 控制台而从 Kerberos 数据库添加和删除主体,需要添加配置
/var/kerberos/krb5kdc/kadm5.acl

以下操作均在hadoop101:

  1. 使用 yum 安装Kerberos Server的套件
yum install -y krb5-libs krb5-server krb5-workstation
  1. 配置 /etc/krb5.conf
vim /etc/krb5.conf
# Configuration snippets may be placed in this directory as well
includedir /etc/krb5.conf.d/

[logging]
 default = FILE:/var/log/krb5libs.log
 kdc = FILE:/var/log/krb5kdc.log
 admin_server = FILE:/var/log/kadmind.log

[libdefaults]
 dns_lookup_kdc = false
 dns_lookup_realm = false
 ticket_lifetime = 24h
 renew_lifetime = 7d
 forwardable = true
 rdns = false
 pkinit_anchors = FILE:/etc/pki/tls/certs/ca-bundle.crt
 default_realm = KANG.COM
 default_ccache_name = KEYRING:persistent:%{uid}

[realms]
 KANG.COM = {
  kdc = hadoop101.kang.com
  admin_server = hadoop101.kang.com
 }

[domain_realm]
 .kang.com = KANG.COM
 kang.com = KANG.COM

需要修改的地方:
在这里插入图片描述

名词讲解:
realm 域:表示一个公司或者一个组织。逻辑上的授权认证范围
比如,某个认证账户是属于某个域下的,跨域账户不通用域和FQDN的配置很像,使用大写,本次演示使用KANG.COM 来标记域
其中:
logging 块配置日志相关
libdefaults块配置默认的设置,包括ticket的生存周期等
realms 是域的配置,可以配置多个realm,本次演示只配置一个 即是 KANG.COM
domain_realm 是 Kerberos内的域 和 主机名的域的一个对应关系
.kang.com 类似 *.kang.com 表示如hadoop101.kang.com 等均是KANG.COM 这个realm
kang.com 表示 kang.com 这个主机名也是 KANG.COM 这个realm的一部分

  1. 配置 /var/kerberos/krb5kdc/kdc.conf
vim /var/kerberos/krb5kdc/kdc.conf
[kdcdefaults]
 kdc_ports = 88
 kdc_tcp_ports = 88

[realms]
 KANG.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 camellia256-cts:normal camellia128-cts:normal des-hmac-sha1:normal des-cbc-md5:normal des-cbc-crc:normal
 }

这里只需要修改
在这里插入图片描述
名词解释
acl_file : Kerberos acl 的一些配置对应的文件
kerberos : admin账户的 keytab 本地路径
keytab : 登录凭证,有了这个相当于直接有了 ticket , 可以免密直接登录某个账户,所以这个文件很重要

  1. 配置 /var/kerberos/krb5kdc/kadm5.acl
vim /var/kerberos/krb5kdc/kadm5.acl
*/admin@KANG.COM        *

其中 */admin 是Kerberos中的账户形式
最后的 * 表示 符合 */admin的账户拥有所有权限
这一步也就是配置了admin的规则 如 admin/ admin@KANG.COM 就拥有KANG.COM 域内的全部权限

  1. 初始化Kerberos的数据库
kdb5_util create -s -r KANG.COM

然后命令要求设置数据库master的密码,要求输入两次,输入 krb5kdc 即可

  1. 创建 KANG.COM 域内的管理员
#执行:kadmin.local 进入 kerberos 的 admin 命令行界面
[root@hadoop101 ~]# kadmin.local
Authenticating as principal root/admin@KANG.COM with password.
#输入如下内容,添加一个用户
kadmin.local:  addprinc admin/admin@KANG.COM
#查看所有用户
kadmin.local:  listprincs
K/M@KANG.COM
admin/admin@KANG.COM
kadmin/admin@KANG.COM
kadmin/changepw@KANG.COM
kadmin/hadoop101.kang.com@KANG.COM
kiprop/hadoop101.kang.com@KANG.COM
krbtgt/KANG.COM@KANG.COM
kadmin.local:
#删掉用户用delprinc
  1. 重启Kerberos server的组件并设置开机自启
service krb5kdc restart
service kadmin restart
chkconfig krb5kdc on
chkconfig kadmin on
  1. 测试登录超级用户admin/admin@KANG.COM
[root@hadoop101 ~]# klist
klist: Credentials cache keyring 'persistent:0:0' not found
#登录用户admin/admin@KANG.COM
[root@hadoop101 ~]# kinit admin/admin@KANG.COM
Password for admin/admin@KANG.COM:
[root@hadoop101 ~]# klist
Ticket cache: KEYRING:persistent:0:0
Default principal: `admin/admin@KANG.COM`

Valid starting       Expires              Service principal
11/11/2021 22:50:18  11/12/2021 22:50:18  krbtgt/KANG.COM@KANG.COM

搭建Kerberos 客户端

  1. 在所有节点均执行:
yum -y install krb5-libs krb5-workstation
  1. 从server机器将 /etc/krb5.conf 复制到各个客户端同样的位置
[root@hadoop101 ~]# scp /etc/krb5.conf hadoop102:/etc/
krb5.conf                                                                                   100%  647   745.0KB/s   00:00
[root@hadoop101 ~]# scp /etc/krb5.conf hadoop103:/etc/
krb5.conf                                                                                   100%  647   887.3KB/s   00:00
  1. 测试登录admin
[root@hadoop102 ~]# kinit admin/admin@KANG.COM
Password for admin/admin@KANG.COM:
[root@hadoop102 ~]# klist
Ticket cache: KEYRING:persistent:0:0
Default principal: admin/admin@KANG.COM

Valid starting       Expires              Service principal
11/11/2021 22:56:45  11/12/2021 22:56:45  krbtgt/KANG.COM@KANG.COM
  1. 此时,客户端配置完成

二、ambari集成Kerberos

确保已经安装好了KDC并且在所有集群都安装了JCE(但是有的文档说jdk1.6以上不用安装,所以我没有安装)。

  1. 打开并登陆ambari web。并在浏览器主页面选择Kerberos。

  2. 点击 “Enable Kerberos”进入安装向导。

  3. 选择正在使用的KDC类型,并确认已满足先决条件。

  4. 提供有关KDC和管理员帐户的信息

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
这里会有一个报错:Error message: Error occured during stack advisor command invocation: Cannot create /var/run/ambari-server/stack-recommendations
在说没有权限创建/var/run/ambari-server/stack-recommendations,解决办法是将目录/var/run/ambari-server/及子目录权限都赋予777权限

chmod 777 -R /var/run/ambari-server/

在这里插入图片描述
先别着急进行下一步,展开Advanced krb5-conf部分并取消选中“Manage Kerberos client krb5.conf”选项
选中否则会在下一步报错:Error message: Failed to find a KDC for the specified realm - Couldn't open log file /var/log/kadmin
所以选中(即是手动管理rb5.conf)时,在/etc/krb5.conf中添加如下:

手动管理krb5.conf时,建议确保DNS不用于查找KDC和REALM条目。 依赖DNS可能会导致负面性能和功能影响。 要确保不使用DNS,请确保在配置的libdefaults部分中设置以下条目。

[libdefaults]
dns_lookup_kdc = false
dns_lookup_realm = false

在这里插入图片描述

  1. 进行安装
    在这里插入图片描述

  2. 自定义Hadoop使用的Kerberos标识,然后继续对集群进行kerberize。
    在这里插入图片描述

  3. 点击下一步,可以选择下载ambari自动创建的principals和keytabs。
    在这里插入图片描述

  4. 停止服务
    在这里插入图片描述

  5. 启用 Kerberos 向导
    在这里插入图片描述
    此时会报错,百度之后查询是因为权限的问题,所有在主节点hadoop101上执行如下

[root@hadoop101 ~]# echo "ambari   ALL=(root) NOPASSWD:ALL" >> /etc/sudoers

重跑此步骤(点retry),即可可通过
在这里插入图片描述

  1. 启动和测试服务
    在这里插入图片描述
    等待一段时间后(有报错,是因为内存不够用):
    在这里插入图片描述

三、测试:

未登录用户时:

#销毁票据
[root@hadoop101 ~]# kdestroy
#登录hbase shell
[root@hadoop101 ~]# hbase shell
#查看登录用户
hbase(main):002:0> whoami
root (auth:SIMPLE)
    groups: root
#查看表
hbase(main):003:0> list
TABLE
`ERROR`: Can not send request because relogin is in progress.
For usage try 'help "list"'
Took 8.2048 seconds

#创建表
hbase(main):001:0> create 'tt','tinfo','twork'
#报错,因为没有认证
`ERROR`: No valid credentials provided (Mechanism level: Failed to find any Kerberos tgt)

For usage try 'help "create"'

Took 8.6217 seconds

票据认证之后:

#验证票据
[root@hadoop101 ~]# kinit -kt /etc/security/keytabs/hbase.headless.keytab hbase-kk@KANG.COM
#登录hbase shell
[root@hadoop101 ~]# hbase shell
#查看所有表
hbase(main):001:0> list
TABLE
Student
teacher
test-table
3 row(s)
Took 0.5976 seconds
=> ["Student", "teacher", "test-table"]
#创建表
hbase(main):002:0> create 'test','tinfo','twork'
Created table test
Took 1.3352 seconds
=> Hbase::Table - test
#添加表内容信息
hbase(main):004:0> put 'test','0001','tinfo:name','kxq'
Took 0.1613 seconds
hbase(main):006:0> put  'test','0001','twork:add','beijing'
Took 0.0158 seconds
#查看表内容
hbase(main):008:0> scan 'test'
ROW                                                  COLUMN+CELL
 0001                                                column=tinfo:name, timestamp=1636703545576, value=kxq
 0001                                                column=twork:add, timestamp=1636703585530, value=beijing
1 row(s)
Took 0.0615 seconds
#查看表内容
hbase(main):009:0> get 'test','0001'
COLUMN                                               CELL
 tinfo:name                                          timestamp=1636703545576, value=kxq
 twork:add                                           timestamp=1636703585530, value=beijing
1 row(s)
Took 0.0356 seconds
  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值