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]
(从上面这个图来看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集成。