HBase クラスターでは、すべてのアカウントは許可なしで、テーブルの無効化、削除などを含む任意の操作を実行し、メジャーコンパクションを実行します。
Kerberos 認証を使用しないクラスターでは、HBase 権限付与が有効な場合でも、ユーザーは ID を偽造してクラスターサービスにアクセスします。 したがって、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,org.apache.hadoop.hbase.security.token.TokenProvider</value>
</property>
HBase クラスターの再起動
HBase クラスターの設定管理ページで、
の順にクリックします。権限付与 (ACL)
- 基本概念
HBase では、権限付与は 3 つの要素で構成されます。構成要素は、特定のエンティティへの特定のリソースのスコープに対する操作権限の付与です。
- 特定のスコープ内のリソース
- スーパーユーザー
スーパーユーザーは任意の操作を実行します。 HBase サービスを実行するアカウントはデフォルトではスーパーユーザーです。 hbase-site.xml の hbase.superuser の値を設定してスーパーユーザーを追加します。
- グローバル
グローバルスコープはクラスター内のすべてのテーブルの管理者権限があります。
- 名前空間
このスコープは名前空間スコープの権限コントロールがあります。
- テーブル
このスコープはテーブルスコープの権限制御があります。
- カラムファミリー
このスコープはカラムファミリーの権限コントロールがあります。
- セル
このスコープはセルスコープの権限コントロールがあります。
- スーパーユーザー
- 操作権限
- 読み取り (R)
特定のスコープのリソースからデータを読み取ります。
- 書き込み (W)
特定のスコープのリソースにデータを書き込みます。
- 実行 (X)
特定のスコープのコプロセッサを実行します。
- 作成 (C)
特定のスコープでテーブルを作成または削除します。
- 管理 (A)
特定のスコープで、バランスまたは割り当てなどのクラスター関連の操作を実行します。
- 読み取り (R)
- エンティティ
- ユーザー
ユーザーに権限付与します。
- グループ
ユーザーグループに権限付与します。
- ユーザー
- 特定のスコープ内のリソース
- 権限付与コマンド
- 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 (権限の表示)
- grant