企业级数据安全-CDH集群-dolphinscheduler海豚调度一站式数据安全技术实战2025

news/2024/11/30 8:21:54/文章来源:https://www.cnblogs.com/guodong1789/p/18577977

 

   2024-11 月   测试环境   上  kerberos  认证

 

1.1  修改 拷贝机器的IP地址, 改成和测试环境 5台机器一样的 IP映射,vim /etc/hosts   改成如下:

    

127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6

10.100.152.01        test-bigdata-hadoop-master-01
10.100.152.02        test-bigdata-hadoop-datanode-01
10.100.152.03        test-bigdata-hadoop-datanode-02
10.100.152.04        test-bigdata-clickhouse-01
10.100.152.05        test-bigdata-clickhouse-02
 

 

 

1.2:  检查 CDH 各台上的  systemctl start cloudera-scm-server    和   systemctl start cloudera-scm-agent  服务是否正常, 检查 mysql 服务是否正常 。

 

1.3: 访问CDH的web 登录界面   10.100.151.01:7180/cmf/login ,  去验证 一下   CDH  服务是否 正常  可访问

 

 

如果能实现上述图片,说明克隆的5台测试环境集群没有问题。

 

1.4:  拷贝过来的集群发现  yarn   resourcemanager 无法启动,需要删点 resourcemanager 节点,重新新加该节点。

 

1.5:  namenode 其中一个namenode 节点启动不了,要删除  namenode  journalnode  Failovercontroler 这三个节点下掉,重新再加回去,依然启动不了该 namenode ,此时 需要去备份该节点的 namenode 数据目录,把另外一个 namenode 节点的数据目录,发送到该节点,同时注意一下数据目录的访问权限。

 

1.6  : 检查集群各组件运行情况:

 

         安装  yarn  mapreduce 包,

 

       

 

 

找到对应的目录,修改访问权限

 

 

1.7:  检查 集群 的  hdfs   hive   hue  访问是否正常 。并安装sentry组件。

 

 

出现上图,说明拷贝过来的测试环境已经恢复到了 测试环境 那  5台服务器的执行环境,接下来,我们就可以搞一下 sentry 安装。 

 

 

 

1.8:  拷贝环境中 , 安装 sentry ,  调整  hdfs \ hive \ hue 的 sentry 配置,重启之后,发现拷贝的测试环境上 , 新的 hue  上没有 security 选项,检查一下测试环境拷贝过来的用户是否都有

 

 

 

 

1.9: 安装flink  ,  建议将生产环境的flink 安装包直接拷贝到 这新的5台机器上,按照类似 CDH  parcel方式, 安装 flink 程序。

 

2.0: 检查并启动大数据调度平台 dolphin scheduler  的各个服务。   clickhouse-01 hive 链接不通,需要拷贝 shiro 文件到 /opt/cloudera/parcels/CDH/lib/sentry/lib 下面,否则  拷贝不生效, dolphin scheduler  还是不生效。  需要修改 worker 分组管理的  worker地址 为 新地址。

 

 

 

以上环境基本上 恢复到了没有  kerberos 认证之前的状态  !!!

 

 

 

 

二: 正式开始  kerberos 认证 , 涉及到  CDH、 海豚调度 、BI(无法测试)

 

 

2.1 :  Kerberos概述


Kerberos是一种计算机网络授权协议,用来在非安全网络中,对个人通信以安全的手段进行身份认证。软件设计上采用客户端/服务器结构,并且能够进行相互认证,即客户端和服务器端均可对对方进行身份认证。可以用于防止窃听、防止重放攻击、保护数据完整性等场合,是一种应用对称密钥体制进行密钥管理的系统。

 

2.2 : Kerberos概念


Kerberos中有以下一些概念需要了解:
1)KDC:密钥分发中心,负责管理发放票据,记录授权。
2)Realm:Kerberos管理领域的标识。
3)principal:当每添加一个用户或服务的时候都需要向kdc添加一条principal,principl的形式为:主名称/实例名@领域名。
4)主名称:主名称可以是用户名或服务名,表示是用于提供各种网络服务(如hdfs,yarn,hive)的主体。
5)实例名:实例名简单理解为主机名。

 

 

2.3:   Kerberos认证原理

 

 

 

 

3:  kerberos 正式安装开始了  !!!

 

3.1 server节点安装kerberos相关软件

server节点只需安装一个节点即可,这里安装在  test-bigdata-hadoop-master-01  节点上

 

yum install -y krb5-server krb5-workstation krb5-libs

 

