知识库 : UDH Keberos安全认证机制简介

Edit Document

UDH Keberos 安全认证机制 简介

目录

UDH Keberos 安全认证机制简介

1 、               Hadoop 的安全认证机制

2 、               Kerberos 安全认证协议

3 、               搭建 Keberos

4 、               Keberos 用户操作

 

在 UDH 上使用 Keberos 认证,它会根据所安装的服务生成对应主机和服务的 principal 、 keytab 等信息的 csv 文件,并且在启动后通过脚本自动生成 keytab 存放到对应主机目录上( /etc/security/keytabs )。

所以,只需在安装完 KDC 环境执行 UDH 中 kerberos-setup.sh 脚本, UDH 就能够完成大部分的初始化工作。

1 、               Hadoop 的安全认证机制

简单来说 , 没有做 kerberos 认证的 Hadoop ,只要有 client 端就能够连接上。而且,通过一个有 root 的权限的内网机器,通过创建对应的 linux 用户,就能够得到 Hadoop 集群上对应的权限。

而实行 Kerberos 后,任意机器的任意用户都必须现在 Kerberos 的 KDC 中有记录,才允许和集群中其它的模块进行通信。

2 、               Kerberos 安全认证协议

Kerberos 是一种网络认证协议,其设计目标是通过密钥系统为客户机 / 服务器应用程序提供强大的认证服务。

简单介绍:  

使用 Kerberos 时,一个客户端需要经过三个步骤来获取服务 :

认证:客户端向认证服务器发送一条报文,并获取一个含时间戳的 Ticket-Granting Ticket ( TGT )。

授权:客户端使用 TGT 向 Ticket-Granting Server ( TGS )请求一个服务 Ticket 。

服务请求:客户端向服务器出示服务 Ticket ,以证实自己的合法性。该服务器提供客户端所需服务,在 Hadoop 应用中,服务器可以是 namenode 或 jobtracker 。

为此, Kerberos 需要 The Key Distribution Centers ( KDC )来进行认证。 KDC 只有一个 Master ,可以带多个 slaves 机器。 slaves 机器仅进行普通验证。 Mater 上做的修改需要自动同步到 slaves 。

另外, KDC 需要一个 admin ,来进行日常的管理操作。这个 admin 可以通过远程或者本地方式登录。

3 、               搭建 Keberos

a. UDH集群内环境安装

    环境: udh-yf-dev-1~udh-yf-dev-4 , 选择 udh-yf-dev-1 , udh-yf-dev-2 , udh-yf-dev-3 组成分布式的 KDC , udh-yf-dev-1 作为 Master 机器,

安装:通过执行 Auto_Kerberos_Install.sh 脚本自动安装,

         setup1. 根据提示填写 KDC 的 realm 域 如: YONYOU.COM

         setup2. 设置 kadmin 的密码,注意这里的密码也是 kdc 数据库的密码

         setup3. 确认是否执行在 UDH server 所在机器上

 

C:\Users\Administrator\AppData\Local\YNote\data\xsl316999766@163.com\69ed8b418b874748a8bb8046c3b850aa\clipboard.png

 

配置说明:   Kerberos 的配置文件只有两个,分别为 /etc/krb5.conf 、 /var/kerberos/krb5kdc/kdc.conf , Keberos 脚本根据集群环境相应主机生成默认配置文件, /etc/krb5.conf   : 包含 Kerberos 的配置信息。例如, KDC 的位置, Kerberos 的 admin 的 realms 等。需要所有使用的 Kerberos 的机器上的配置文件都同步。这里仅列举需要的基本配置。

 

C:\Users\Administrator\AppData\Local\YNote\data\xsl316999766@163.com\70d6852089cd471ea682c8f7c093d29a\clipboard.png

    说明:

          [logging] :表示 server 端的日志的打印位置

        [libdefaults] :每种连接的默认配置,需要注意以下几个关键的小配置

        default_realm =   YONYOU .COM 默认的 realm ,必须跟要配置的 realm 的名称一致。

        udp_preference_limit = 1 禁止使用 udp 可以防止一个 Hadoop 中的错误

        [realms]: 列举使用的 realm 。

        kdc :代表要 kdc 的位置。格式是 机器 : 端口

        admin_server: 代表 admin 的位置。格式是 机器 : 端口

        default_domain :代表默认的域名

/var/kerberos/krb5kdc/kdc.conf: 包括 KDC 的配置信息

 

C:\Users\Administrator\AppData\Local\YNote\data\xsl316999766@163.com\b23dbf45ba584609ba8cf73f4ad81467\clipboard.png

 

说明:

YONYOU.COM: 是设定的 realms 。名字随意。 Kerberos 可以支持多个 realms ,会增加复杂度。大小写敏感,一般为了识别使用全部大写。这个 realms 跟机器的 host 没有大关系。  

max_renewable_life = 7d 涉及到是否能进行 ticket 的 renwe 必须配置。

master_key_type: 和 supported_enctypes 默认使用 aes256-cts 。由于, JAVA 使用 aes256-cts 验证方式需要安装额外的 jar 包。推荐不使用。  

acl_file: 标注了 admin 的用户权限,需要用户自己创建。文件格式是

Kerberos_principal permissions [target_principal]   [restrictions]

支持通配符等。最简单的写法是

*/admin@ YONYOU .COM           *

代表名称匹配 */admin@ YONYOU .COM 都认为是 admin ,权限是 * 。代表全部权限。  

admin_keytab:KDC 进行校验的 keytab 。后文会提及如何创建。

supported_enctypes: 支持的校验方式。注意把 aes256-cts 去掉。

注意:执行完 Kerboers 安装脚本,已经初始化 KDC 数据库、同步配置到所有 slave kdcs 并启动。  

b.UDH集群外环境安装

      新增一个节点作为 KDC server ,只需在执行 Auto_Kerberos_Install.sh 脚本 setup3 填写 N 就可以了,脚本安装后的环境一样,这里不在重复介绍。

4 、               Keberos 用户操作

  a. 查看当前的认证用户:klist

  b. 认证用户:kinit -k -t   /xxx/xxx/kerberos.keytab hdfs/udh-yf-dev-1.yonyou.com

  c. 删除当前的认证的缓存:kdestroy

启动、停止、重启命令

  /etc/init.d/krb5kdc start|stop|restart

  /etc/init.d/kadmin   start|stop|restart

 

Attachments:

UDH Keberos安全认证机制简介.docx (application/vnd.openxmlformats-officedocument.wordprocessingml.document)