hadoop在用户权限上做的只是像linux用户级别的安全认证,即对文件的访问权限。对于一些数据安全比较重视的公司是不够的,如果对数据安全有要求,而且是认证方式的,可以使用kerberos,但是并不是很好用,当初阿里巴巴在安全上使用kerberos,后来嫌弃太麻烦就抛弃了,自己开发了一套安全认证系统叫宙斯盾已经开源,有兴趣的可以看看。

今天为大家写的实践已经运用到我们单位的大数据平台。不废话去讲kerberos的认证方式和原理,直接进入主题。

kerberos需要跟用户管理系统NIS配合使用。

1、所需安装包:

NIS服务器:

rpcbind-0.2.0-11.el6.x86_64

ypserv-2.19-26.el6_4.2.x86_64

 

NIS客户端:

yp-tools-2.9-12.el6.x86_64

ypbind-1.20.4-30.el6.x86_64

rpcbind-0.2.0-11.el6.x86_64

 

KDC服务器:

krb5-server-1.10.3-57.el6.x86_64

krb5-workstation-1.10.3-57.el6.x86_64

krb5-libs-1.10.3-57.el6.x86_64

krb5-devel-1.10.3-57.el6.x86_64

 

KDC客户端:

krb5-libs-1.10.3-57.el6.x86_64

krb5-devel-1.10.3-57.el6.x86_64

krb5-workstation-1.10.3-57.el6.x86_64

 

2、角色分类:

3、配置NIS服务器(1.1)

配置NIS区域名称、固定服务端口

vi /etc/sysconfig/network

NETWORKING=yes

HOSTNAME=bigdata022

NISDOMAIN=BIGDATA

YPSERV_ARGS="-p 1011"

 

设置允许访问NIS服务器的主机

vi /var/yp/securenets

255.255.255.0 192.168.1.0

 

开启ypserv、rpcbind(portmap)服务,并设置为开机启动

service rpcbind restart;chkconfig rpcbind on

service ypserv restart ; chkconfig ypserv on

创建NIS信息库

//自动识别当前主机名,若无需添加其他NIS服务器,直接按Ctrl+D确认提交就可以了.

#/usr/lib64/yp/ypinit -m


到此,NIS服务器配置完毕

4、配置NIS客户端(1.1、1.2、1.3、1.4)

指定NIS区域、服务器地址信息:

vi /etc/yp.conf

domain BIGDATA server 192.168.1.1

 

启动ypbind、portmap服务并设置成开机自启

service rpcbind restart ; chkconfig rpcbind on
service ypbind restart ; chkconfig bind on


验证:

ypcat  -d BIGDATA -h bigdata022 passwd

5、配置KDC服务器

kerberos配置文件一:

vi /etc/krb5.conf

[logging]
default = FILE:/var/log/krb5libs.log
kdc = FILE:/var/log/krb5kdc.log
admin_server = FILE:/var/log/kadmin.log

[libdefaults]
default_realm = BIGDATA              //将文件中的默认领域改为自己的领域
dns_lookup_realm = false
dns_lookup_kdc = false
ticket_lifetime = 86400             //票据的默认生命周期
renew_lifetime =604800
forwardable = true
default_tgs_enctypes = rc4-hmac
default_tkt_enctypes = rc4-hmac
permitted_enctypes = rc4-hmac
udp_preference_limit = 1
kdc_timeout = 3000

[realms]
BIGDATA= {
kdc = bigdata022               //指定KDC服务(krb5kdc)的地址
admin_server = bigdata022       //指定KADMIN管理服务(kadmin)的地址
}

[kdc]

profile=/var/kerberos/krb5kdc/kdc.conf      //指定KDC配置文件的位置

复制粘贴的时候把//注释去掉。

kerberos配置文件二:

vi /var/kerberos/krb5kdc/kdc.conf

[kdcdefaults]
 kdc_ports = 88
 kdc_tcp_ports = 88

[realms]
 BIGDATA = {
  master_key_type = aes256-cts
  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 des-hmac-sha1:normal des-cbc-md5:normal des-cbc-crc:normal

 }

kerberos配置文件三:

vi /var/kerberos/krb5kdc/kadm5.acl

*/admin@BIGDATA *


配置完成:

将/etc/krb5.conf传递到客户端机器。

创建KDC票据数据库。

kdb5_utilcreate -r BIGDATA -s

注意:密码一定要牢记。大笑

注:该命令会在 /var/kerberos/krb5kdc/ 目录下创建 principal 数据库。如果遇到数据库已经存在的提示,可以把 /var/kerberos/krb5kdc/ 目录下的 principal 的相关文件都删除掉。默认的数据库名字都是 principal。可以使用 -d 指定数据库名字。

开启kdc服务并设置开机自启:

servicekrb5kdc restart

servicekadmin restart

chkconfig krb5kdcon

chkconfig kadminon

6、配置管理员用户和密码:

kadmin.local


验证:

7、开启cloudera manager的kerberos认证:

点击继续:

点击继续,输入管理员用户和密码:

点击继续,点击继续,重启集群:

集群启用kerberos(比较慢)并重启:

启动完毕后,会发现有错误:

Kerberos Ticket Renewer 运行状况 不良

查看错误:

主要是说,没有设置最大轮转时间。

解决办法:

a、在kerberos主机的/var/kerberos/krb5kdc/kdc.conf配置文件中加入:max_renewable_life=10d

b、找到listprincs中的krbtgt的主题:

kadmin.local:modprinc -maxrenewlife 10days krbtgt/BIGDATA@BIGDATA

重启服务即可。

至此,集群已经开启kerberos认证。


补充:kerberos管理集群的男队较大,若你不想要kerberos管理集群,千万不要随便卸载,cloudera manager并没有关闭kerberos的按钮,需要手动配置安装:

关闭集群kereros认证:

当kerberos服务器故障时,不能提供服务的零时解决办法

当kerberos不提供服务的时候,需要在cloudera manager管理页面对HDFS和zookeeper两个服务的配置进行修改,然后重启集群即可:

对比:

未开启kerberos安全认证时的DataNode收发端口和UI端口以及NameNode的RPC端口如下图:

安全服务及授权:

开启kerberos安全认证后的端口及安全授权:


Zookeeper的配置对比:

未开启kerberos


开启kerberos

综上所述,当kerberos出现故障时,我们可以改回这些配置,将hadoop集群零时调整到非安全状态,从而继续数据分析任务。









Logo

更多推荐