全部產品
Search
文件中心

E-MapReduce:開啟HBase ACL

更新時間:Jul 01, 2024

本文為您介紹如何開啟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

    對某個使用者組授權。

操作步驟

  1. 進入hbase-site.xml頁簽。

    1. 在頂部功能表列處,根據實際情況選擇地區和資源群組

    2. 在EMR on ECS頁面,單擊目的地組群操作列的叢集服務

    3. 叢集服務頁面,單擊HBase服務地區的配置

    4. 單擊hbase-site.xml頁簽。

  2. 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

  3. 重啟HBase服務。

    1. 單擊右上方的更多操作 > 重啟

    2. 在彈出的對話方塊中,輸入執行原因,單擊確定

    3. 確認對話方塊中,單擊確定

  4. 授權(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表的所有許可權。