手順
本ページでは、Ranger を Hive に統合する段階的なプロセスについて説明します
- Hive アクセスモデル
HiveServer2、Hive クライアント、および HDFS の 3 通りの方法で Hive データにアクセスします。
- HiveServer2
- このモードでは、Beeline クライアントまたは JDBC コードを使用し、HiveServer2 を介して関連する Hive スクリプトを実行します。
- 権限設定
Hive のHive 認証は HiveServer2 の権限を制御するために使用されます。
Ranger 内での Hive のテーブルレベルおよび列レベルの権限の制御は HiveServer2 に対しても使用されます。しかし、Hive クライアントまたは HDFS を介して Hive データへのアクセスが可能な場合は、テーブルレベルまたは列レベルの権限の制御では不十分で、さらに制御が必要です。
- Hive クライアント
- このモードでは、Hive クライアントからアクセスします。
-
権限設定
Hive クライアントはメタストアに対して MapReduce ジョブを送信することによって、テーブルの変更、列の追加、および HDFS 内のデータの読み取りと処理などの DDL 操作の実行をリクエストします。
Hive のHive 認証 は Hive クライアントの権限を制御するために使用されます。
ALTER TABLE test ADD COLUMNS(b STRING)
など、SQL に関係があるテーブルがある HDFS のパスの読み取りおよび書き込み権限に基づいて、ユーザーが DDL および DML 操作を実行するかどうかを決定します。Ranger では、Hive テーブルの HDFS パスの権限を制御します。 これは、ストレージベースの認証が設定された Hive メタストアと組み合わせて、Hive クライアントのアクセスに対する権限の制御を実装します。
注 Hive クライアントの DDL 操作権限は、実際には元になる HDFS 権限によって制御されます。 HDFS 権限がある場合は、テーブル削除および変更などのテーブルに対する DDL 権限もあります。
- HDFS
- このモードでは、HDFS クライアントとコードを使用します。
- 権限設定
HDFS に直接アクセスするには、Hive テーブルの元になる HDFS データに HDFS に対する権限の制御を追加する必要があります。
Ranger を使用して、Hive テーブルの元になる HDFS パスに対して権限の操作を実行します。
- HiveServer2
- Hive プラグインの有効化
- クラスター管理ページで、[操作] 列の、操作するクラスターの隣にある[管理] をクリックします。
- サービスリストで [Ranger] をクリックして Ranger 管理ページに移動します。
- Ranger 設定ページで、右上隅の [操作]ドロップダウンメニューをクリックし、[Hive プラグインの有効化] を選択して、[OK] をクリックします。
- プロンプトボックスにレコード情報を入力し、[OK] をクリックします。
ページ右上隅の [操作ログの表示] をクリックして進捗を確認します。
注 Hive プラグインを有効化して Hive を再起動し、HiveServer2 と Hive クライアントシナリオは状況に応じて設定されます。HDFS 権限については、HDFS への Ranger の統合をご参照ください。 - Hive の再起動
Hive プラグインを有効化したら、Hive を再起動する必要があります。 再起動をするには、以下の手順を実行します。
- Ranger 管理ページで左上隅の Ranger ドロップダウンメニューをクリックし、Hive を選択します。
- 右上隅の [操作] をクリックし、ドロップダウンメニューから [すべてのコンポーネントを再起動] を選択して、[OK] をクリックします。
- ページ右上隅の [操作ログの表示] をクリックします。
- Ranger UI への Hive サービスの追加
Ranger UI ページにアクセスする方法については、Ranger の紹介をご参照ください。
Hive サービスを追加します。
- 説明
以下の設定項目に固定値を入力します。
項目名 値 Service Name emr-hive jdbc.driverClassName org.apache.hive.jdbc.HiveDriver - 以下の設定項目に変数値を入力します。
項目名 値 jdbc.url 標準クラスターは jdbc:hive2://emr-header-1:10000、高セキュリティクラスターは jdbc:hive2://${master1_fullhost}:10000/;principal=hive/${master1_fullhost}@EMR.$id.COM policy.download.auth.users 標準クラスターは hadoop、高セキュリティクラスターは hive ${master1_fullhost} は master1 の長いドメイン名です。 このドメイン名を取得するには、master1 にログインして
hostname
コマンドを実行します。${master1_fullhost} の数値は $id の値です。
- 説明
権限設定
Ranger を Hive に統合したら、ユーザー foo にテーブル testdb.test 内の列 A の select 権限を付与するなど、権限を設定します。
前の図の [emr-hive] をクリックしてポリシー設定ページに移動します。
ユーザー foo に権限が付与されます。権限が付与されると、ユーザー foo はテーブル testdb.test にアクセスします。