HBase クラスターでは、すべてのアカウントは許可なしで、テーブルの無効化、削除などを含む任意の操作を実行し、メジャーコンパクションを実行します。

Kerberos 認証を使用しないクラスターでは、HBase 権限付与が有効な場合でも、ユーザーは ID を偽造してクラスターサービスにアクセスします。 したがって、Kerberos の紹介で詳しく述べるように、高セキュリティクラスター (たとえば、Kerberos 認証がサポートされているクラスター) を作成することを推奨します。

設定の追加

設定管理ページ内の HBase クラスターで、[HBase] > [設定] > [hbase-site] > [カスタム設定] の順に選択します。

以下のパラメーターを追加します。

<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,org.apache.hadoop.hbase.security.token.TokenProvider</value>
</property>

HBase クラスターの再起動

HBase クラスターの設定管理ページで、[HBase] > [操作] > [すべてのコンポーネントの再起動] の順にクリックします。

権限付与 (ACL)

  • 基本概念

    HBase では、権限付与は 3 つの要素で構成されます。構成要素は、特定のエンティティへの特定のリソースのスコープに対する操作権限の付与です。

    • 特定のスコープ内のリソース
      • スーパーユーザー

        スーパーユーザーは任意の操作を実行します。 HBase サービスを実行するアカウントはデフォルトではスーパーユーザーです。 hbase-site.xml の hbase.superuser の値を設定してスーパーユーザーを追加します。

      • グローバル

        グローバルスコープはクラスター内のすべてのテーブルの管理者権限があります。

      • 名前空間

        このスコープは名前空間スコープの権限コントロールがあります。

      • テーブル

        このスコープはテーブルスコープの権限制御があります。

      • カラムファミリー

        このスコープはカラムファミリーの権限コントロールがあります。

      • セル

        このスコープはセルスコープの権限コントロールがあります。

    • 操作権限
      • 読み取り (R)

        特定のスコープのリソースからデータを読み取ります。

      • 書き込み (W)

        特定のスコープのリソースにデータを書き込みます。

      • 実行 (X)

        特定のスコープのコプロセッサを実行します。

      • 作成 (C)

        特定のスコープでテーブルを作成または削除します。

      • 管理 (A)

        特定のスコープで、バランスまたは割り当てなどのクラスター関連の操作を実行します。

    • エンティティ
      • ユーザー

        ユーザーに権限付与します。

      • グループ

        ユーザーグループに権限付与します。

  • 権限付与コマンド
    • grant
      grant <user> <permissions> [<@namespace> [<table> [<column family> [<column qualifier>]]]
      • ユーザーとグループへの権限付与の方法は同じです。 プレフィックス @ をグループに追加する必要があります。
        grant 'test','R','tbl1'   #grant the read permission of the table tb11 to the user test.
          grant '@test','R','tbl1'   #grant the read permission of the table tb11 to the user group test.
      • プレフィックス @ を名前空間に追加する必要があります。
        grant 'test 'C','@ns_1'  #grant the create permission of the namespace @ns_1 to the user test.
    • revoke
    • user_permissions (権限の表示)