本文為您介紹如何開啟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頁面,單擊目的地組群操作列的叢集服務。
在叢集服務頁面,單擊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表的所有許可權。