大数据之CDH数仓(13) | Kerberos安装

    科技2022-07-11  89

    目录

    server节点安装kerberos相关软件client节点安装配置kerberos生成Kerberos数据库赋予Kerberos管理员所有权限启动Kerberos服务(在hadoop102上操作)创建管理员主体/实例kinit管理员验证

    server节点安装kerberos相关软件

    [root@hadoop102 ~]# yum install -y krb5-server krb5-workstation krb5-libs #查看结果 [root@hadoop102 ~]# rpm -qa | grep krb5 krb5-devel-1.15.1-37.el7_7.2.x86_64 krb5-server-1.15.1-37.el7_7.2.x86_64 krb5-workstation-1.15.1-37.el7_7.2.x86_64 krb5-libs-1.15.1-37.el7_7.2.x86_64

    client节点安装

    [root@hadoop103 ~]# yum install -y krb5-workstation krb5-libs [root@hadoop104 ~]# yum install -y krb5-workstation krb5-libs #查看结果 [root@hadoop103 ~]# rpm -qa | grep krb5 krb5-libs-1.15.1-37.el7_7.2.x86_64 krb5-devel-1.15.1-37.el7_7.2.x86_64 krb5-workstation-1.15.1-37.el7_7.2.x86_64

    配置kerberos

    需要配置的文件有两个为kdc.conf和krb5.conf , kdc配置只是需要Server服务节点配置,即hadoop102. 1) kdc配置

    [root@hadoop102 ~]# vim /var/kerberos/krb5kdc/kdc.conf [kdcdefaults] kdc_ports = 88 kdc_tcp_ports = 88 [realms] HADOOP.COM = { #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 max_life = 1d max_renewable_life = 7d supported_enctypes = aes128-cts:normal des3-hmac-sha1:normal arcfour-hmac:normal camellia256-cts:normal camellia128-cts:normal des-hmac-sha1:normal des-cbc-md5:normal des-cbc-crc:normal }

    说明: HADOOP.COM:realm名称,Kerberos支持多个realm,一般全用大写。 acl_file:admin的用户权。 admin_keytab:KDC进行校验的keytab。 supported_enctypes:支持的校验方式,注意把aes256-cts去掉,JAVA使用aes256-cts验证方式需要安装额外的jar包,所有这里不用。 2) krb5文件配置

    [root@hadoop102 ~]# vim /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_realm = false ticket_lifetime = 24h renew_lifetime = 7d forwardable = true rdns = false pkinit_anchors = /etc/pki/tls/certs/ca-bundle.crt default_realm = HADOOP.COM #default_ccache_name = KEYRING:persistent:%{uid} udp_preference_limit = 1 [realms] HADOOP.COM = { kdc = hadoop102 admin_server = hadoop102 } [domain_realm] # .example.com = EXAMPLE.COM # example.com = EXAMPLE.COM

    说明: default_realm:默认的realm,设置 Kerberos 应用程序的默认领域,必须跟要配置的realm的名称一致。 ticket_lifetime:表明凭证生效的时限,一般为24小时。 renew_lifetime : 表明凭证最长可以被延期的时限,一般为一个礼拜。当凭证过期之后,对安全认证的服务的后续访问则会失败。 udp_preference_limit= 1:禁止使用 udp,可以防止一个 Hadoop 中的错误。 realms:配置使用的 realm,如果有多个领域,只需向 [realms] 节添加其他的语句。 domain_realm:集群域名与Kerberos realm的映射关系,单个realm的情况下,可忽略。 3)同步krb5到Client节点

    [root@hadoop102 ~]# xsync /etc/krb5.conf

    生成Kerberos数据库

    下面的密码都是123456 在server节点执行

    [root@hadoop102 ~]# kdb5_util create -s Loading random data Initializing database '/var/kerberos/krb5kdc/principal' for realm 'HADOOP.COM', master key name 'K/M@HADOOP.COM' You will be prompted for the database Master Password. It is important that you NOT FORGET this password. Enter KDC database master key: (输入密码) Re-enter KDC database master key to verify:(确认密码)

    创建完成后/var/kerberos/krb5kdc目录下会生成对应的文件

    [root@hadoop102 ~]# ls /var/kerberos/krb5kdc/ kadm5.acl kdc.conf principal principal.kadm5 principal.kadm5.lock principal.ok

    赋予Kerberos管理员所有权限

    [root@hadoop102 ~]# vim /var/kerberos/krb5kdc/kadm5.acl #修改为以下内容: */admin@HADOOP.COM *

    说明: */admin:admin实例的全部主体 @HADOOP.COM:realm *:全部权限 这个授权的意思:就是授予admin实例的全部主体对应HADOOP.COM领域的全部权限。也就是创建Kerberos主体的时候如果实例为admin,就具有HADOOP.COM领域的全部权限,比如创建如下的主体user1/admin就拥有全部的HADOOP.COM领域的权限。

    启动Kerberos服务(在hadoop102上操作)

    #启动krb5kdc [root@hadoop102 ~]# systemctl start krb5kdc 正在启动 Kerberos 5 KDC: [确定] #启动kadmin [root@hadoop102 ~]# systemctl start kadmin 正在启动 Kerberos 5 Admin Server: [确定] #设置开机自启 [root@hadoop102 ~]# systemctl enable krb5kdc #查看是否设置为开机自启 [root@hadoop102 ~]# systemctl is-enabled krb5kdc [root@hadoop102 ~]# systemctl enable kadmin #查看是否设置为开机自启 [root@hadoop102 ~]# systemctl is-enabled kadmin

    注意:启动失败时可以通过/var/log/krb5kdc.log和/var/log/kadmind.log来查看。

    创建管理员主体/实例

    [root@hadoop102 ~]# kadmin.local -q "addprinc admin/admin" Authenticating as principal root/admin@HADOOP.COM with password. WARNING: no policy specified for admin/admin@HADOOP.COM; defaulting to no policy Enter password for principal "admin/admin@HADOOP.COM": (输入密码) Re-enter password for principal "admin/admin@HADOOP.COM": (确认密码) Principal "admin/admin@HADOOP.COM" created.

    kinit管理员验证

    [root@hadoop102 ~]# kinit admin/admin Password for admin/admin@HADOOP.COM: (输入密码) [root@hadoop102 ~]# klist Ticket cache: FILE:/tmp/krb5cc_0 Default principal: admin/admin@HADOOP.COM Valid starting Expires Service principal 08/27/19 14:41:39 08/28/19 14:41:39 krbtgt/HADOOP.COM@HADOOP.COM renew until 08/27/19 14:41:39

    出现以上红色admin/admin@HADOOP.COM说明没问题 在其他机器尝试:

    [root@hadoop103 ~]# kinit admin/admin Password for admin/admin@HADOOP.COM: (输入密码) [root@hadoop103 ~]# klist Ticket cache: FILE:/tmp/krb5cc_0 Default principal: admin/admin@HADOOP.COM Valid starting Expires Service principal 08/27/19 14:41:39 08/28/19 14:41:39 krbtgt/HADOOP.COM@HADOOP.COM renew until 08/27/19 14:41:39

    如果出现:kadmin: GSS-API (or Kerberos) error while initializing kadmin interface,则重启ntp服务:

    [root@hadoop103 ~]# service ntpd restart 关闭 ntpd: [确定] 正在启动 ntpd:
    Processed: 0.008, SQL: 8