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

企业级数据安全-CDH集群-dolphinscheduler海豚调度一站式数据安全技术实战2025,为了配合集团上市数据审计要求,我们在公司内部升级了数据安全等级。

一:CDH技术框架,这也是通用企业级的数据平台框架。

 

   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 krb5kdc



systemctl enable kadmin

  • 1
  • 2
  • 3
  • 4
  • 5

查看是否设置为开机自启


systemctl is-enabled krb5kdc



systemctl 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@HADOOP.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@HADOOP.COM"

2)进行用户认证

kinit hive/hive@HADOOP.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 = HADOOP.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]
HADOOP.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@HADOOP.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 

       datax  json 文件中修改 hdfs writer 配置信息:

       "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官网  

   

     

posted @ 2024-11-30 08:16  AIIsFuture  阅读(17)  评论(0编辑  收藏  举报