HBase ACL 可以实现不同的用户、Group与Namespace、Table、ColumnFamily层级的数据权限控制
基本概念
某个范围(Scope)的资源
| 范围 | 说明 | 
|---|---|
| Superuser | 超级账号可以进行任何操作,运行HBase服务的账号默认是Superuser。也可以通过在hbase-site.xml中配置hbase.superuser的值可以添加超级账号 | 
| Global | Global Scope拥有集群所有table的Admin权限 | 
| Namespace | 在Namespace Scope进行相关权限控制 | 
| Table | 在Table Scope进行相关权限控制 | 
| ColumnFamily | 在ColumnFamily Scope进行相关权限控制 | 
| Cell | 在Cell Scope进行相关权限控制 | 
操作权限
| 操作 | 说明 | 
|---|---|
| Read ( R ) | 读取某个Scope资源的数据 | 
| Write ( W ) | 写数据到某个Scope的资源 | 
| Execute ( X ) | 在某个Scope执行协处理器 | 
| Create ( C ) | 在某个Scope创建/删除表等操作 | 
| Admin ( A ) | 在某个Scope进行集群相关操作,如balance/assign等 | 
实体
| 实体 | 说明 | 
|---|---|
| User | 对某个用户授权 | 
| GROUP | 对某个用户组授权 | 
基本操作
- HBase
 
1  | hbase shell  | 
- Namespace
 
1  | hbase shell  | 
Quick Start
- HBase服务配置
 
hbase-site.xml
1  | <property>  | 
HBase的所有节点服务的配置都要进行添加
- 重启HBase服务
 - 服务器用户配置
 
1  | 创建用户  | 
下方使用test用户名进行讲解说明
- 设置权限
 
1  | 进入hbase环境  | 
- 单纯的namespace需要添加@前缀,user/group的授权方式一样,group需要加一个前缀@
 
1  | grant <user> <permissions> [<@namespace> [<table> [<column family> [<column qualifier>]]]  | 
- 校验权限
 
1  | 进入hbase环境  | 
深入讲解
HBase ACL是基于Linux环境的用户体系,进行对HBase环境权限的控制。上方提到的 test 用户其实就是Linux系统中的用户。HBase管理员为某个租户提供资源权限的时候, 需要先为其创建一个Linux系统的账号,再用管理员的权限为该账号进行权限操作。
可能会出现的问题
hbase-config.sh:No such file or directory
只需将 hbase-config.sh 文件copy一份到提示的目录下即可
sudo -u命令无法执行
使用 su - 方式
- 配置 
hbase-site.xml不起作用 
检查是否HBase服务没有重启,或者是否HBase所有节点都进行了配置
参考文献
http://zhangxiong0301.iteye.com/blog/2244570
http://debugo.com/hbase-access-control/
https://community.pivotal.io/s/article/How-to-control-user-s-access-to-HBASE