1 kerberos部署
1.1 kerberos部署
选择服务端:选择worker1节点作为kerberos服务端
#安装kerberos软件
yum -y install krb5-server krb5-libs krb5-auth-dialog krb5-workstation
#安装sasl工具,impala启用kerberos时需要sasl工具
yum -y install cyrus-sasl-plain cyrus-sasl-devel cyrus-sasl-gssapi cyrus-sasl-md5
修改/etc/krb5.conf文件,这里要修改的几个关键点,kerberos.example.com和example.com替换为kerberos服务端的hostname,EXAMPLE.COM替换为自己公司的域名
#注释掉如下行,打开会引起错误:[Caused by GSSException: No valid credentials provided (Mechanism level: Failed to find any Kerberos tgt)]
# default_ccache_name = KEYRING:persistent:%{uid}
cp -n /etc/krb5.conf /etc/krb5.conf.bak && \
sed -i 's/#//g' /etc/krb5.conf && \
sed -i 's/EXAMPLE.COM/HAINIU.COM/g' /etc/krb5.conf && \
sed -i 's/kerberos.example.com/worker-1/g' /etc/krb5.conf && \
sed -i 's/example.com/worker-1/g' /etc/krb5.conf && \
sed -i 's/ default_ccache_name/# default_ccache_name/g' /etc/krb5.conf && \
sed -i 's/ Configuration/# Configuration/g' /etc/krb5.conf
# 查看修改前和修改后的文件对比
diff /etc/krb5.conf.bak /etc/krb5.conf
修改后查看:
修改/var/kerberos/krb5kdc/kdc.conf文件,修改EXAMPLE.COM为自己公司的域名。
cp -n /var/kerberos/krb5kdc/kdc.conf /var/kerberos/krb5kdc/kdc.conf.bak && \
sed -i 's/EXAMPLE.COM/HAINIU.COM/g' /var/kerberos/krb5kdc/kdc.conf
diff /var/kerberos/krb5kdc/kdc.conf.bak /var/kerberos/krb5kdc/kdc.conf
修改/var/kerberos/krb5kdc/kadm5.acl文件,修改EXAMPLE.COM为自己公司的域名。
cp -n /var/kerberos/krb5kdc/kadm5.acl /var/kerberos/krb5kdc/kadm5.acl.bak && \
sed -i 's/EXAMPLE.COM/HAINIU.COM/g' /var/kerberos/krb5kdc/kadm5.acl
diff /var/kerberos/krb5kdc/kadm5.acl.bak /var/kerberos/krb5kdc/kadm5.acl
1.2 配置kerberos服务
生成kerberos数据库,设置密码为:12345678
/usr/sbin/kdb5_util create -s
为cdh创建cloudera-scm/admin用户,设置密码为:12345678
# 开启kerberos管理界面
kadmin.local
# 添加认证主体, 主体名: cloudera-scm/admin 密码: 12345678
addprinc cloudera-scm/admin
12345678
12345678
# 退出kerberos管理界面
exit
修改krbtgt/HAINIU.COM@HAINIU.COM的Maximum renewable life参数为90天(其默认值为0天),解决在CDH启用kerberos时,Hue角色Kerberos Ticket Renewer启动异常问题
kadmin.local
modprinc -maxrenewlife 90day krbtgt/HAINIU.COM@HAINIU.COM
getprinc krbtgt/HAINIU.COM@HAINIU.COM
exit
1.3 启动kerberos服务
#启动kerberos服务并添加为开机启动
systemctl enable krb5kdc
systemctl enable kadmin
systemctl start krb5kdc
systemctl start kadmin
systemctl status krb5kdc
systemctl status kadmin
1.4 kerberos客户端安装
多节点时执行,单节点不需要执行
#从节点安装kerberos客户端软件
yum -y install krb5-libs krb5-workstation
#从主节点复制配置文件到从节点
scp /etc/krb5.conf root@worker-2:/etc/krb5.conf
scp /etc/krb5.conf root@worker-3:/etc/krb5.conf
ssh root@worker-2 cat /etc/krb5.conf
ssh root@worker-3 cat /etc/krb5.conf
1.5 kerberos认证测试
#客户端执行
#获取票据
kinit cloudera-scm/admin
12345678
#查看票据
klist
#销毁票据
kdestroy
1.6 CDH集成kerberos
集群启用kerberos,进入cm界面,在集群右边选择下拉选项,选择启用kerberos。或者在cm界面,点击管理,点击安全,选择启用kerberos。
然后按照如下操作进行
- 页面1,检查提示
-
页面2,配置kerberos服务端信息
KDC Type: MIT KDC
Kerberos Security Realm: HAINIU.COM
KDC Server Host: worker-1
KDC Admin Server Host: worker-1
Kerberos Encryption Types: rc4-hmac
Maximum Renewable Life for Principals: 5
- 页面3,不要勾选该项(Manage krb5.conf through Cloudera Manager),直接继续
-
页面4,cloudera-scm/admin账号、密码
cloudera-scm/admin
12345678
-
页面5,页面6 Continue
-
页面7,确认HDFS特权端口,并选择重启集群(此过程需要十几分钟)
Yes, I am ready to restart the cluster now.
- 其余页面按提示操作
重启后,在管理--> 安全,查看kerberos 已经启用
2 sentry 部署
2.1 cdh添加sentry服务
sentry也是Cloudera公司开源给Apache的,直接在cm页面配置即可。
-
添加服务
依次点击Cloudera Manager -> Cluster 1 -> Add Service -> Sentry
-
节点选择
选择Sentry Server所在服务器,Gatway可以不选。
-
填写元库信息
填写元数据库信息: sentry sentry sentrydemima,这个元库信息是在cdh部署时cm元库创建时的信息。
安装时如果由于缺少mysql jdbc驱动报错,请复制jdbc驱动到以下目录
cp /tmp/cloudera/mysql-connector-java-5.1.35.jar /opt/cloudera/parcels/CDH/lib/sentry/lib/
如上,服务添加完成。
2.2 hive集成sentry
1)开启hive的sentry权限管理
依次点击Clusters -> Hive -> Configuration -> 搜索: sentry,选择hive组件,点击配置,搜索senty,然后Sentry Service [勾选] Sentry。
2)关闭所有HiveServer2的Impersonation
在hive的配置项中搜索:Impersonation,[去除勾选] HiveServer2
3)启用数据库存储通知
在hive配置中搜索:Hive Metastore Server Default Group,然后[勾选] Hive Metastore Server Default Group
4)保存并重启hive服务
2.3 impala集成sentry
点击impala组件,点击配置,在搜索栏中搜多:Sentry,然后Sentry Service [勾选] Sentry
保存并重启Impala服务
2.4 hue集成sentry
点击hue服务,点击配置,在搜索栏中搜索:Sentry,然后Sentry Service [勾选] Sentry
保存并重启Hue服务
2.5 hdfs集成sentry
点击hdfs组件,点击配置,在搜索框中搜索:"启用访问控制列表"或者"dfs.namenode.acls.enabled",然后[勾选] HDFS (Service-Wide);
在搜索框中搜索:"acl",然后[勾选] HDFS (Service-Wide)
保存并重启HDFS服务