kerberos关键知识点

参考以下资料,及《OReilly.Architecting.Modern.Data.Platforms》

https://www.cnblogs.com/wn1m/p/10700466.html

https://www.jianshu.com/p/fc2d2dbd510b

https://help.aliyun.com/document_detail/89886.html?spm=a2c4g.11186623.4.1.37a6b019HkcGLQ

 

kerberos是一个网络通信身份认证,包含user和service的认证。

 

principal分为两种类型:user、service

对于user,一般有三部分组成,例如zhangsan/[email protected]  名称/角色@域名,可以不要角色直接是[email protected]

service,如yarn/[email protected]

kerberos关键知识点

kerberos关键知识点

(从上面这个图来看acl定义的范围不限于一个服务,比如将yarn拆成了两个权限控制,所以不能说简单说kerberos就是只能控制到service这一层,而service内部还可继续拆分更细的service。)

 

在KDC上我们需要编辑acl(Access Control List)文件来设置权限,该acl文件的默认路径是 /var/kerberos/krb5kdc/kadm5.acl(也可以在文件kdc.conf中修改)。Kerberos的kadmind daemon会使用该文件来管理对Kerberos database的访问权限。对于那些可能会对pincipal产生影响的操作,acl文件也能控制哪些principal能操作哪些其他pricipals。

https://web.mit.edu/kerberos/krb5-latest/doc/admin/conf_files/kadm5_acl.html?highlight=acl

EXAMPLE

Here is an example of a kadm5.acl file:

*/[email protected]    *                               # line 1

[email protected]   ADMCIL                          # line 2

joeadmin/*@ATHENA.MIT.EDU i   */[email protected]       # line 3

*/[email protected]     ci  *[email protected]           # line 4

*/[email protected]     l   *                           # line 5

[email protected]        x   * -maxlife 9h -postdateable # line 6

 

    目前来看kerberos是用来做user和service或者service和service之间权限认证的,就是说 A用户是否有权限访问某个服务,或者服务A是否有权限访问服务B,同时这个权限用ticket表示,这个ticket有时间限制。而这个用户在kerberos中用principal表示,有自己个格式要求,如上文所示。我们对于这个用户的创建管理可以用LDAP来实现,所以经常看到的是kerberos+LDAP实现鉴权服务。

    我们对大数据的安全需求似乎更应该叫多租户需求,因为我的需求更像是哪些人具有使用什么服务的权限。

    kerberos+LDAP的网络认证服务应用访问广泛,不仅仅在大数据中,是一种粗粒度、应用范围广的网络用户、服务鉴权协议。

而ranger和sentry是大数据中一个权限组件,是细粒度的权限服务,他们也可以和kerberos集成。