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