内容简介:HBase ACL 可以实现不同的用户、Group与Namespace、Table、ColumnFamily层级的数据权限控制HBase的所有节点服务的配置都要进行添加下方使用test用户名进行讲解说明
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
# hbase shell # 查看存在哪些表 list # 创建表 create '表名称', '列名称1','列名称2','列名称N' # 添加记录 put '表名称', '行名称', '列名称:', '值' # 查看记录 get '表名称', '行名称' # 查看表中的记录总数 count '表名称' # 删除记录 delete '表名' ,'行名称' , '列名称' # 删除一张表 先要屏蔽该表,才能对该表进行删除,第一步 disable '表名称' 第二步 drop '表名称' # 查看所有记录 scan "表名称" # 查看某个表某个列中所有数据 scan "表名称" , ['列名称:'] # 更新记录 就是重写一遍进行覆 # 退出 HBASE SHELL环境 exit
- Namespace
# hbase shell # 创建namespace create_namespace 'ns' # 删除namespace drop_namespace 'ns' # 查看namespace describe_namespace 'ns' # 列出所有namespace list_namespace # 在namespace下创建表 create 'ns:test_table', 'fm1' # 查看namespace的表 list_namespace_tables 'ns'
Quick Start
- HBase服务配置
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.coprocessor.regionserver.classes</name> <value>org.apache.hadoop.hbase.security.access.AccessController</value> </property>
HBase的所有节点服务的配置都要进行添加
- 重启HBase服务
- 服务器用户配置
# 创建用户 adduser <userName> # 复制hbase-config.sh文件 cp bin/hbase-config.sh /home/<userName>/hbase-config.sh
下方使用test用户名进行讲解说明
- 设置权限
# 进入hbase环境 hbase shell # 创建namespace create_namespace 'ns' # 创建表 create 'ns:test_table', 'fm1' # 给 test 用户授于ns:test_table表RW权限 grant 'test','RW','ns:test_table' (1) # 查看权限 user_permission 'ns:test_table'
- 单纯的namespace需要添加@前缀,user/group的授权方式一样,group需要加一个前缀@
grant <user> <permissions> [<@namespace> [<table> [<column family> [<column qualifier>]]] # 权限回收所有 revoke 'test' # 权限回收指定内容 revoke 'test','ns:test_table'
- 校验权限
# 进入hbase环境 # sudo -u test hbase shell su - test hbase shell # 查看HBase表列表 list # 或者使用test账号登录服务器进行查看
深入讲解
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所有节点都进行了配置
以上所述就是小编给大家介绍的《HBase ACL 实现》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
猜你喜欢:- php如何实现session,自己实现session,laravel如何实现session
- AOP如何实现及实现原理
- webpack 实现 HMR 及其实现原理
- Docker实现原理之 - OverlayFS实现原理
- 为什么实现 .NET 的 ICollection 集合时需要实现 SyncRoot 属性?如何正确实现这个属性?
- 自己实现集合框架(十):顺序栈的实现
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。