- 1、KDC 服务安装及配置
- Configuration snippets may be placed in this directory as well
- pkinit_anchors = /etc/pki/tls/certs/ca-bundle.crt
- default_ccache_name = KEYRING:persistent:%{uid}
- master_key_type = aes256-cts
- 2、CDH 集群启用 Kerberos
- 3、Kerberos 链接 下组件使用验证
- 4、总结
1、KDC 服务安装及配置
1.1、在 Cloudera Manager 服务器上安装 KDC 服务
yum -y install krb5-server krb5-libs krb5-auth-dialog krb5-workstation
1.2、修改配置文件
1.2.1、修改/etc/krb5.conf 配置
编辑该文件
vim /etc/krb5.conf
添加如下内容: ```shell
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 = /etc/pki/tls/certs/ca-bundle.crt
default_realm = MACRO.COM
default_ccache_name = KEYRING:persistent:%{uid}
[realms] MACRO.COM = { kdc = cdh1.macro.com admin_server = cdh1.macro.com }
[domain_realm] .cdh1.macro.com = MACRO.COM cdh1.macro.com = MACRO.COM
<a name="MGi3k"></a>### 1.2.2、修改/var/kerberos/krb5kdc/kadm5.acl 配置1. 编辑该文件,修改域```shellvim /var/kerberos/krb5kdc/kadm5.acl
1.2.3、修改/var/kerberos/krb5kdc/kdc.conf 配置
编辑文件
vim /var/kerberos/krb5kdc/kdc.conf
修改配置文件如下: ```shell [kdcdefaults] kdc_ports = 88 kdc_tcp_ports = 88
[realms] MACRO.COM = {
master_key_type = aes256-cts
max_renewable_life=7d 0h 0m 0s 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 }
<a name="N58wf"></a>## 1.3、Kerberos 数据库创建1. 执行命令创建Kerberos 数据库(注意记住填写的密码)```shellkdb5_util create -r MACRO.COM -s

创建 Kerberos 的管理账号
kadmin.localaddprinc admin/admin@MACRO.COM

将 Kerberos 服务添加到自启动服务,并启动 krb5kdc 和 kadmin 服务
systemctl enable krb5kdcsystemctl enable kadminsystemctl start krb5kdcsystemctl start kadminsystemctl status krb5kdcsystemctl status kadmin
1.4、测试 Kerberos 的管理员账号
kinit admin/admin@MACRO.COMklist

1.5、安装Kerberos客户端
为集群所有节点安装 Kerberos 客户端,包括 Cloudera Manager
yum -y install krb5-libs krb5-workstation

在 Cloudera Manager Server 服务器上安装额外的包
yum -y install openldap-clients

将 KDC Server (Kerberos 服务端)上的 krb5.conf 配置文件拷贝到所有 Kerberos 客户端的/etc 目录下:
scp /etc/krb5.conf root@cdh2.macro.com:/etc/scp /etc/krb5.conf root@cdh3.macro.com:/etc/
2、CDH 集群启用 Kerberos
2.1、添加管理员账号
在 KDC 中给 Cloudera Manager 添加管理员账号
kadmin.local

进入 Cloudera Manager 的“管理”→“安全”界面

- 选择“启用 Kerberos”

- 确保如下列出的所有检查项都已完成,红框部分全部勾选,然后点击继续
2.2、配置KDC
- 配置相关的 KDC 信息,包括类型、KDC 服务器、KDC Realm、加密类型以及待创建的Service Principal(hdfs,yarn,,hbase,hive 等)的更新生命期等

- 不建议让 Cloudera Manager 来管理 krb5.conf, 点击“继续”

- 输入 Cloudera Manager 的 Kerbers 管理员账号,一定得和之前创建的账号一致,点击“继续”
2.3、启用Kerberos
- 导入凭据完成,点击【继续】启用 Kerberos

- Kerberos 启用完成,点击【继续】

- 勾选重启集群,点击【继续】

- 等待集群重启完成,点击【继续】

- 集群启用 Kerberos 成功

3、Kerberos 链接下组件使用验证
3.1、前置准备
- 使用 userkrb 用户运行 MapReduce 任务及操作 Hive,需要在集群所有节点创建 userkrb用户
使用 kadmin 创建一个 userkrb 的 principal
kadmin.local

使用 userkrb 用户登录 Kerberos
kinit userkrbklist

3.1.1、在集群所有节点添加 userkrb 用户在所有节点添加 userkrb 用户
useradd userkrbeepasswd userkrbid userkrb
3.2、MapReduce 验证
hdfs下没有userkrb家目录,切换hdfs用户(没有的通过kadmin.local创建),然后创建userkrb的家目录,赋予userkrb的用户权限。

执行maperduce程序
hadoop jar /opt/cloudera/parcels/CDH/lib/hadoop-mapreduce/hadoop-mapreduce-examples.jar pi 10 1
3.3、HDFS 验证
查看 HDFS 系统上/test 目录下有 a.txt 文件,从 HDFS 系统上下载到本地并查看,正常
hadoop fs -ls /test/hadoop fs -cat /test/a.txtrm -rf ./a.txthadoop fs -get /test/a.txt ./llcat a.txt
3.4、Hive 验证
3.4.1、登录kerberos的hive用户
在/var/run/cloudera-scm-agent/process/目录下找最新版本的hive-HIVESERVER2,里面有一个hive.keytab,使用该密钥登录用户。
kinit hive/cdh1.macro.com.MACRO.COM -tk hive.kerbat

使用 beeline 连接 Hive 查询
beeline!connect jdbc:hive2://localhost:10000/;principal=hive/cdh1.macro.com@MACRO.COM
3.2.2、验证hive
显示所有表
show tables;

创建表
create table test(id int,name string);show tables;


插入数据
insert into test values (2,'macro');

查询数据
select * from test;

3.5、Impala 验证
3.5.1、在命令行用 kdestroy 退出 Kerberos 用户,klist 查看当前没有登陆 Kerberos 用户用 impala-shell 登陆 impala 交互界面,下图红圈处,可以看到提示不用 Kerberos验证启动 impala shell 错误。也没有连接到用户。说明 Kerberos 生效
3.5.2、下面我 kinit 登陆刚创建 userkrb 用户,再次启动 impala shell,如下图,可以看到,登陆成功。
3.5.3、继续测试,基本的命令都正常使用,如下图
- 显示所有数据库

- 创建表


- 在 HBase 命令行执行 status 命令,查看状态。可以看到提示错误,找不到任何 Kerberos凭证,说明 Kerberos 验证起了作用

3.6.2、下面再登陆 userkrb 用户,再次进去 impala shell 交互界面执行 status 命令可以看到,命令执行成功,没有报错
3.6.3、后面执行建表命令提示错误,用户没通过安全验证
3.6.4、重新用 hbase/cdh01.macro.com@MACRO.COM 来登陆 Kerberos,执行命令,成功
3.6.6、然后执行插入数据,查询表,删除表命令都成功完成。
3.6、Spark 验证
- 先登出 Kerberos 用户,使用 spark-shell 来登陆 saprk 命令行,下图可以看出也提示错误,找不到有效的凭证。找不到任何 Kerberos 用户信息,登陆失败

- 登陆 Kerberos 用户 userkrb 之后再执行相关命令,成功。
4、总结
yran默认禁用小于1000的用户id,出现如下错误在cm的web界面修改yran默认最小id
修改如下:


