HBase权限控制

周末线上HBase集群全部机器报警,紧急上线重启,然后查找原因,通过log看到是人为shutdown, 这是因为线上HBase应用服务器都配置了hbase-site.xml,直接就能连到线上进行操作。这对我们 运维人员来说是个漏洞,需要立刻补上这个漏洞。

相比较MySQL等关系型数据库,HBase的权限控制是在新版本中才加入的,也不如关系型数据库 的权限控制细致,但是足以满足我们的需求。

HBase权限列表
Read (R) - can read data at the given scope
Write (W) - can write data at the given scope
Execute (X) - can execute coprocessor endpoints at the given scope
Create (C) - can create tables or drop tables (even those they did not create) at the given scope
Admin (A) - can perform cluster operations such as balancing the cluster or assigning regions at the given scope
HBase权限范围
HBase权限范围包括Super,Global,Namespace,Table,Cell。对于我们运维来说,DBA用户拥有Super权限, 应用拥有读写权限即可

开启HBase
需要修改hbase-site.xml,添加如下配置:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<property>
<name>hbase.superuser</name>
<value>****</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>

修改完配置文件后,需要重启整个集群

授权
我们主要针对用户进行授权:

1
grant 'username', 'RW'

参考资料
http://www.cloudera.com/content/cloudera/en/documentation/core/v5-2-x/topics/cdh_sg_hbase_authorization.html
https://issues.apache.org/jira/browse/HBASE-8409