知识库 : 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)