查看安装结果

rpm -qa | grep krb5






3.2 client节点安装

client节点可以安装多个   

yum install -y krb5-workstation krb5-libs


3.3 配置Kerberos

需要配置的文件有两个为kdc.conf和krb5.conf , kdc配置只是需要Server服务节点配置,即test-bigdata-hadoop-master-01  .
1) kdc配置

vim /var/kerberos/krb5kdc/kdc.conf

2) krb5文件配置


vim /etc/krb5.conf






3.4 生成Kerberos数据库

在server节点执行

 kdb5_util create -s
  • 1

创建完成后/var/kerberos/krb5kdc目录下会生成对应的文件

ls /var/kerberos/krb5kdc/

3.5 赋予Kerberos管理员所有权限


vim /var/kerberos/krb5kdc/kadm5.acl




3.6 启动Kerberos服务(server节点执行)


启动krb5kdc


systemctl start krb5kdc

  • 1

启动kadmin


 systemctl start kadmin


 

设置开机自启


systemctl enable krb5kdcsystemctl enable kadmin

  • 1
  • 2
  • 3
  • 4
  • 5

查看是否设置为开机自启


systemctl is-enabled krb5kdcsystemctl is-enabled kadmin

3.7 创建管理员主体/实例


kadmin.local -q "addprinc admin/admin"


3.8 kinit管理员验证


kinit admin/admin
klist




其他节点尝试  





3.9 Kerberos数据库操作


3.9.1 登录kerberos数据库

1)本地登录(无需认证)


kadmin.local

3.9.2 创建kerberos主体

kadmin.local -q "addprinc test/test-bigdata-hadoop-master-01"

  • 1

3.9.3 修改主体密码

kadmin.local -q "cpw test/test-bigdata-hadoop-master-01"

3.9.4 查看所有主体

kadmin.local -q "list_principals"


 

3.10 Kerberos主体认证


Kerberos提供了两种认证方式,一种是通过输入密码认证,另一种是通过keytab密钥文件认证,但两种方式不可同时使用


3.10.1 密码认证

kinit test/test-bigdata-hadoop-master-01
klist
 



3.10.2 keytabl密钥文件认证

1)生成主体admin/admin的keytab文件到指定目录/root/admin.keytab


kadmin.local -q "xst -k /root/test.keytab test/test-bigdata-hadoop-master-01@CHEN.COM"


2)使用keytab进行认证


kinit -kt /root/test.keytab test/test-bigdata-hadoop-master-01



查看keytab包含的主体名称

klist -ekt /root/test.keytab
  • 1

3)查看认证凭证

klist

3.11 销毁认证


kdestroy
klist
 

 
 

 

4 CDH安装Kerberos

4.1 CDH启用Kerberos安全认证

为CM创建管理员主体/实例

kadmin.local -q "addprinc cloudera-scm/admin"

 

 

4.2 CDH页面启动kerberos

 

4.3 环境确认

 

 

4.4 填写配置

Kerberos 加密类型:aes128-cts、des3-hmac-sha1、arcfour-hmac

 

4.5 等待导入kdc

 

 

4.6 等待重启集群

 

4.7 查看主体

 

kadmin.local -q "list_principals"

 

 

5 Kerberos安全环境实操


在启用Kerberos之后,系统与系统(flume-kafka)之间的通讯,以及用户与系统(user-hdfs)之间的通讯都需要先进行安全认证,认证通过之后方可进行通讯。故在启用Kerberos后,数仓中使用的脚本等,均需要加入一步安全认证的操作,才能正常工作。

 

5.1 用户访问服务认证


开启Kerberos安全认证之后,日常的访问服务(例如访问HDFS,消费Kafka topic等)都需要先进行安全认证


1)在Kerberos数据库中创建用户主体/实例

kadmin.local -q "addprinc hive/hive@GEELY.COM"

2)进行用户认证

kinit hive/hive@GEELY.COM

3)访问HDFS

hadoop fs -ls /

 

4)hive查询

5.2 windows webui浏览器认证


我们设置CDH支持kerberos后会出现下图所示的情况:
可以登录9870,但是不能查看目录及文件,这是由于我们本地环境没有通过认证。


接下来我们设置本地验证。
(1) 下载火狐
(2)设置浏览器
① 打开火狐浏览器,在地址栏输入:about:config,进入设置页面。

 

② 搜索“network.negotiate-auth.trusted-uris”,修改值为自己的服务器主机名

 

