Hbase权限控制

转载来自:https://blog.csdn.net/shenliang1985/article/details/51420332

https://blog.csdn.net/jarth/article/details/52778207

注意:来自官网的一段话,经测试hbase1.2.0-cdh5.13.1是开启的

After hbase-2.x, the default 'hbase.security.authorization' changed. Before hbase-2.x, it defaulted to true, in later HBase versions, the default became false. So to enable hbase authorization, the following propertie must be configured in hbase-site.xml. See HBASE-19483;

<property>
  <name>hbase.security.authorization</name>
  <value>true</value>
</property>

 

1 Hbase权限控制简介
Hbase的权限控制是通过AccessController Coprocessor协处理器框架实现的,可实现对用户的RWXCA的权限控制。

2 配置
配置hbase-site.xml

<property>

<name>hbase.security.authorization</name>

<value>true</value>

</property>

<property>

<name>hbase.coprocessor.master.classes</name>

<value>org.apache.hadoop.hbase.security.access.AccessController</value>

</property>

<property>

<name>hbase.coprocessor.region.classes</name>

<value>org.apache.hadoop.hbase.security.token.TokenProvider,org.apache.hadoop.hbase.security.access.AccessController</value>

</property>

<property>
<name>hbase.superuser</name>
<value>hadoop</value>
</property>

3 使用
3.1 hbase权限验证
1 管理员用户hadoop下对Hbase进行赋权,授予wkz用户对所有表有R,W权限

grant 'wkz','R'

grant 'wkz' ,'W'

#授予用户shenl读、写表wcj的权限

grant 'shenl', 'RW', 'wcj'

#授予用户shenl对表wcj的列族f1的age只读权限

grant 'shenl', 'R', 'wcj', 'f1', 'age'

2 管理员用户hadoop下收回Hbase表的访问权限权限

revoke ‘R’ ‘wcj’

revoke ‘W’ ‘wcj’

3 管理员下hbase表权限

user_permission ‘wcj’

HBase提供的五个权限标识符:RWXCA,分别对应着READ('R'), WRITE('W'), EXEC('X'), CREATE('C'), ADMIN('A')
HBase提供的安全管控级别包括:
Superuser:拥有所有权限的超级管理员用户。通过hbase.superuser参数配置
Global:全局权限可以作用在集群所有的表上。
Namespace :命名空间级。
Table:表级。
ColumnFamily:列簇级权限。
Cell:单元级。
和关系数据库一样,权限的授予和回收都使用grant和revoke,但格式有所不同。grant语法格式:
grant user permissions table column_family column_qualifier
例如,给用户hive分配对表member有读写的权限, 在启用了hbase.security.authorization之后,默认每个用户只能访问当前的表。而之前创建的member表的属主是HBase,其他用户对其没有访问权限。此时我们通过hive来查找:

 

  1. # sudo -u hive hbase shell
  2. > scan 'member'
  3. ERROR: org.apache.hadoop.hbase.security.AccessDeniedException: Insufficient permissions (table=member, action=READ)


在HBase中赋值权限:

  1. > grant 'hive', 'RW', 'member'
  2. 0 row(s) in 0.4660 seconds

给wkz用户赋予表test_www的R权限


然后通过user_permission来查看所有用户权限

  1. > user_permission
  2. User    Table,Family,Qualifier:Permission 
  3. Hive   member,,: [Permission: actions=READ,WRITE]  

(查看表权限加表名)

再在hive中进行查询,此时hive用户已经可以访问。

  1. > scan 'member'
  2. ROW    COLUMN+CELL
  3. Elvis    column=address:city, timestamp=1425891057211, value=Beijing

wkz用户已经可以查看该表

收回权限revoke的语法格式

  1. revoke user table column family column qualifier

收回wkz用户对表"test_www"的R权限

wkz用户无法list表"test_www"

 

收回hive用户在表member上的权限

  1. > revoke 'hive','member'
  2. 0 row(s) in 0.1860 seconds

 

2 hbase权限命令

grant <user> <permissions>[<table>[ <column family>[ <column qualifier> ] ] ]

#grants permissions

revoke <user> <permissions> [<table> [ <column family> [ <column qualifier> ] ] ]

# revokes permissions

user_permission <table> # displaysexisting permissions
 

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值