登 录
注 册
< 大 数 据
Flink
Hadoop
Spark
Hive
HBase
Kafka
其他框架
Kerberos服务介绍与部署
Hadoop HA简介
HDFS手动故障转移
HDFS手动故障转移示例
HDFS自动故障转移
YARN自动故障转移
Hadoop白名单与扩容
HDFS存储优化-纠删码
HDFS冷热存储分离
HDFS慢磁盘监控
HDFS小文件归档
源码分析-NN启动(一)
源码分析-NN启动(二)
源码分析-NN启动(三)
热门推荐>>>
中台架构
中台建设与架构
HBase
HBased对接Hive
Linux
Nginx高可用
Python
数据导出工具
Flink
3分钟搭建Flink SQL测试环境
Kafka
Kafka对接Flume
深度学习
卷积神经网络
数据结构与算法
选择合适的算法
MySQL
数据备份恢复
计算机系统
信号量同步线程
Hive
Hive调优参数大全
其他框架
Azkaban Flow1.0与2.0
ClickHouse
表引擎-其他类型
技术成长
最好的职业建议
精选书单
技术成长书单—机器学习
技术资讯
数据在线:计算将成为公共服务
开发工具
IntelliJ IDEA 20年发展回顾(二)
系统工具
Mac命令行工具
虚拟化
内存虚拟化概述
云原生
云原生构建现代化应用
云服务
一文搞懂公有云、私有云...
Java
Spring Boot依赖注入与Runners
Go
Go函数与方法
SQL
SQL模板
安全常识
一文读懂SSO
当前位置:
首页
>>
Hadoop
>>
Kerberos服务介绍与部署
Kerberos服务介绍与部署
2020-06-30 23:27:00 星期二 阅读:3371
参考文档 https://cloud.tencent.com/developer/article/1381306 https://www.cnblogs.com/morvenhuang/p/4503478.html ####Kerberos验证原理 kerberos简单来说就是一套完全控制机制,它有一个中心服务器(KDC),KDC中有数据库,你可以往里添加各种“人”以及各种“服务”的“身份证”,当某个人要访问某个服务时,他拿着自己的“身份证”联系KDC并告诉KDC他想要访问的服务,KDC经过一系列验证步骤,最终依据验证结果允许/拒绝这个人访问此服务。 ####安装环境 如果服务器未安装Kerberos,则需要通过yum安装 `yum install krb5-libs krb5-server krb5-workstation` 主机规划如下: ``` 192.168.1.101 : Kerberos Server 即:KDC(Key Distribution Center,秘钥分发中心) 192.168.1.102:Kerberos Client ``` ### 一、配置Kerberos Server (KDC) ####1.配置krb5.conf文件 其中,DATASYSTEM.COM的名称可以自定义设置 ```bash # 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 = DATASYSTEM.COM dns_lookup_realm = false dns_lookup_kdc = false ticket_lifetime = 24h renew_lifetime = 7d forwardable = true [realms] DATASYSTEM.COM = { kdc = kerberos.datasystem.com:88 admin_server = kerberos.datasystem.com:749 } [domain_realm] .datasystem.com = DATASYSTEM.COM datasystem.com = DATASYSTEM.COM ``` ####2.配置kdc.conf文件 如果没有此文件,说明yum没有更新Kerberos,执行上面的yum安装命令即可 ``` # vim /var/kerberos/krb5kdc/kdc.conf [kdcdefaults] kdc_ports = 88 kdc_tcp_ports = 88 [realms] DATASYSTEM.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 } ``` ####3.配置ACL文件 这个文件是用来控制哪些人可以使用kadmin工具来管理kerberos数据库。其中前一个星号是通配符,表示像名为“abc/admin”或“xxx/admin”的人都可以使用此工具(远程或本地)管理kerberos数据库,后一个*跟权限有关,*号表示所有权限,还可以进行更细的控制。 ``` # vim /var/kerberos/krb5kdc/kadm5.acl */admin@DATASYSTEM.COM * ``` ####4.始化Kerberos数据库 `kdb5_util create -s` 会提示输入一个管理密码,这个密码以后会用来管理秘钥库。 ####5.创建一个超级用户 现在数据库是空的,想要使用kadmin添加一个人到数据库中,这是需要权限的,那么最开始的那一个人是怎么加到数据库中的?这就需要kadmin.local这个工具,这个工具只能在kerberos server上执行(类似于oracle中的sys用户无密码登录)。 这里把管理员叫“admin/admin”,你可以叫任何名字,但是因为此前我们在kadm5.acl中的配置,名字必须以/admin结尾。过程中会提示你输入两次密码,记住这个密码,当你在别的机器连接kadmin时,需要这个密码 `kadmin.local -q "addprinc admin/admin"` ``` Authenticating as principal root/admin@DATASYSTEM.COM with password. WARNING: no policy specified for admin/admin@DATASYSTEM.COM; defaulting to no policy Enter password for principal "admin/admin@DATASYSTEM.COM": Re-enter password for principal "admin/admin@DATASYSTEM.COM": Principal "admin/admin@DATASYSTEM.COM" created. ``` ####6.启动Kerberos服务 ``` # 开启服务 systemctl start krb5kdc.service systemctl start kadmin.service # 查看服务状态 systemctl status krb5kdc.service systemctl status kadmin.service # 停止服务 systemctl stop krb5kdc.service systemctl stop krb5kdc.service #开机自动启动 chkconfig krb5kdc on chkconfig kadmin on ``` ####7.hosts信息(重要) Kerberos客户端和服务器上均需要配置 说明:kerberos.datasystem.com这个之所以需要配置是因为上面的配置文件指定的。client01.datasystem.com的前缀client01是随意指定的,在实际场景中可根据业务场景指定。比如该客户端是用来给HBase做认证的,那么可以定义为hbase01等 ``` # vim /etc/hosts 192.168.1.101 kerberos.datasystem.com 192.168.1.102 client01.dayasystem.com ``` ###二、配置Kerberos Client 以下操作均在192.168.1.102台机器(客户端上执行),其他客户端操作类似 Kerberos对服务器跟客户端之间的时间有要求,所以一般需要安装ntp来作时间同步。 ``` yum install krb5-libs krb5-workstation # 注意与kerberos server上的yum命令对比。server的yum命令如下 # yum install krb5-libs krb5-server krb5-workstation ``` 安装完成后把server上的 /etc/krb5.conf文件拷贝过来覆盖一下即可。 ####管理员创建一个keytab `kadmin -p admin/admin@DATASYSTEM.COM` 提示输入管理密码 ``` Authenticating as principal admin/admin@DATASYSTEM.COM with password. Password for admin/admin@DATASYSTEM.COM: ``` 随后输入创建命令,添加一个libins的用户,其中client01是随便指定的,根据业务场景,但是要保证client01.dayasystem.com在hosts中有 `kadmin: addprinc -randkey libins/client01.dayasystem.com@DATASYSTEM.COM` `kadmin: xst -k libins.keytab libins/client01.dayasystem.com` 说明: 创建完后就会在kerberos服务器上创建一个用户libins/client01.dayasystem.com@DATASYSTEM.COM,其中名字中/之后的部分应该是固定写法,即主机名+kerberos realm。 xst命令会在当前目录下生成这个libins.keytab文件。拷贝libins.keytab文件到一个不易删除的目录下(一般是/etc下)。 注意:如果生成的.keytab文件属主,如果是root,需要结合集群的环境chown到对应的用户(比如linux的Hadoop用户如果是集群的超级管理者,则该文件需要chown给hadoop,否则可能导致认证的时候没有权限读取文件) ####测试用户是否可以通过验证 `kinit -kt /etc/libins.keytab libins/client01.dayasystem.com@DATASYSTEM.COM` 如果未返回任何信息,则说明验证成功,还可通过如下命令查看已有的key `klist` 正常情况下输出如下 Ticket cache: FILE:/tmp/krb5cc_0 Default principal: libins/client01.dayasystem.com@DATASYSTEM.COM Valid starting Expires Service principal 06/06/2020 20:36:42 06/07/2020 20:36:41 krbtgt/DATASYSTEM.COM@DATASYSTEM.COM