HBase支持做权限访问控制,HBase的权限访问包括以下5种权限,
- Read(R) 允许对某个scope有读取权限
- Write(W) 允许对某个scope有写入权限
- Execute(X) 允许对某个scope有执行权限
- Create(C) 允许对某个scope有建表、删表权限
- Admin(A) 允许对某个scope做管理操作,如balance、split、snapshot等
这里的Scope包含以下几种,
- superuser 超级用户,一般为hbase用户,有所有的权限
- global 全局权限,针对所有的HBase表都有权限
- namespace namespace下面的所有表权限都有权限
- table 表级别权限
- columnFamily 列族级别权限
- cell 单元格级别权限
HBase的访问控制相关命令主要包括grant/revoke/user_permission,其中grant表示授权,revoke表示回收权限,user_permission用于查询权限。
hbase> grant <user> <permissions> [ @<namespace> [ <table>[ <column family>[ <column qualifier> ] ] ] ] # grants permissions
hbase> revoke <user> <permissions> [ @<namespace> [ <table> [ <column family> [ <column qualifier> ] ] ] # revokes permissions
hbase> user_permission <table>
下面是几个基本的例子,
--1 给trafodion用户授权全局的CA
grant 'trafodion','CA'
--2 回收trafodion用户全局的CA
revoke 'trafodion','CA'
--3 给trafodion用户namespace权限
grant 'trafodion','RWXCA','@TRAF_1500000'
--4 给trafodion用户table权限
grant 'trafodion','RWXCA','TABLE_A'
--5 查看所有用户权限
user_permission
--6 查看某个表的权限
user_permission 'TABLE_A'
--7 查看某个namespace的权限
user_permission '@TRAF_1500000'