文章目录
一、业务背景
大数据集群最基本的就是数据以及用于计算的资源,是一个公司的宝贵财富,我们需要将它们很好管理起来,将相应的数据和资源开放给对应的用户使用,防止被窃取、被破坏等,这就涉及到大数据安全。
现状&&需求
目前我们大数据集群的现状是处于裸奔状态,只要可以登录linux机器即可对集群继续相关操作
所以集群安全对于我们来说迫在眉睫,主要需求有以下几个方面:
- 支持多组件,最好能支持当前公司技术栈的主要组件,HDFS、HBASE、HIVE、YARN、STORM、KAFKA等
- 支持细粒度的权限控制,可以达到HIVE列,HDFS目录,HBASE列,YARN队列,STORM拓扑,KAKFA的TOPIC
- 开源,社区活跃,按照现有的集群改情况造改动尽可能的小,而且要符合业界的趋势。
二、大数据安全组件介绍与对比
目前比较常见的安全方案主要有三种:
- Kerberos(业界比较常用的方案)
- Apache Sentry(Cloudera选用的方案,cdh版本中集成)
- Apache Ranger(Hortonworks选用的方案,hdp发行版中集成)
1、Kerberos
Kerberos是一种基于对称密钥的身份认证协议,它作为一个独立的第三方的身份认证服务,可以为其它服务提供身份认证功能,且支持SSO(即客户端身份认证后,可以访问多个服务如HBase/HDFS等)。
服务名 | 作用 |
---|---|
KDC | Kerberos的服务端程序,用于验证各个模块 |
Client | 需要访问服务的用户,KDC和Service会对用户的身份进行认证 |
Service | 即集成了Kerberos的服务,如HDFS/YARN/HBase等 |
Kerberos协议过程主要有三个阶段,第一个阶段Client向KDC申请TGT,第二阶段Client通过获得的TGT向KDC申请用于访问Service的Ticket,第三个阶段是Client用返回的Ticket访问Service。
优点:
-
服务认证,防止broker datanode regionserver等组件冒充加入集群
-
解决了服务端到服务端的认证,也解决了客户端到服务端的认证
缺点:
-
kerberos为了安全性使用临时ticket,认证信息会失效,用户多的情况下重新认证繁琐
-
kerberos只能控制你访问或者拒绝访问一个服务,不能控制到很细的粒度,比如hdfs的某一个路径,hive的某一个表,对用户级别上的认证并没有实现(需要配合LDAP)
2、Apache Sentry
Apache Sentry是Cloudera公司发布的一个Hadoop安全开源组件,它提供了细粒度级、基于角色的授权.
优点:
-
Sentry支持细粒度的hdfs元数据访问控制,对hive支持列级别的访问控制
-
Sentry通过基于角色的授权简化了管理,将访问同一数据集的不同特权级别授予多个角色
-
Sentry提供了一个统一平台方便管理
-
Sentry支持集成Kerberos
缺点:
- 组件只支持hive,hdfs,impala 不支持hbase,yarn,kafka,storm等
3、Apache Ranger
Apache Ranger是Hortonworks公司发布的一个Hadoop安全组件开源组件
优点:
- 提供了细粒度级(hive列级别)
- 基于访问策略的权限模型
- 权限控制插件式,统一方便的策略管理
- 支持审计日志,可以记录各种操作的审计日志,提供统一的查询接口和界面
- 丰富的组件支持(HDFS,HBASE,HIVE,YARN,KAFKA,STORM)
- 支持和kerberos的集成
- 提供了Rest接口供二次开发
4、为什么我们选择Ranger
- 多组件支持(HDFS,HBASE,HIVE,YARN,KAFKA,STORM),基本覆盖我们现有技术栈的组件
- 支持审计日志,可以很好的查找到哪个用户在哪台机器上提交的任务明细,方便问题排查反馈
- 拥有自己的用户体系,可以去除kerberos用户体系,方便和其他系统集成,同时提供各类接口可以调用
综上:我们考虑到和开放平台的集成,以及我们的技术栈和集群操作的审计等几个问题最终选用了apache ranger
三、Apache Ranger系统架构及实践
1、架构介绍
2、组件介绍
- RangerAdmin
以RESTFUL形式提供策略的增删改查接口,同时内置一个Web管理页面。
- Service Plugin
嵌入到各系统执行流程中,定期从RangerAdmin拉取策略,根据策略执行访问决策树,并且记录访问审计
插件名称 | 安装节点 |
---|---|
Hdfs-Plugin | NameNode |