对于简单安装的上线的hadoop集群,我们可以认为有如下安全隐患
可以人为的添加一个客户端节点,并以此假冒的客户端来获取集群数据,对于假冒的客户端节点,成功加入集群,就能够伪装成datanode 让得到namenode指派的任务和数据.创建hdfs账户,就可以得到hadoop文件系统的最高权限

Kerberos主要用来做网络通讯中的身份认证,帮助我们高效,安全的识别访问者

Kerberos Server的安装
  1. 在hadoop1上安装服务端
    yum install -y krb5-libs krb5-server krb5-workstation
  2. 配置文件位置
  • 文件位置 /etc/krb5.confvim /etc/krb5.conf
  • 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_rearellm = false
    ticket_lifetime = 24h # 票据有效期
    renew_lifetime = 7d
    forwardable = true
    rdns = false
    pkinit_anchors = FILE:/etc/pki/tls/certs/ca-bundle.crt
    default_realm = SOFENCY.TOP #默认的域名后缀 即指的是下面[realms]下的值
    default_ccache_name = KEYRING:persistent:%{uid}
    [realms]
    SOFENCY.TOP = {
      kdc = hadoop1.sofency.top
      admin_server = hadoop1.sofency.top
    }
    [domain_realm]
    .sofency.top = SOFENCY.TOP
    sofency.top = SOFENCY.TOP
  • 名词解释
    1. realm 域:表示一个公司或者一个组织,逻辑上授权认证范围
    2. logging块配置日志相关
    3. libdefaults块配置默认的设置,包括ticket的声明周期
    4. realms 是域的配置,可以配置多个realm
    5. domain_realm是kerberos内的域和主机名的域的对应关系 即hadoop1.sofency.top hadoop2.sofency.top等均是SOFENCY.TOP这个realm
  • 配置/var/kerberos/krb5kdc/kdc.conf 按照如下进行修改
[kdcdefaults]
kdc_ports = 88  #端口号
kdc_tcp_ports = 88
[realms]
SOFENCY.TOP = {
  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
}
  • 名词解释
  1. acl_file: kerberos acl的一些配置对应的文件
  2. kerberos admin账户的keytab本地路径
  3. keytab 登陆凭证 有了这个相当于直接有了ticket,可以免密直接登录某个账户,所以这个文件很重要
  1. 初始化kerberos数据库
    kdb5_util create -s -r SOFENCY.TOP 注意SOFENCY.TOP是自己设定的realm
    然后根据命令要求设置数据库master的密码,要求输入两次,一定要记住
    初始化完成后进入 /var/kerberos/krb5kdc下会生成如下几个文件
  2. hadoop kerberos 过期 hadoop集群的kerberos认证_hadoop

  3. kerberos的常规操作
  1. 进入kerberos数据库
    kadmin.local
  2. 展示用户
    listprincs
  3. 创建SOFENCY.TOP域内的管理员 */admin@SOFENCY.TOP的用户拥有所有的权限
    具体在/var/kerberos/krb5kdc/kadm5.acl进行设置
    addprinc root/admin@SOFENCY.TOP
  1. 重启kerberos 并且设置开启自启
systemctl  restart  krb5kdc
systemctl  restart kadmin
chkconfig krb5kdc on
chkconfig kadmin on
Kerberos客户端的安装
  1. 在hadoop2,hadoop3上安装客户端
    yum install -y krb5-libs krb5-workstation
  2. 将服务端/etc/krb5.conf的内容复制到客户端
  3. 测试登录admin (注意test/admin@SOFENCY.TOP是在服务端创建的)
    执行kinit test/admin@SOFENCY.TOP输入密码
    然后klist查看当前账户的信息