zoukankan      html  css  js  c++  java
  • [转]kerberos在Cloudera manager +CDH中的运用实践



    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集群零时调整到非安全状态,从而继续数据分析任务。

  • 相关阅读:
    Blender 3DOne
    [翻译]XNA外文博客文章精选之sixteen(中)
    实习技术员的基本功(二)
    [翻译]XNA外文博客文章精选之fifteen
    实习技术员的基本功(三)
    [翻译]XNA外文博客文章精选之sixteen(下)
    实习技术员的基本功(一)
    [翻译]XNA外文博客文章精选之sixteen(上)
    思维导图
    MySQL error 1045(28000): Access denied for user ...
  • 原文地址:https://www.cnblogs.com/zhangrui153169/p/12485348.html
Copyright © 2011-2022 走看看