HBase在不開啟授權的情況下,任何帳號對HBase叢集可以進行任何操作,比如disable table/drop table/major compact等等。
说明
對於沒有Kerberos認證的叢集,即使開啟了HBase授權,使用者也可以偽造身份訪問叢集服務。所以建議建立高安全模式(即支援Kerberos)的叢集,詳見Kerberos簡介。
添加配置
在HBase叢集的組態管理頁面選擇
添加如下幾個參數:
<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叢集的組態管理頁面選擇
。授權(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進行相關許可權控制。
- Superuser
- 操作許可權
- Read (R)
讀取某個Scope資源的資料。
- Write (W)
寫資料到某個Scope的資源。
- Execute (X)
在某個Scope執行副處理器。
- Create (C)
在某個Scope建立/刪除表等操作。
- Admin (A)
在某個Scope進行叢集相關操作,如balance/assign等。
- Read (R)
- 某個實體
- User
對某個使用者授權。
- Group
對某個使用者組授權。
- User
- 某個範圍(Scope)的資源
- 授權命令
- 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許可權
- user/group的授權方式一樣,group需要加一個首碼@
- revoke 回收
- user_permissions 查看許可權
- grant 授權