cdh+dolphinscheduler开启kerberos

news2024/11/18 7:27:55

搭建环境

多台linux主机搭建集群+CDH 6.3.2 (Parcel)版本+dolphinscheduler 1.3.2版本

本流程在CDH已搭建完成并可正常使用后,开启kerberos功能

dolphinscheduler用于大数据任务管理与执行,是很不错的任务调度平台,是否提前部署均可

开启kerberos目的:用于用户权限管理与安全认证,在开启kerberos之前的安全防护主要采取开启防火墙的方式,现在进行替换

本流程开启kerberos后可正常运行的服务包括:

CDH集群正常启用

linux用户创建kerberos权限

hive、hbase、hdfs等服务在主机可正常执行

dolphinscheduler安装正常,任务正常执行,定时任务正常执行

dolphinscheduler的租户权限正常,可进行大数据服务运行和使用

部署kerberos

  1. 选择一台主机安装kerberos服务,执行用户为root

#server端lz1.cmp14722.app
sudo yum install krb5-server krb5-libs krb5-auth-dialog krb5-workstation -y
  1. 同步执行集群主机安装client

#client lz1.cmp14722.app02 - lz5.cmp14722.app02
for item in `cat /etc/hosts | grep lz |awk '{print $2}'`; do ssh $item "hostname; yum install krb5-devel krb5-workstation -y" ; done

如果没有设置ssh免密登录其他主机,需要手动输入每个主机登录密码,建议设置,后面也会用到,设置方法网上很多,暂略。(与一台台主机自己安装一样)

插播一句,如果ssh免密登录设置后还是不能登录,可检查所有登录主机用户目录下的.ssh文件夹权限(700)以及文件夹内authorized_keys(600)文件权限

  1. 配置文件

配置文件修改2个

  • /etc/krb5.conf文件中default_realm对应的值随便起一个即可,realms部分选择服务主机,这里我选择安装主机对应hostname

sudo vi /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_realm = false
ticket_lifetime = 24h
renew_lifetime = 7d
forwardable = true
rdns = false
pkinit_anchors = FILE:/etc/pki/tls/certs/ca-bundle.crt
default_realm = BIGDATA.COM
dns_lookup_kdc = false
#default_ccache_name = KEYRING:persistent:%{uid}
[realms]
BIGDATA.COM = {
kdc = lz1.cmp14722.app
admin_server = lz1.cmp14722.app
}
[domain_realm]
.cmp14722.app = BIGDATA.COM
cmp14722.app = BIGDATA.COM
  • /var/kerberos/krb5kdc/kdc.conf文件我这里保持不变

sudo vi /var/kerberos/krb5kdc/kdc.conf
[kdcdefaults]
kdc_ports = 88
kdc_tcp_ports = 88
[realms]
EXAMPLE.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
}
  • krb5.conf分发到其他主机客户端

for item in `cat /etc/hosts | grep lz | grep -v 1 |awk '{print $2}'`; do scp /etc/krb5.conf $item:/etc/ ; done
  1. 启动kerberos

  • 创建kerberos数据库

sudo kdb5_util create -r BIGDATA.COM -s
#输入密码
#完成
  • 启动kerberos

service krb5kdc start
service kadmin start
#查看服务状态
service krb5kdc status
service kadmin status
  1. 用户认证流程

  • 创建kerberos认证用户

#进入kerberos服务
kadmin.local
#查看已有认证用户
listprincs
#新增root用户认证
addprinc root/admin@BIGDATA.COM
#输入密码
#确认密码
#完成
#创建root用户的keytab文件认证
ktadd -k /opt/keytab/root.keytab -norandkey root/admin@BIGDATA.COM
#创建集群认证用户cloudera-scm,用于后面cdh开启kerberos使用
addprinc cloudera-scm/admin@BIGDATA.COM
#查看认证用户
listprincs
#退出
quit
  • root用户认证

