一、权限访问类型

1、HBase支持做权限访问控制,HBase的权限访问包括以下5种权限
  1. Read( R ) 允许对某个scope有读取权限
  2. Write( W ) 允许对某个scope有写入权限
  3. Execute( X ) 允许对某个scope有执行权限
  4. Create( C ) 允许对某个scope有建表、删表权限
  5. Admin( A ) 允许对某个scope做管理操作,如balance、split、snapshot等
2、Scope包含以下几种
  1. superuser 超级用户,一般为hbase用户,有所有的权限
  2. global 全局权限,针对所有的HBase表都有权限
  3. namespace namespace下面的所有表权限都有权限
  4. table 表级别权限
  5. columnFamily 列族级别权限
  6. cell 单元格级别权限
3、命名空间namespace
1)namespace指的是一个表的逻辑分组,同一组中的表有类似的用途。

命名空间的概念为即将到来的多租户特性打下基础:

  1. 配额管理(Quota Management
    (HBASE-8410)):限制一个namespace可以使用的资源,资源包括region和table等;
  2. 命名空间安全管理(Namespace Security Administration
    (HBASE-9206)):提供了另一个层面的多租户安全管理;
  3. Region服务器组(Region server groups
    (HBASE-6721)):一个命名空间或一张表,可以被固定到一组regionservers上,从而保证了数据隔离性。
2)有两个系统内置的预定义命名空间:
  1. hbase:系统命名空间,用于包含hbase的内部表。
  2. default:所有未指定命名空间的表都自动进入该命名空间。

二、HBase的访问控制相关命令

HBase的访问控制相关命令主要包括grant/revoke/user_permission,其中grant表示授权,revoke表示回收权限,user_permission用于查询权限。

1、语法
hbase> grant <user> <permissions> [ @<namespace> [ <table>[ <column family>[ <column qualifier> ] ] ] ]
hbase> revoke <user> <permissions> [ @<namespace> [ <table> [ <column family> [ <column qualifier> ] ] 
hbase> user_permission <table> 
2、实操
#1 给root用户授权全局的CA
grant 'root','RWXCA'

#2 回收root用户全局的CA
revoke 'root','RWXCA'

#3 给root用户namespace权限
grant 'root','RWXCA','@TRAF_1500000'

#4 给root用户table权限
grant 'root','RWXCA','agatha'

#5 查看所有用户权限
user_permission

#6 查看某个表的权限
user_permission 'agatha'

#7 查看某个namespace的权限
user_permission '@TRAF_1500000'

#8 创建namespace
create_namespace 'ns1'

#9 列出所有namespace
list_namespace

#10 查看namespace
describe_namespace 'ns1'

#11 删除namespace
drop_namespace 'ns1'

#12 在namespace下创建表
create 'ns1:testtable', 'cf1','cf2'

#13 查看namespace下的表
list_namespace_tables 'ns1'

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

三、报错:Grant无权限(acl文件少了)

1、给权限的时候显示Security features are not available

在这里插入图片描述

2、查看master少了个acl表

在这里插入图片描述
在这里插入图片描述

3、在hbase-site.xml里添加以下配置开启授权acl
<property>
   <name>hbase.superuser</name>
   <value>niit01</value>
</property>
<property>
  <name>hbase.coprocessor.region.classes</name>    
  <value>org.apache.hadoop.hbase.security.access.AccessController</value>
</property>
<property>
  <name>hbase.coprocessor.master.classes</name>
  <value>org.apache.hadoop.hbase.security.access.AccessController</value>
</property>
<property>
  <name>hbase.rpc.engine</name>
  <value>org.apache.hadoop.hbase.ipc.SecureRpcEngine</value>
</property>
<property>
   <name>hbase.security.authorization</name>
   <value>true</value>
</property>
4、重启hbase再查就有acl了,然后grant等授权命令也可以了

在这里插入图片描述

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