winway / commentRepo

commenyRepo
0 stars 0 forks source link

大数据生态认证、权限控制机制概述 | winway's blog #23

Open winway opened 2 years ago

winway commented 2 years ago

https://winway.github.io/2022/04/02/kerberos-ranger/

引言 认证方案比较 开启kerberos认证 权限控制方案比较 开启ranger权限控制 思考 参考资料 引言大数据生态组件众多,需要能够提供统一的认证、权限控制功能的系统。本文重点介绍:用于认证的kerberos和用于权限控制的ranger。kerberos解决”who are you“的问题,ranger解决”what you can do“的问题,这两个组件可以配合使用,也可以单独使

HwiLu commented 1 year ago

只用ldap不开启kerberos可以吗?无论是hdfs 、Hive、Yarn还是zeppelin,最后认证的都是linux终端用户,zeppelin集成了ldap的话就是ldap用户,也可以做认证呀? 其他用户也无法登录我的用户。这样不是可以满足要求吗?

HwiLu commented 1 year ago

Kerberos依旧存在风险呀,keytab文件被有些项目组自己扩散之后,我登录客户端就可以直接kinit他的用户了,这样不是也有漏洞么? 博主,求沟通。我们现在只开了ldap没有启用kerberos,我没有找到哪里有漏洞,还是说没有kerberos用户可以指定用户去使用组件,比如说spark-submit的--proxy-user 。 但我试了并不行

winway commented 1 year ago

@HwiLu Kerberos依旧存在风险呀,keytab文件被有些项目组自己扩散之后,我登录客户端就可以直接kinit他的用户了,这样不是也有漏洞么? 博主,求沟通。我们现在只开了ldap没有启用kerberos,我没有找到哪里有漏洞,还是说没有kerberos用户可以指定用户去使用组件,比如说spark-submit的--proxy-user 。 但我试了并不行

我印象并不是所有组件都支持ldap认证,比如hdfs就不支持,yarn可能也不支持。但是如果你只是需要在个别组件层面增加认证环节,比如hiveServer、zeppelin,用ldap没有问题。 kerberos确实比较重,用起来也麻烦,但是不用kerberos的话,linux的终端用户是比较容易伪造的,如果你们能做到保证登陆到linux的用户都是经过ldap认证的,而且用户没有办法切换用户,理论上也是没有问题的。 至于keytab扩散,确实有这个问题,但这属于流程管理方面的问题,毕竟ldap密码也可泄露。

HwiLu commented 1 year ago

@HwiLu Kerberos依旧存在风险呀,keytab文件被有些项目组自己扩散之后,我登录客户端就可以直接kinit他的用户了,这样不是也有漏洞么? 博主,求沟通。我们现在只开了ldap没有启用kerberos,我没有找到哪里有漏洞,还是说没有kerberos用户可以指定用户去使用组件,比如说spark-submit的--proxy-user 。 但我试了并不行

我印象并不是所有组件都支持ldap认证,比如hdfs就不支持,yarn可能也不支持。但是如果你只是需要在个别组件层面增加认证环节,比如hiveServer、zeppelin,用ldap没有问题。 kerberos确实比较重,用起来也麻烦,但是不用kerberos的话,linux的终端用户是比较容易伪造的,如果你们能做到保证登陆到linux的用户都是经过ldap认证的,而且用户没有办法切换用户,理论上也是没有问题的。 至于keytab扩散,确实有这个问题,但这属于流程管理方面的问题,毕竟ldap密码也可泄露。

谢谢博主。 我们现在是只开起了ldap认证。客户端机器都是ldap用户,没有本地用户,只有root可以随便切用户,别的有用户是没有办法切换的,除非知道对方密码。另外我们的组件比如HDFS、Yarn、Hive都使用ranger进行权限管理,zeppelin集成了ldap,每个用户隔离,使用ranger鉴权。话说请问Linux终端用户可以如何伪造?

winway commented 1 year ago

@HwiLu

@HwiLu Kerberos依旧存在风险呀,keytab文件被有些项目组自己扩散之后,我登录客户端就可以直接kinit他的用户了,这样不是也有漏洞么? 博主,求沟通。我们现在只开了ldap没有启用kerberos,我没有找到哪里有漏洞,还是说没有kerberos用户可以指定用户去使用组件,比如说spark-submit的--proxy-user 。 但我试了并不行

我印象并不是所有组件都支持ldap认证,比如hdfs就不支持,yarn可能也不支持。但是如果你只是需要在个别组件层面增加认证环节,比如hiveServer、zeppelin,用ldap没有问题。 kerberos确实比较重,用起来也麻烦,但是不用kerberos的话,linux的终端用户是比较容易伪造的,如果你们能做到保证登陆到linux的用户都是经过ldap认证的,而且用户没有办法切换用户,理论上也是没有问题的。 至于keytab扩散,确实有这个问题,但这属于流程管理方面的问题,毕竟ldap密码也可泄露。

谢谢博主。 我们现在是只开起了ldap认证。客户端机器都是ldap用户,没有本地用户,只有root可以随便切用户,别的有用户是没有办法切换的,除非知道对方密码。另外我们的组件比如HDFS、Yarn、Hive都使用ranger进行权限管理,zeppelin集成了ldap,每个用户隔离,使用ranger鉴权。话说请问Linux终端用户可以如何伪造?

了解一下这个变量, HADOOP_USER_NAME, 是可以指定当前用户名的。 比如我登录到一台linux机器,设置一下环境变量HADOOP_USER_NAME=HwiLu 又比如我在本机用java api访问hdfs, System.setProperty("HADOOP_USER_NAME", "HwiLu"); 就相当于在用你的身份访问hdfs。

还有这种,更hack的方式 https://stackoverflow.com/questions/11444079/hacking-whoami-to-return-a-fake-username