内容简介: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 属性?如何正确实现这个属性?
- 自己实现集合框架(十):顺序栈的实现
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Pro CSS and HTML Design Patterns
Michael Bowers / Apress / April 23, 2007 / $44.99
Design patterns have been used with great success in software programming. They improve productivity, creativity, and efficiency in web design and development, and they reduce code bloat and complexit......一起来看看 《Pro CSS and HTML Design Patterns》 这本书的介绍吧!