手順

本ページでは、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 パスに対して権限の操作を実行します。

  • Hive プラグインの有効化
    1. クラスター管理ページで、[操作] 列の、操作するクラスターの隣にある[管理] をクリックします。
    2. サービスリストで [Ranger] をクリックして Ranger 管理ページに移動します。
    3. Ranger 設定ページで、右上隅の [操作]ドロップダウンメニューをクリックし、[Hive プラグインの有効化] を選択して、[OK] をクリックします。Hive プラグインの有効化
    4. プロンプトボックスにレコード情報を入力し、[OK] をクリックします。

      ページ右上隅の [操作ログの表示] をクリックして進捗を確認します。

      操作ログの表示
    Hive プラグインを有効化して Hive を再起動し、HiveServer2 と Hive クライアントシナリオは状況に応じて設定されます。HDFS 権限については、HDFS への Ranger の統合をご参照ください。
  • Hive の再起動

    Hive プラグインを有効化したら、Hive を再起動する必要があります。 再起動をするには、以下の手順を実行します。

    1. Ranger 管理ページで左上隅の Ranger ドロップダウンメニューをクリックし、Hive を選択します。
    2. 右上隅の [操作] をクリックし、ドロップダウンメニューから [すべてのコンポーネントを再起動] を選択して、[OK] をクリックします。
    3. ページ右上隅の [操作ログの表示] をクリックします。
  • Ranger UI への Hive サービスの追加

    Ranger UI ページにアクセスする方法については、Ranger の紹介をご参照ください。

    Hive サービスを追加します。

    Ranger UIHive サービスの追加
    • 説明

      以下の設定項目に固定値を入力します。

      項目名
      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 にアクセスします。

ポリシーは追加されてから 1 分後に有効になります。