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

  • 相关阅读:
    CCF CSP 题解
    CCF CSP 2019032 二十四点
    CCF CSP 2018121 小明上学
    CCF CSP 2019092 小明种苹果(续)
    CCF CSP 2019091 小明种苹果
    CCF CSP 2019121 报数
    CCF CSP 2019031 小中大
    CCF CSP 2020061 线性分类器
    CCF CSP 2020062 稀疏向量
    利用国家气象局的webservice查询天气预报(转载)
  • 原文地址:https://www.cnblogs.com/zhangrui153169/p/12485348.html
Copyright © 2020-2023  润新知