このトピックでは、HBaseアクセス制御リスト(ACL)機能を有効にする方法について説明します。
背景情報
HBase ACLが無効になっている場合、すべてのアカウントがHBaseクラスタにアクセスしてすべての操作を実行できます。たとえば、すべてのアカウントがテーブルの無効化、テーブルの削除、またはメジャーコンパクションを実行できます。
Kerberos認証が無効になっているクラスタの場合、HBase ACLが有効になっていても、ユーザーは偽造されたIDを使用してクラスタサービスにアクセスできます。そのため、セキュリティを高めるために、Kerberos認証が有効になっているクラスタを作成することをお勧めします。詳細については、「概要」をご参照ください。
基本概念
ACLとは、特定のスコープのリソースに対する操作権限をエンティティに付与するプロセスを指します。
次の表に、HBaseの基本概念を示します。
特定のスコープのリソース
権限
説明
スーパーユーザー
スーパーユーザーアカウントは、すべての操作を実行できます。デフォルトでは、HBaseの実行に使用されるアカウントがスーパーユーザーアカウントです。スーパーユーザーアカウントを追加するには、hbase.superuser パラメーターを hbase-site.xml ファイルで設定します。
グローバル
クラスタ内のすべてのテーブルに対する管理者権限。
名前空間
名前空間レベルでのアクセス制御。
テーブル
テーブルレベルでのアクセス制御。
列ファミリー
列ファミリーレベルでのアクセス制御。
セル
セルレベルでのアクセス制御。
操作権限
権限
説明
読み取り(R)
特定のスコープのリソースからデータを読み取ります。
書き込み(W)
特定のスコープのリソースにデータを書き込みます。
実行(X)
特定のスコープでコプロセッサを実行します。
作成(C)
特定のスコープでテーブルを作成または削除します。
管理(A)
特定のスコープで、バランス調整や割り当てなどのクラスタ関連の操作を実行します。
エンティティ
権限
説明
ユーザー
ユーザーに操作権限を付与します。
グループ
ユーザーグループに操作権限を付与します。
手順
hbase-site.xml タブに移動します。
EMRコンソールにログインし、EMR on ECS ページに移動します。
上部のナビゲーションバーで、クラスタが存在するリージョンを選択 し、ビジネス要件に基づいてリソースグループを選択します。
EMR on ECSページで、HBase ACLを有効にするクラスタを見つけ、[サービス] 列の サービス をクリックします。
[サービス] タブで、HBaseサービスを見つけ、[設定] をクリックします。
[hbase-site.xml] タブをクリックします。
[hbase-site.xml] タブで、次の設定項目を追加または変更します。
キー
値
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サービスを再起動します。
右上隅で、 を選択します。
表示されるダイアログボックスで、[実行理由] パラメーターを設定し、[OK] をクリックします。
[確認] メッセージで、[OK] をクリックします。
HBase ACLを使用して権限を管理します。
grant
grant <user> <permissions> [<@namespace> [<table> [<column family> [<column qualifier>]]]ユーザーとユーザーグループに操作権限を付与するために使用される方法は似ています。メソッド間の唯一の違いは、ユーザーグループの名前のプレフィックスとしてアットマーク(@)を指定する必要があることです。
grant 'test','R','tbl1' # ユーザー test に tbl1 テーブルの読み取り権限を付与します。 grant '@testgrp','R','tbl1' # ユーザーグループ testgrp に tbl1 テーブルの読み取り権限を付与します。名前空間の名前のプレフィックスとしてアットマーク(@)を指定する必要があります。
grant 'test','C','@ns_1' # ユーザー test に ns_1 名前空間の作成権限を付与します。
revoke
revoke 'trafodion' # ユーザー trafodion からすべての権限を取り消します。user_permission
user_permission 'TABLE_A' # TABLE_A テーブルのすべての権限を照会します。