大数据安全之 authentication - Kerberos 的安装和配置
明哥前段时间跟大家分享了下 《大数据安全之hdfs与hive的Authentication与Authorization》,其中提到大数据生态圈的各个组件,在authenticaton身份认证层面普遍采用的是kerberos方案。
有小伙伴进一步问到,如何在大数据集群中安装配置启用kerberos呢?这个问题中配置启用的具体方法取决于具体使用的大数据平台,需要case by case,比如是自建集成的apache版的,还是cloudera公司的cdh,hdp,抑或 cdp呢?或者星环的tdh, 华为的FusionInsight?笔者在这里先不聊配置启用这块(有机会以后会以cdh或hdp为例写篇博文),单纯聊聊底层安装kerberos这块。
首先看看kerberos的架构:
kerberos是client-server架构,客户端部分提供的是kinit, klist, kdestroy, kpasswd等常见客户端命令;服务端部分主要是两个服务进程 krb5kdc 和 kadmin, 其中前者是Kerberos 5 key distribution center,即 KDC,后者是 "Kerberos 5 Password-changing and Administration";服务端底层还有个数据库Kerberos KDC database,用来存储principal等信息 (kerberos自己实现的数据库,没有使用 mysql, postgresql等);服务端的 kdc 如果有高可用需求,也可以配置两个kdc, 互为主备 (经典主从架构,主提供对外写服务,从只提供读服务,主从之间周期性地同步数据,即:The master KDC contains the writable copy of the realm database, which it replicates to the slave KDCs at regular intervals. All database changes (such as password changes) are made on the master KDC. Slave KDCs provide Kerberos ticket-granting services, but not database administration, when the master KDC is unavailable.)
接下来看看 linux中如何安装kerberos:
常见的linux发行版中都自带了 kerberos 的安装包,通过包管理器直接安装即可,此过程中不需要连接外网。(当然你也可以下载MIT kerberos 的源码进行编译和安装,相对复杂些,这里不赘述源码安装的细节)。比如 centos7 中就自带了kerberos相关包,krb5-server, krb5-workstation等,如下图所示, 直接通过 yum 安装即可。
接下来我们进行kerberos的安装和配置,先简述下步骤:
1. KDC服务端服务器上安装配置:
安装KDC服务:
yum -y install krb5-server krb5-libs krb5-auth-dialog krb5-workstation
修改/etc/krb5.conf配置:
vim /etc/krb5.conf
修改/var/kerberos/krb5kdc/kadm5.acl配置:
vim /var/kerberos/krb5kdc/kadm5.acl
修改/var/kerberos/krb5kdc/kdc.conf配置:
vim /var/kerberos/krb5kdc/kdc.conf
创建Kerberos数据库:
kdb5_util create –r CDH.COM -s
创建Kerberos的管理账号:
kadmin.local登录后:
addprinc admin/admin@CDH.COM
将Kerberos服务添加到自启动服务,并启动krb5kdc和kadmin服务:
systemctl enable/start krb5kdc/kadmin
测试Kerberos的管理员账号: kinit admin/admin@CDH.COM
2. KDC客户端所有节点上安装配置:
安装客户端:
yum -y install krb5-libs krb5-workstation
将KDC Server上的krb5.conf文件拷贝到所有Kerberos客户端:
scp kdc-server:/etc/krb5.conf /etc/
3. KDC服务端添加用户:kadmin.local登录后:
addprinc cloudera-scm/admin@CDH.COM
addprinc hs_cic@CDH.COM
4. KDC客户端测试用户:
kinit hs_cic
kinit cloudera-scm
笔者具体实施安装配置时的截图:
KDC服务端安装命令截图:
配置文件 /etc/krb5.conf内容,注意红色箭头部分:
配置文件 /var/kerberos/krb5kdc/kdc.conf内容,注意红色箭头部分:
配置文件/var/kerberos/krb5kdc/kadm5.acl内容,注意红色箭头部分:
创建创建Kerberos数据库,注意红色箭头部分:
创建Kerberos的管理账号,,注意红色箭头部分:
将Kerberos服务添加到自启动服务,并启动krb5kdc和kadmin服务:
测试Kerberos的管理员账号: kinit admin/admin@CDH.COM:
KDC客户端安装:yum -y install krb5-libs krb5-workstation,截图略;
将KDC Server上的krb5.conf文件拷贝到所有Kerberos客户端:scp kdc-server:/etc/krb5.conf /etc/,截图略;
KDC服务端添加用户:kadmin.local登录后 addprinc 添加用户,截图:
KDC客户端测试用户:kinit hs_cic, kinit cloudera-scm/admin,截图:
Kerberos配置文件默认目录:
/etc/krb5.conf
/var/kerberos/krb5kdc/kdc.conf
/var/kerberos/krb5kdc/kadm5.acl
参考连接:
http://web.mit.edu/kerberos/krb5-devel/doc/admin/install_kdc.html
更多信息请关注公众号:「软件老王」,关注不迷路,软件老王和他的IT朋友们,分享一些他们的技术见解和生活故事。