#keytab认证
kinit -kt /opt/keytab/root.keytab root/admin@BIGDATA.COM
#查看当前生效token
klist
Ticket cache: FILE:/tmp/krb5cc_0
Default principal: root/ admin@BIGDATA.COM
Valid starting Expires Service principal
01/30/2023 11:13:08 01/31/2023 11:13:08 krbtgt/BIGDATA.COM@BIGDATA.COM

分发root的keytab到其他主机,实现root用户主机间的网络认证

for item in `cat /etc/hosts | grep lz | grep -v 1 |awk '{print $2}'`; do ssh $item "mkdir /opt/keytab"; scp /opt/keytab/root.keytab $item:/opt/keytab/ ; done

cdh启用kerberos

  1. 进入CM界面,打开管理-》安全

  1. 点击启用kerberos

  1. 全部勾选是

  1. 填写配置信息,server与上面krb5.conf中配置内容一致

下一步,这里可以不勾选

  1. 填写上面创建的账号与密码 cloudera-scm/admin@BIGDATA.COM

  1. 后面直接点继续,完成后,进行初始化,直至最终完成开启

  1. 重启集群,查看集群服务状态

  1. 主机上验证集群服务

通过root用户执行hive、hbase、hdfs命令

#hive命令
hive
>>show databases;
>>create database bigdata;
#hbase命令
hbase shell
>>list
#hdfs命令
hdfs dfs -ls /

如遇到某些命令没有权限或者无法通过TOKEN认证等问题,可以在kerberos服务主机上,创建对应的服务用户,进行keytab认证(参见上面用户认证流程),通过对应的服务认证,完成操作命令。认证不需要切换用户,如在root用户下可执行命令kinit -kt /opt/keytab/hbase.keytab hbase/admin@BIGDATA.COM,进行hbase的用户认证。

hbase服务也可进行用户权限授权,需要通过hbase用户的kerberos认证,作为管理员进行操作

#进入hbase
hbase shell
#查看现有用户权限
>>user_permission
#对root用户赋权,R写、W读、E执行、C创建、A管理员
>>grant 'root', 'RWECA'

dolphinscheduler启用kerberos

  1. 配置文件

在进行dolphinscheduler安装时,主要在install_config.conf的配置,参见官网的配置流程即可,如果已经安装完成,可以修改common.properties的配置文件,这里主要说kerberos的配置部分,其他部分这里不赘述

在dolphinscheduler所在master主机上进行配置文件修改即可

vi /opt/dolphinscheduler/conf/common.properties
# resource.storage.type=HDFS
resource.storage.type=HDFS
# whether kerberos starts
hadoop.security.authentication.startup.state= true
# java.security.krb5.conf.path=/opt/dolphinscheduler/conf/krb5.conf
java.security.krb5.conf.path=/etc/krb5.conf
# login user from keytab username
login.user.keytab.username= hdfs/admin@BIGDATA.COM
# loginUserFromKeytab path
login.user.keytab.path= /opt/keytab/hdfs.keytab

这里主要涉及keytab认证选择的用户,用户需要对集群有操作权限,这里选择hdfs用户,确保已创建kdfs用户对应keytab;资源存储选择的HDFS方式(这里其他配置参考官网)

  1. 重启dolphinscheduler系统

sh stop-all.sh
sh start-all.sh
  1. admin登录dolphinscheduler验证

可正常创建租户等其他操作

  1. 用租户bidata执行大数据任务

由于需要用linux的bidata用户执行任务,因此需要创建bidata用户的kerberos认证,方法同上,因为kerberos认证有有效期,保证任务和定时任务不失败,需要通过crontab创建定时认证

#创建定时任务
crontab -e
58 23 * * * kinit -kt /opt/keytab/bidata.keytab bidata/admin@BIGDATA.COM

定时任务在所有worker主机上均需要设置,因为dolphinscheduler的任务执行默认是随机分配的

遇到的问题

集群重启后hbase服务异常