③ 搜索“network.auth.use-sspi”,双击将值变为false

 

3)安装kfw
① 安装提供的kfw-4.1-amd64.msi。
② 将集群的/etc/krb5.conf文件的内容复制到C:\ProgramData\MIT\Kerberos5\krb.ini中,删除和路径相关的配置。

 

 

krb5.ini 里面内容如下:

 

[libdefaults]
default_realm = GEELY.COM
dns_lookup_kdc = false
dns_lookup_realm = false
ticket_lifetime = 86400
renew_lifetime = 604800
forwardable = true
default_tgs_enctypes = aes128-cts des3-hmac-sha1 arcfour-hmac
default_tkt_enctypes = aes128-cts des3-hmac-sha1 arcfour-hmac
permitted_enctypes = aes128-cts des3-hmac-sha1 arcfour-hmac
udp_preference_limit = 1
kdc_timeout = 3000
[realms]
GEELY.COM = {
kdc = test-bigdata-hadoop-master-01
admin_server = test-bigdata-hadoop-master-01
}
[domain_realm]

 

 

火狐浏览器 可以正常访问 hdfs 了, 谷歌和微软浏览器都无法访问

 

 

三: kerberos 下 各功能 测试 

 

3.1 : 本地 kerberos 测试 hive jdbc     DataGrip  工具

为避免sentry 授权只针对个别的hive server2 jdbc生效,建议 把所有的 hive server2 节点 , 全部加到 hue里。

 

 

3.2:  kerberos  和 dolphin scheduler 整合

 

dolphin scheduler 整合 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-admin3@GEELY.COM
# loginUserFromKeytab path
login.user.keytab.path= /etc/security/keytabs/hdfs-admin3.keytab

 

 

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

#创建定时任务
crontab -e
58 23 * * * kinit -kt /etc/security/keytabs/root.keytab   root@HADOOP.COM

 

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

 

 

3.3 : kerberos 和  dolphinscheduler 整合测试    dolphinscheduler 只修改 

 

3.3.1  doris  测试    测试 成功

 

 

3.2 : ecvs  测试MYSQL-evcs库      测试成功

 

 

3.3.3:  pg  测试       测试成功  

 

3.3.4  :  dolphinscheduler   测试      测试成功    

 

3.3.5 :    spark 和  hive 测试       测试成功 

 

 

3.3.6:shell 脚本 ,  datax同步 mysql  到 hive  ods 需要 新增 3个配置行,   测试成功   hive    hive-ods    hive-tes   sparksql 

       "haveKerberos": "true",
       "kerberosKeytabFilePath": "/etc/security/keytabs/root.keytab",
       "kerberosPrincipal":"root/admin@HADOOP.COM",

 

 

 

 

3.3.7 :  flink   测试

 

        3.3.7.1 :  先在各个节点 生成 flink.keytab 文件

        3.3.7.2:      修改 flink-yarm配置文件

         security.kerberos.login.use-ticket-cache: false
         security.kerberos.login.keytab: /etc/security/keytabs/hdfs.keytab
         security.kerberos.login.principal: hdfs/admin@HADOOP.COM

        3.3.7.3  :  修改一下 checkpoit 数据目录权限  

        hadoop dfs   -chmod -R  +777  /checkpoint

 

       3.3.7.4:  开通 kerberos 认证的 flink  提交作业 命令:     

          ###  -yD 为 kerberos  flink 认证

 

         ./flink run -m yarn-cluster -yd -yjm 1024m -ytm 2048m -ynm e51a_data  -ys 2  

         -yD java.security.krb5.conf=/etc/krb5.conf -yD security.kerberos.login.keytab=/etc/security/keytabs/hdfs.keytab

         -yD security.kerberos.login.principal=hdfs/admin@HADOOP.COM

         -yD env.java.opts.jobmanager=-Djava.security.krb5.conf=/etc/krb5.conf 

         -yD env.java.opts.taskmanager=-Djava.security.krb5.conf=/etc/krb5.conf

          -c org.huilian.sync.sync.AdasDataRealTimeSyncHdfsByOrc        /opt/flinkjar/flink_kafka_sync_hdfs-1.0-SNAPSHOT-jar-with-dependencies.jar

 

 

3.3.8:  BI 无测试环境,BI 的kerbero 配置 请参考  BI官网  

    

 

 

     

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

STMcubeMX 使用(一)

