- 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. 编辑该文件,修改域
```shell
vim /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 数据库(注意记住填写的密码)
```shell
kdb5_util create -r MACRO.COM -s

- 创建 Kerberos 的管理账号 - kadmin.local
- addprinc admin/admin@MACRO.COM
  
- 将 Kerberos 服务添加到自启动服务,并启动 krb5kdc 和 kadmin 服务 - systemctl enable krb5kdc
- systemctl enable kadmin
- systemctl start krb5kdc
- systemctl start kadmin
- systemctl status krb5kdc
- systemctl status kadmin
 - 1.4、测试 Kerberos 的管理员账号- kinit admin/admin@MACRO.COM
- klist
  - 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 userkrb
- klist
  
 3.1.1、在集群所有节点添加 userkrb 用户
- 在所有节点添加 userkrb 用户 - useradd userkrbee
- passwd userkrb
- id 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.txt
- rm -rf ./a.txt
- hadoop fs -get /test/a.txt ./
- ll
- cat 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
修改如下:

 
 
 
 
 
 
 

 
 
 
 
 
 
 
                         
                                

