kerberos认证服务搭建

    之前有段时间公司的kerberos认证老是出问题,因而我便不经深入调查,便先入为主地认为这就是MIT用来发paper的东西,毫无实用性,是为技术而技术的典范。为什么一定要它呢?我们搭的小hadoop集群没有它也能够运行正常。直到昨天,我需要把一个java程序部署到yarn上,在运行第一个极简单的示例时便报错了:```simple authentication is not enabled```。Google一下,发现yarn不支持simple的鉴权模式,必须上kerberos!这样的设计是基于如下一个场景:一台在信任列表外的机器,向yarn提交一个恶意的程序,便可以在整个集群上以linux-executor的执行用户做任何事情。这是应当避免的,而我也需要将5台机器上的hadoop的权限认证迁移到kerberos上。

    首先应该搭建一个kerberos认证服务器。这个参考文献比我看到的所有其他的都好:http://web.mit.edu/kerberos/krb5-1.14/doc/admin/install_kdc.html。以下逐步记录以下,以备将来查询。

export KRB5_CONFIG=/yourdir/krb5.conf
export KRB5_KDC_PROFILE=/yourdir/kdc.conf

 因为这5台机器需要同时访问公司的大kerberos,所以我们在一台机器上另建一个kerberos服务器,并配置以上环境变量,以便与另一套配置文件区分。

[libdefaults]
default_realm = MAOYAN.COM              // 默认的domain,这样在kinit中,便可以省略了
allow_weak_crypto = false              // 强加密如弱加密,不明白是什么意思,先禁掉 dns_lookup_realm
= false               // 不走DNS,这几台机器的域名解析都已经相互配置到hosts里了 dns_lookup_kdc = false ticket_lifetime = 24h                // ticket 过期时间 renew_lifetime = 7d                 // ticket 可延期的时间,默认是0 forwardable = true                  // ticket 是否可转发。注意,最严格的限制点在服务器端的配置 udp_preference_limit = 1              // 大小超过这一限制时,先整TCP;尚不清楚单位是字节还是什么 [realms] MAOYAN.COM = { kdc = dx-movie-data-hadoop05:88        // kdc服务器,如果是master/slave模式,就重复地多写几行 admin_server = dx-movie-data-hadoop05:749  // kdc主服务器,如果有多台,也多写几行 default_domain = MAOYAN.COM           // 应该是kerberos 4和5之间兼容用的 } [appdefaults]

以上是krb5.conf文件的内容。注释是另填上的,真正配置的时候请删除之。

kdc.conf配置如下:

[kdcdefaults]
kdc_ports = 88,750           // kerberos监听的udp端口;kdc_tcp_ports可以同理配置tcp端口。后者如果不设置,默认监听88

[realms]
MAOYAN.COM = {
    kadmind_port = 749        // kadmind这个daemon监听的端口
    acl_file = /opt/maoyan-kerberos/var/krb5kdc/kadm5.acl  // 访问控制列表文件
    database_name = /opt/maoyan-kerberos/var/krb5kdc/principal  // kerberos数据库文件路径
    dict_file = /usr/share/dict/words                // unix系统的字典文件路径,这里面的字符串是禁止作为密码的
master_key_type
= aes256-cts    // 这个是默认 max_renewable_life = 7d 0h 0m 0s supported_enctypes = aes256-cts:normal aes128-cts:normal } [logging] kdc = FILE:/opt/maoyan-kerberos/var/logs/krb5kdc.log admin_server = FILE:/opt/maoyan-kerberos/var/logs/kadmind.log default = FILE:/opt/maoyan-kerberos/var/logs/krb5libs.log

 

 配置完这两个文件之后,便可以生成kerberos的数据库了: kdb5_util create -r MAOYAN.COM 。执行时会要求设置密码,完成后会生成上面设置的```database_name```文件。

接下来,手动创建上面设置的acl_file文件。这个文件控制了持有哪些principal的会话可以修改principal本身的元数据,包括添加、修改、删除principal等。这个文件中的内容从略,上面给的链接中可以找到。

下面,执行 kadmin.local 命令。注意,如果你把database_name设置到了root用户才能修改的目录,那么这里将同样需要root权限。执行完这个命令之后,将进入kerberos的管理界面,你可以在上面执行对principal的DDL操作了。比如:

addprinc sankuai/admin@MAOYAN.COM;
xst -k /home/qupeng/maoyan.keytab sankuai/admin;

 

接下来,我们就可以使用sankuai/admin这个principal签入kerberos认证了;并且如果在acl文件中恰当地配置了admin访问元数据的权限,那么sankuai也将可以执行addprinc等操作了。

最后,执行:

krb5kdc && kadmind

 

这一bash命令,kerberos服务便搭建成功,可以使用了。

未完待续:kerberos的认证过程。William Stallings的书上有写,然而上学的时候没认真看,出来混终于还是要还的。

转载于:https://www.cnblogs.com/qupeng/p/5143120.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值