hbase服务无法完成init过程,我通过删除zk中的hbase,完成了启动

#进入zk,/bin/zookeeper-client或zk目录下执行sh zkCli.sh
zookeeper-client
[zk: localhost:2181(CONNECTED) 3] ls /
[dolphinscheduler, hive_zookeeper_namespace_hive, zookeeper, hbase]
[zk: localhost:2181(CONNECTED) 3] deleteall /hbase
#或逐个删除/hbase下的内容

重启后成功

用户无法访问集群服务

Caused by: java.io.IOException: org.apache.hadoop.security.AccessControlException: Client cannot authenticate via:[TOKEN, KERBEROS]

上面的错误是kerberos认证问题,当前用户没有进行kerberos认证或者本身对服务没有权限,需要具体服务具体授权,针对具体服务切换kerberos认证用户

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/185909.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

数据结构与算法:二叉树的学习

1.了解树形结构 1.概念 树是一种非线性的数据结构,它是由n(n>0)个有限结点组成一个具有层次关系的集合。把它叫做树是因为它看起来像一棵倒挂的树,也就是说它是根朝上,而叶朝下的。它具有以下的特点: …

《Unity Shader 入门精要》 第7章 基础纹理

第7章 基础纹理 纹理最初的目的就是使用一张图片来控制模型的外观。使用纹理映射技术(texture mapping),我们可以把一张图黏在模型表面,逐纹素(texel)(纹素的名字是为了和像素进行区分)地控制模型的颜色。…

爱了爱了,这是什么神仙级Apache Dubbo实战资料,清晰!齐全!已跪!

都2026年了 还没有用过Dubbo? Dubbo是国内最出名的分布式服务框架,也是 Java 程序员必备的必会的框架之一。Dubbo 更是中高级面试过程中经常会问的技术,面试的时候是不是经常不能让面试官满意?无论你是否用过,你都必须…

Postman(2): postman发送带参数的GET请求

发送带参数的GET请求示例:微信公众号获取access_token接口,业务操作步骤1、打开微信公众平台,微信扫码登录:https://mp.weixin.qq.com/debug/cgi-bin/sandbox?tsandbox/login2、打开微信开放文档,找到获取access_toek…

运放电路中各种电阻的计算-运算放大器

运放电路中各种电阻的计算 在学习运算放大器电路的时候,经常需要计算电路的: 输入阻抗Ri, 输出阻抗Ro, 同相端对地等效电阻RP, 反相端对地等效电阻RN, 这些参数很重要,在学习运放相关电路的时候经常要用到&#…

mysql8+mybatis-plus 查询json格式数据

sql 测试json表CREATE TABLE testjson (id int NOT NULL AUTO_INCREMENT,json_obj json DEFAULT NULL,json_arr json DEFAULT NULL,json_str varchar(100) DEFAULT NULL,PRIMARY KEY (id) ) ENGINEInnoDB AUTO_INCREMENT2 DEFAULT CHARSETutf8mb4 COLLATEutf8mb4_0900_ai_ci;IN…

API 网关策略二三事

作者暴渊,API7.ai 技术工程师,Apache APISIX Committer。 近些年随着云原生和微服务架构的日趋发展,API 网关以流量入口的角色在技术架构中扮演着越来越重要的作用。API 网关主要负责接收所有请求的流量并进行处理转发至上游服务,…

【数据结构和算法】认识队列,并实现循环队列

上接前文,我们学习了栈的相关知识内容,接下来,来认识一个与栈类似的,另一种特殊的线性表,队列,本文目的是了解并认识队列这一概念,并实现循环队列 目录 一、认识队列 1.队列的概念 2.队列的实…

入门力扣自学笔记232 C++ (题目编号:1669)

1669. 合并两个链表 题目: 给你两个链表 list1 和 list2 ,它们包含的元素分别为 n 个和 m 个。 请你将 list1 中下标从 a 到 b 的全部节点都删除,并将list2 接在被删除节点的位置。 下图中蓝色边和节点展示了操作后的结果: 请…

