本文为您介绍如何开启HBase ACL(授权)。
背景信息
HBase在不开启授权的情况下,任何账号对HBase集群可以进行任何操作,例如disable table、drop table、major compact等。
对于没有Kerberos认证的集群,即使开启了HBase授权,用户也可以伪造身份访问集群服务。所以建议创建高安全模式(即支持Kerberos)的集群,详情请参见Kerberos。
基本概念
授权(ACL)就是将对某个范围的资源的操作权限授予某个实体。
在HBase 中,上述对应的三个概念分别为:
-
某个范围(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-site.xml页签。
-
登录EMR on ECS。
-
在顶部菜单栏处,根据实际情况选择地域和资源组。
-
在EMR on ECS页面,单击目标集群操作列的集群服务。
-
在集群服务页面,单击HBase服务区域的配置。
-
单击hbase-site.xml页签。
-
-
在hbase-site.xml页签,新增或修改以下配置项。
Key
Value
hbase.security.authorization
true
hbase.coprocessor.master.classes
org.apache.hadoop.hbase.security.access.AccessController
hbase.coprocessor.region.classes
org.apache.hadoop.hbase.security.token.TokenProvider,org.apache.hadoop.hbase.security.access.AccessController
hbase.coprocessor.regionserver.classes
org.apache.hadoop.hbase.security.access.AccessController,org.apache.hadoop.hbase.security.token.TokenProvider
-
重启HBase服务。
-
单击右上角的。
-
在弹出的对话框中,输入执行原因,单击确定。
-
在确认对话框中,单击确定。
-
-
授权(ACL)。
-
grant授权
grant <user> <permissions> [<@namespace> [<table> [<column family> [<column qualifier>]]]-
user和group的授权方式一样,但group需要加一个前缀@
grant 'test','R','tbl1' #给用户test授予表tbl1的读权限。 grant '@testgrp','R','tbl1' #给用户组testgrp授予表tbl1的读权限。 -
namespace需要加一个前缀@
grant 'test','C','@ns_1' #给用户test授予namespace ns_1的CREATE权限。
-
-
revoke回收
revoke 'trafodion' #回收trafodion用户的所有权限。 -
user_permission查看权限
user_permission 'TABLE_A' #查看TABLE_A表的所有权限。
-