0 说明
本文基于《CDH数仓项目(一) —— CDH安装部署搭建详细流程》和《CDH数仓项目(二) —— 用户行为数仓和业务数仓搭建》和搭建CDH数仓。本章节主要介绍基于CDH数仓的Kerberos认证和Sentry权限管理
1 Kerberos安全认证
1.1 Kerberos概述
Kerberos是一种计算机网络授权协议,用来在非安全网络中,对个人通信以安全的手段进行身份认证。软件设计上采用客户端/服务器结构,并且能够进行相互认证,即客户端和服务器端均可对对方进行身份认证。可以用于防止窃听、防止重放攻击、保护数据完整性等场合,是一种应用对称密钥体制进行密钥管理的系统。
1.2 Kerberos概念
Kerberos中有以下一些概念需要了解:
1)KDC:密钥分发中心,负责管理发放票据,记录授权。
2)Realm:Kerberos管理领域的标识。
3)principal:当每添加一个用户或服务的时候都需要向kdc添加一条principal,principl的形式为:主名称/实例名@领域名。
4)主名称:主名称可以是用户名或服务名,表示是用于提供各种网络服务(如hdfs,yarn,hive)的主体。
5)实例名:实例名简单理解为主机名。
1.3 Kerberos认证原理

2 Kerberos安装
2.1 server节点安装kerberos相关软件
server节点只需安装一个节点即可,这里安装在chen102节点上
yum install -y krb5-server krb5-workstation krb5-libs
查看安装结果
rpm -qa | grep krb5

2.2 client节点安装
client节点可以安装多个
yum install -y krb5-workstation krb5-libs

2.3 配置Kerberos
需要配置的文件有两个为kdc.conf和krb5.conf , kdc配置只是需要Server服务节点配置,即chen102.
1) kdc配置
vim /var/kerberos/krb5kdc/kdc.conf

说明:
CHEN.COM:realm名称,Kerberos支持多个realm,一般全用大写。
acl_file:admin的用户权。
admin_keytab:KDC进行校验的keytab。
supported_enctypes:支持的校验方式,注意把aes256-cts去掉,JAVA使用aes256-cts验证方式需要安装额外的jar包,所有这里不用
2) krb5文件配置
vim /etc/krb5.conf

修改内容同步到集群其他节点
default_realm:默认的realm,设置 Kerberos 应用程序的默认领域,必须跟要配置的realm的名称一致。
ticket_lifetime:表明凭证生效的时限,一般为24小时。
renew_lifetime : 表明凭证最长可以被延期的时限,一般为一个礼拜。当凭证过期之后,对安全认证的服务的后续访问则会失败。
udp_preference_limit= 1:禁止使用 udp,可以防止一个 Hadoop 中的错误。
realms:配置使用的 realm,如果有多个领域,只需向 [realms] 节添加其他的语句。
domain_realm:集群域名与Kerberos realm的映射关系,单个realm的情况下,可忽略。
2.4 生成Kerberos数据库
在server节点执行
kdb5_util create -s
创建完成后/var/kerberos/krb5kdc目录下会生成对应的文件
ls /var/kerberos/krb5kdc/

2.5 赋予Kerberos管理员所有权限
vim /var/kerberos/krb5kdc/kadm5.acl
#修改为以下内容:
*/admin@CHEN.COM *
说明:
*/admin:admin实例的全部主体
@HADOOP.COM:realm
*:全部权限
这个授权的意思:就是授予admin实例的全部主体对应CHEN.COM领域的全部权限。也就是创建Kerberos主体的时候如果实例为admin,就具有CHEN.COM领域的全部权限,比如创建如下的主体user1/admin就拥有全部的CHEN.COM领域的权限。
2.6 启动Kerberos服务(server节点执行)
启动krb5kdc
systemctl start krb5kdc
启动kadmin
systemctl start kadmin

设置开机自启
systemctl enable krb5kdc
systemctl enable kadmin
查看是否设置为开机自启
systemctl is-enabled krb5kdc
systemctl is-enabled kadmin
注:启动失败时可以通过/var/log/krb5kdc.log和/var/log/kadmind.log来查看。

2.7 创建管理员主体/实例
kadmin.local -q "addprinc admin/admin"

2.8 kinit管理员验证
kinit admin/admin
klist

其他节点尝试

2.9 Kerberos数据库操作
2.9.1 登录kerberos数据库
1)本地登录(无需认证)
kadmin.local

2)远程登录(需进行主体认证,先认证刚刚创建的管理员主体)
kadmin

2.9.2 创建kerberos主体
kadmin.local -q "addprinc test/test"
2.9.3 修改主体密码
kadmin.local -q "cpw test/test"


本文详细介绍了如何在CDH数仓项目中搭建Kerberos安全认证,包括Kerberos的概念、安装配置、主体认证以及在不同节点上的应用。接着,文章讨论了Sentry权限管理在Hadoop生态中的作用,以及如何在Hive和Impala中集成Sentry进行权限控制。通过实例展示了如何创建用户角色、分配权限,并通过HUE和命令行进行权限测试,确保安全环境下的数据操作。
最低0.47元/天 解锁文章
1398

被折叠的 条评论
为什么被折叠?



