- 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
![image.png](https://cdn.nlark.com/yuque/0/2020/png/2680099/1606366126170-4424154a-9efb-44ed-9f3f-2b7db7e2cf15.png#align=left&display=inline&height=212&margin=%5Bobject%20Object%5D&name=image.png&originHeight=424&originWidth=747&size=33454&status=done&style=none&width=373.5)
<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 }
![image.png](https://cdn.nlark.com/yuque/0/2020/png/2680099/1606285622832-c0fcf08b-d5bc-4f5f-9073-615b1cddb9f0.png#align=left&display=inline&height=235&margin=%5Bobject%20Object%5D&name=image.png&originHeight=235&originWidth=1118&size=22375&status=done&style=none&width=1118)
<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
修改如下: