关于LDAP和Kerberos

两个对比

首先,Kerberos是一个认证的方法。LDAP是一个为了沟通兼容LDAP数据库的协议。

LDAP比较不方便(刚开始上手感觉很难),但是简单。相反,Kerberos比较方便但更复杂。

Kerberos比LDAP更安全。

它们是完全不同用途的完全不同协议。
我认为人们倾向于将两者放在一起是因为通常一个项目会把它们会放到同一个package下

简单地说:
LDAP是一个访问目录的协议(比如:OpenLDAP或者目录)。
它的部分功能是,它有能力去通过账号密码认证一个连接。

Kerberos是一个认证和一个单登入协议。
它让一个进程去认证一个提供登陆后并且加密的ticket(进程用来访问文件,程序等资源)的服务器
因为进程可以保存ticket然后用它来访问不同的程序,同时避免了用户再次认证。

LDAP是干嘛的

LDAP就是花名册,LDAP服务器就是门卫处的老大爷。
对着花名册看你是不是里面的人,决定放不放你进来。

没人喜欢记忆一大堆混乱的账号和密码,员工不喜欢,企业更不喜欢。
这样基于LDAP的统一账号体系就搭建完成了,员工可以用一个账号和密码来访问和对接全部软件和研发工具,
公司的众多软件基础设施也开始能从账户层面进行简单明确的管理了。

Kerberos在Ubuntu18上的安装

安装server端

sudo apt-get install krb5-admin-server krb5-kdc
然后会弹出一个输入框:输入realm(这里我设为DENNIS.COM)
然后输入kerberos server for your realm:我输入为我当前的hostname device2
然后输入administrative server for kerberos realm:我输入为我当前的hostname device2

下一步是:
sudo kdb5_util create -r DENNIS.COM -s

下一步启动service:
sudo service krb5-kdc restart
sudo service krb5-admin-server restart

测试新用户:
kinit dennis/admin
klist 列出缓存的Kerberos票据
klist

安装client

一旦用户成功登陆到操作系统,他即可访问任何kerberized服务。
sudo apt-get install krb5-user

创建新的管理员用户(实体)
sudo kadmin.local
进入shell交互
输入 addprinc dennis/admin
然后输入两次密码
再quit退出

验证用户:
kinit dennis/admin
然后klist查看

为kdc-client添加秘钥 keytab
先进入kdc-server, kadmin.local 进入交互模式
addprinc hdfs/agent@DENNIS.COM

xst -norandkey -k hdfs.keytab hdfs/agent@DENNIS.COM

然后回到client机器上, 新增hdfs的Linux账号,输入命令kinit加载秘钥。
执行:kinit -k -t hdfs.keytab hdfs/agent@DENNIS.COM

如下是principals的介绍

1
2
3
4
5
6
7
8
9
Kerberos Principals
kerberos中最重要的概念是principal,在这里就再带一遍。
Principal可以理解为用户或服务的名字,全集群唯一,由三部分组成:username(or servicename)/instance@realm,
例如:nn/host001@TEST.COM,host001为集群中的一台机器;或admin/admin@TEST.COM,管理员账户。
username or servicename:在本文里为服务,HDFS的2个服务分别取名为nn和dn,即namenode和datanode
instance:在本文里为具体的FQDN机器名,用来保证全局唯一(比如多个datanode节点,各节点需要各自独立认证)
realm:域,我这里为http://TEST.COM(全大写哟)

Reference

https://juejin.im/entry/5aec6ac46fb9a07ac3635884
https://zhuanlan.zhihu.com/p/32732045
https://help.ubuntu.com/lts/serverguide/openldap-server.html

https://zhuanlan.zhihu.com/p/34556597
https://www.cnblogs.com/yinzhengjie/p/10765503.html
https://blog.gmem.cc/kerberos-under-ubuntu
http://www.out1kiss.me/?p=538
https://blog.csdn.net/bluishglc/article/details/84892155