Docker-harbor私有仓库部署与管理

目录 前言 一、Harbor概述 二、Harbor的特性 三、Harbor的构成 四、Harbor构建Docker私有仓库 环境配置 部署Harbor服务 物理机访问server IP 添加项目并填写项目名称 通过127.0.0.1来登陆和推送镜像 其他客户端上传镜像到Harbor 维护管理Harbor 创建Harbor用户 …

JavaWeb_JavaScript

一、简介 JavaScript 是一门跨平台、面向对象的脚本语言,而Java语言也是跨平台的、面向对象的语言,只不过Java是编译语言,是需要编译成字节码文件才能运行的;JavaScript是脚本语言,不需要编译,由浏览器直接…

GPT-3是精神病患者吗?从心理学角度评估大型语言模型

原文链接:https://www.techbeat.net/article-info?id4494 作者:seven_ 20世纪60年代,麻省理工学院人工智能实验室的Joseph Weizenbaum编写了第一个自然语言处理(NLP)聊天机器人ELIZA[1],ELIZA通过使用模式…

linux Redis 集群搭建

在单例模式下继续执行,新增文件夹将之前解压后的文件复制到新增的文件夹中修改配置文件,并放入bin中bind 10.88.99.251(ip设置)protected-mode yes(默认yes,开启保护模式,限制为本地访问&#x…

ASEMI整流桥GBU808在选型的过程中需要注意几点

编辑-Z 型号:GBU808 最大重复峰值反向电压(VRRM):800V 最大RMS电桥输入电压(VRMS):560V 最大直流阻断电压(VDC):800V 最大平均正向整流输出电流&#xf…

为2023年做好 IT 安全防御准备

随着网络安全威胁形势的不断演变,安全运营中心 (SOC) 团队在新年伊始花时间审查他们的战略和关键保护措施。 SOC 团队明白,有效的安全性永远不会是一劳永逸的项目。现有的工具和服务需要不断监控和更新,以确保它们能够抵御当前和新出现的威…

测试人员提高业务掌握度的方案

测试人员除了掌握测试相关技术,比如测试流程、测试用例编写思路、自动化脚本的编写、维护之外,还需要对自己所测试的具体业务进行学习和掌握。 只有这样,才能去涉及灰盒、白盒测试,在测试执行过程中,提高自己分析、定位…

17《Protein Actions Principles and Modeling》-《蛋白质作用原理和建模》中文分享

​结合亲和力具有自由能的分子基础理论:在本章中,我们使用K来衡量结合亲和力。我们可以通过结合曲线(binding curves,)来像这样定义一个结合作用力。这样的曲线能给出配体结合的数量与溶液中配体数量的关系。而结合亲和力K也存在关于分子结构以及能量基础…

zabbix6.0配置邮件告警

1、 配置发送邮件服务器(管理媒介Email) 2、 创建用户用来接收邮件告警(管理用户创建用户) 用户 报警媒介 权限 3、 设置触发器报警后的动作(配置动作触发器动作创建动作) 邮件报警是基…

【C++初阶】六、STL---string模拟实现

目录 一、模拟实现接口总览 二、string模拟实现 2.1 构造函数 2.2 析构函数 2.3 拷贝构造函数 2.3.1 传统写法 2.3.2 现代写法 2.4 赋值运算符重载 2.4.1 传统写法 2.4.2 现代写法 2.5 iterator 2.5.1 begin 2.6 Capacity 2.6.1 size 2.6.2 capacity 2.6.2 emp…

Maven的下载安装配置IDEA详细过程

1. 去官网下载好并且放在同一文件夹下面 下载maven安装包,解压即可使用 (下载路径)http://maven.apache.org/download.cgi 2. maven配置环境变量 MAVEN_HOME D:\IT\Java\apache-maven-3.8.4:这个写你自己放的目录下 进Path新增 %…