1、KDC 服务安装及配置

1.1、在 Cloudera Manager 服务器上安装 KDC 服务

  1. yum -y install krb5-server krb5-libs krb5-auth-dialog krb5-workstation

image.png

1.2、修改配置文件

1.2.1、修改/etc/krb5.conf 配置

  1. 编辑该文件

    1. vim /etc/krb5.conf
  2. 添加如下内容: ```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

  1. ![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)
  2. <a name="MGi3k"></a>
  3. ### 1.2.2、修改/var/kerberos/krb5kdc/kadm5.acl 配置
  4. 1. 编辑该文件,修改域
  5. ```shell
  6. vim /var/kerberos/krb5kdc/kadm5.acl

image.png

1.2.3、修改/var/kerberos/krb5kdc/kdc.conf 配置

  1. 编辑文件

    1. vim /var/kerberos/krb5kdc/kdc.conf
  2. 修改配置文件如下: ```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 }

  1. ![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)
  2. <a name="N58wf"></a>
  3. ## 1.3、Kerberos 数据库创建
  4. 1. 执行命令创建Kerberos 数据库(注意记住填写的密码)
  5. ```shell
  6. kdb5_util create -r MACRO.COM -s

image.png

  1. 创建 Kerberos 的管理账号

    1. kadmin.local
    2. addprinc admin/admin@MACRO.COM

    image.png

  2. 将 Kerberos 服务添加到自启动服务,并启动 krb5kdc 和 kadmin 服务

    1. systemctl enable krb5kdc
    2. systemctl enable kadmin
    3. systemctl start krb5kdc
    4. systemctl start kadmin
    5. systemctl status krb5kdc
    6. systemctl status kadmin

    image.png

    1.4、测试 Kerberos 的管理员账号

    1. kinit admin/admin@MACRO.COM
    2. klist

    image.png

    1.5、安装Kerberos客户端

  3. 为集群所有节点安装 Kerberos 客户端,包括 Cloudera Manager

    1. yum -y install krb5-libs krb5-workstation

    image.png

  4. 在 Cloudera Manager Server 服务器上安装额外的包

    1. yum -y install openldap-clients

    image.png

  5. 将 KDC Server (Kerberos 服务端)上的 krb5.conf 配置文件拷贝到所有 Kerberos 客户端的/etc 目录下:

    1. scp /etc/krb5.conf root@cdh2.macro.com:/etc/
    2. scp /etc/krb5.conf root@cdh3.macro.com:/etc/

    image.png

    2、CDH 集群启用 Kerberos

    2.1、添加管理员账号

  6. 在 KDC 中给 Cloudera Manager 添加管理员账号

    1. kadmin.local

    image.png

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

image.png

  1. 选择“启用 Kerberos”

image.png

  1. 确保如下列出的所有检查项都已完成,红框部分全部勾选,然后点击继续

image.png

2.2、配置KDC

  1. 配置相关的 KDC 信息,包括类型、KDC 服务器、KDC Realm、加密类型以及待创建的Service Principal(hdfs,yarn,,hbase,hive 等)的更新生命期等

image.png

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

image.png

  1. 输入 Cloudera Manager 的 Kerbers 管理员账号,一定得和之前创建的账号一致,点击“继续”

image.png

2.3、启用Kerberos

  1. 导入凭据完成,点击【继续】启用 Kerberos

image.png

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

image.png

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

image.png

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

image.png

  1. 集群启用 Kerberos 成功

image.png

3、Kerberos 链接下组件使用验证

3.1、前置准备

  1. 使用 userkrb 用户运行 MapReduce 任务及操作 Hive,需要在集群所有节点创建 userkrb用户
  2. 使用 kadmin 创建一个 userkrb 的 principal

    1. kadmin.local

    image.png

  3. 使用 userkrb 用户登录 Kerberos

    1. kinit userkrb
    2. klist

    image.png
    3.1.1、在集群所有节点添加 userkrb 用户

  4. 在所有节点添加 userkrb 用户

    1. useradd userkrbee
    2. passwd userkrb
    3. id userkrb

    image.png

    3.2、MapReduce 验证

  5. hdfs下没有userkrb家目录,切换hdfs用户(没有的通过kadmin.local创建),然后创建userkrb的家目录,赋予userkrb的用户权限。

image.png

  1. 执行maperduce程序

    1. hadoop jar /opt/cloudera/parcels/CDH/lib/hadoop-mapreduce/hadoop-mapreduce-examples.jar pi 10 1

    image.png
    image.png

    3.3、HDFS 验证

  2. 查看 HDFS 系统上/test 目录下有 a.txt 文件,从 HDFS 系统上下载到本地并查看,正常

    1. hadoop fs -ls /test/
    2. hadoop fs -cat /test/a.txt
    3. rm -rf ./a.txt
    4. hadoop fs -get /test/a.txt ./
    5. ll
    6. cat a.txt

    image.png

    3.4、Hive 验证

    3.4.1、登录kerberos的hive用户

  3. 在/var/run/cloudera-scm-agent/process/目录下找最新版本的hive-HIVESERVER2,里面有一个hive.keytab,使用该密钥登录用户。

    1. kinit hive/cdh1.macro.com.MACRO.COM -tk hive.kerbat

    image.png

  4. 使用 beeline 连接 Hive 查询

    1. beeline
    2. !connect jdbc:hive2://localhost:10000/;principal=hive/cdh1.macro.com@MACRO.COM

    image.png

    3.2.2、验证hive

  5. 显示所有表

    1. show tables;

    image.png

  6. 创建表

    1. create table test(id int,name string);
    2. show tables;

    image.png
    image.png

  7. 插入数据

    1. insert into test values (2,'macro');

    image.png

  8. 查询数据

    1. select * from test;

    image.png

3.5、Impala 验证

3.5.1、在命令行用 kdestroy 退出 Kerberos 用户,klist 查看当前没有登陆 Kerberos 用户用 impala-shell 登陆 impala 交互界面,下图红圈处,可以看到提示不用 Kerberos验证启动 impala shell 错误。也没有连接到用户。说明 Kerberos 生效

image.png

3.5.2、下面我 kinit 登陆刚创建 userkrb 用户,再次启动 impala shell,如下图,可以看到,登陆成功。

image.png

3.5.3、继续测试,基本的命令都正常使用,如下图

  1. 显示所有数据库

image.png

  1. 创建表

image.png

  1. 查询表

    image.png

    3.6、HBase 验证

  2. 先 kdestroy 登出 Kerberos 用户,来验证能否正常登陆使用,界面能够正常进入

image.png

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

image.png
3.6.2、下面再登陆 userkrb 用户,再次进去 impala shell 交互界面执行 status 命令可以看到,命令执行成功,没有报错
image.png
3.6.3、后面执行建表命令提示错误,用户没通过安全验证
3.6.4、重新用 hbase/cdh01.macro.com@MACRO.COM 来登陆 Kerberos,执行命令,成功
3.6.6、然后执行插入数据,查询表,删除表命令都成功完成。

3.6、Spark 验证

  1. 先登出 Kerberos 用户,使用 spark-shell 来登陆 saprk 命令行,下图可以看出也提示错误,找不到有效的凭证。找不到任何 Kerberos 用户信息,登陆失败

image.png

  1. 登陆 Kerberos 用户 userkrb 之后再执行相关命令,成功。

image.png

4、总结

yran默认禁用小于1000的用户id,出现如下错误在cm的web界面修改yran默认最小id
image.png
修改如下:
image.png