概述
以 Hortonworks Data Platform (HDP) 平台为例 ,hadoop 大数据平台的安全机制包括以下两个方面:
身份认证 即核实一个使用者的真实身份, 一个使用者来使用大数据引擎平台, 这个使用者需要表明自己是谁, 即提供自己的身份证明, 大数据平台需要检验这个证明, 确定这个证明是有效的, 且不是伪造的. 否则, 就拒绝这个使用者进入大数据引擎.
授权管理 这个使用者的真实身份核实之后, 需要对这个使用者的使用权限进行界定, 即这个使用者在大数据平台中能够使用什么组件, 能够获取哪些资源, 能够对资源进行哪些操作进行管理.
身份认证
大数据平台一般使用基于 Kerberos 的身份认证机制
概述
简单来说, 大数据平台中有一个专门的认证服务器 KDC, 可以把它看作是户籍派出所, 可事先给所有的平台使用者 (人用户以及机器和程序用户) 发放户籍证明, 即 keytab(密钥). 之后每个用户要使用大数据平台, 就要拿着这个证明先去 KDC 认证, 认证无误之后, 才能够使用大数据平台引擎.
操作示例
首先要对整个平台进行 kerberos 化, hdp ambari 提供了傻瓜式操作, 另附文章介绍.
如上图, kerberos 化后, 我们对 ambari 管理界面进行了二次开发. 在这里创建本地用户的时候, 已经同步向 KDC 服务器注册了该用户的相关信息, 同时生成了该用户的 keytab, 点击用户, 进入详情页可下载密钥. 之后该用户来使用大数据平台(无论是命令行还是 API 调用还是其他什么方式), 必须先携带 keytab 去 KDC 进行认证. 这里以命令行的方式举例, 例如某个用户需要使用 hadoop 去读取 hdfs 上面的文件. 他需要先亮明自己的身份, 即执行命令:
kinit -k -t keytab 路径 用户名 这样之后再去执行 hdfs 等命令的时候才能够认证通过, 而不会报错:
Exception encountered while connecting to the server : javax.security.sasl.SaslException: GSS initiate failed [Caused by GSSException: No valid credentials provided (Mechanism level: Failed to find any Kerberos tgt)]
授权管理
大数据平台使用基于 ranger 的授权管理. 授权管理是应该是建立在身份认证之上的, 试想以下, 如果连身份都无法确认的话, 那你的任何授权都是不可靠的(你确定你把权限授予了正确的人吗), 你的授权管理其实是空中阁楼.
概述
ranger 提供了基于资源的授权管理机制, 所谓资源就是大数据平台中的各组件(例如 hdfs,hive,hbase 等), 以及组件内的具体资源(例如 hdfs 的某个路径, hive,hbase 中的某个表). 某个组件资源对应于 ranger 中的 service(服务), 在单个 service 中创建策略就可以对这个组件的具体资源进行用户的权限管理了.
操作指南
我们对 ambari 界面进行了二次开发, 将 ranger 原生界面移植过来
如图, 以此为例, ranger 自动探测并生成平台中各个组件服务, 点击进入服务详情
增加或者编辑策略即可对具体资源进行授权管理了. 如上图, 我们授予了 testranger 用户对 hbase 所有表的所有列的所有操作权限. 如果编辑这个策略, 删除 testranger 这个用户, 那么这个用户在 hbase 做查询等操作的时候就会出错:
ERROR: org.apache.hadoop.hbase.security.AccessDeniedException: Insufficient permissions for user 'testranger@EXAMPLE.COM',action: scannerOpen, tableName:test, family:f1
另外也可以新建新的策略来管理, 策略提供了细粒度的权限管理方式, 详细可参考 ranger 官网.
来源: https://www.cnblogs.com/hdpdriver/p/11306177.html