今天给大家介绍一个STMcubeMX的简单实用案例,让大家对这个工具的使用有一点直观的感受。 前提是你已经安装好了自己开发板需要使用的package。 第一步:打开我们已经安装好的STMcubeMX软件现在最新版本的STMcubeMX界面可以通过多个方式开始新建一个项目。 第二步,我们从MCU型…

OpenVZ 9.0 - 基于容器的 Linux 开源虚拟化解决方案

OpenVZ 9.0 - 基于容器的 Linux 开源虚拟化解决方案OpenVZ 9.0 - 基于容器的 Linux 开源虚拟化解决方案 Open source container-based virtualization for Linux 请访问原文链接:https://sysin.org/blog/openvz-9/ 查看最新版。原创作品,转载请保留出处。 作者主页:sysin.or…

Virtuozzo Hybrid Server 9.0 - 容器、计算和存储虚拟化平台

Virtuozzo Hybrid Server 9.0 - 容器、计算和存储虚拟化平台Virtuozzo Hybrid Server 9.0 - 容器、计算和存储虚拟化平台 The VMware alternative for service providers and enterprises 请访问原文链接:https://sysin.org/blog/virtuozzo-hybrid-server-9/ 查看最新版。原创…

语言能打败数值回归吗?基于语言的多模态轨迹预测

语言能打败数值回归吗?基于语言的多模态轨迹预测语言模型在语境理解和生成表现方面表现出了令人印象深刻的能力。受语言基础模型最近成功的启发,提出了LMTraj(基于语言的多模态轨迹预测器),它将轨迹预测任务转化为一种问答问题。与将轨迹坐标序列视为连续信号的传统数值回…

通过变化先验和条件扩散模型实现基于参考的超分辨率

通过变化先验和条件扩散模型实现基于参考的超分辨率 基于参考的超分辨率(RefSR)有可能在遥感图像的空间和时间分辨率之间架起桥梁。然而,现有的RefSR方法受到内容重建的忠实性和大尺度因子下纹理转移有效性的限制。条件扩散模型为生成逼真的高分辨率图像开辟了新的机会,但在…

小米10ultra 同样亮度 ISO不同导致的分辨率不同

头灯补光 IMG_20241130_023716.jpg 4800w iso320 IMG_20241130_023724.jpg 4800w iso50

黑苹果macOS系统/恢复版基础安装教程

因分为两种安装方式,本文主要介绍两种安装方式:U盘安装,以及在 Windows 下使用镜像恢复软件安装的方式。本文的操作方法支持 Windows 和 macOS 分别使用不同硬盘的安装方法。如果要安装成单个硬盘多系统的方式,注意你的分区结构。两种方法列举如下(OpenCore同样适用): …

linux装机(装系统)

1. 开机(重启)-- 解释: <F11>:进入装机选择 <DEL>:biso设置2.按F11 进入装机选择(U盘装机或PXE网络装机)例如:U盘启动 选择 ( UEFI USB XXXXXXX ) 2.直接下一步 3.难点(设置磁盘)选择设置磁盘 选择手动分区 通过加减去控制分区(如果有原先分配的…

C++ 学习笔记(2):String、递归、排序

背景 记个笔记,这几天跟着这个教程到第五章了,顺带把递归和排序也看了(沙比学校天天整些屁事都没什么空折腾)。 String 字符串就直接用 GPT 生成了,这里就当文档记。(感觉没啥好说的)字符串的输入和输出输入字符串:使用 cin 输入字符串,注意会自动去除末尾的换行符。 …

小米10ultra ISO12233 超广角IMX350 不同亮度下比较 分辨率

自动模式 只有屋顶的灯 IMG_20241130_005539.HEIC ISO1045 自动模式 头灯补光 IMG_20241130_005547.HEIC ISO55 专业模式 固定ISO100 IMG_20241130_005603.jpg 只有屋顶的灯 专业模式 固定ISO100 头灯补光

centos7的root密码重置

1. 重启操作系统,出现以下界面时,按键盘e键继续。 2.出现如下界面时,往下翻,找到 linux XXX (其实是设置系统启动内核参数)添加“rw single init=/bin/bash”,添加后按“Ctrl + x”继续。 3.出现如下界面时,输入“passwd”,按照密码复杂程度进行重置root密码。 4.密…

Solidity学习笔记-2

16.函数重载 16_01.重载函数重载(overloading):即函数名字相同,但输入的参数类型不同的函数可以同时存在;(被视为是不同的函数) Solidity不允许修饰器modifier重载; 重载的函数经过编译之后,由于不同的参数类型,都变成了不同的函数选择器(selector,29节有介绍);示…