すべてのプロダクト
Search
ドキュメントセンター

E-MapReduce:Hive に対する Ranger アクセス制御の設定

最終更新日:Aug 01, 2026

このトピックでは、Hive の Ranger アクセス制御を有効にする方法について説明し、Ranger Hive 権限の設定例を示します。

前提条件

DataLake クラスターを作成し、Ranger サービスを選択済みである必要があります。詳細については、「クラスターの作成」をご参照ください。

注意事項

Hive の Ranger アクセス制御を有効にすると、HiveServer2 サービスは Ranger Hive プラグインを読み込みます。Ranger は、HiveServer2 を介して SQL ジョブを送信した場合にのみ権限検証を実行します。他の方法で Hive にアクセスしても、この検証はトリガーされません。

  • 権限検証がサポートされるアクセス方法

    • Beeline クライアントを使用した HiveServer2 へのアクセス。

    • JDBC URL を使用した HiveServer2 への接続。

  • 権限検証がサポートされないアクセス方法

    • Hive クライアントを使用したメタストアへの直接接続。

    • Hive-Client API を使用したメタストアへの直接接続。

重要

Ranger のアクセス制御は、Hive メタデータおよび SQL 操作レイヤーにのみ適用されます。Ranger は OSS または OSS-HDFS ストレージレイヤーのアクセス制御をサポートしていません。ストレージレイヤーの権限ポリシーを Ranger で設定しないでください。設定しても有効になりません。

手順

  1. クラスターサービスページに移動します。

    1. EMR on ECS コンソールにログインします。

    2. トップナビゲーションバーで、必要に応じてリージョンとリソースグループを選択します。

    3. 対象のクラスターの「操作」列で、Services をクリックします。

  2. Ranger で Hive を有効にする。

    1. Services ページで、Ranger-plugin サービスを探し、その Status をクリックします。

    2. サービスの概要 セクションで、enableHive ranger スイッチをオンにします。

    3. 表示されるダイアログボックスで、OK をクリックします。

  3. HiveServer を再起動します。

    1. Services ページで、more > [Hive] を選択します。

    2. Componentsセクションで、[HiveServer] のアクション列にある再起動をクリックします。

    3. 表示されるダイアログボックスで、Execution Reason を入力し、OK をクリックします。

    4. Confirm ダイアログボックスで、OK をクリックします。

権限設定

概要

Ranger の権限は Ranger UI で設定します。Ranger UI へのアクセス方法については、「Rangerの概要」をご参照ください。

Ranger で Hive の権限を設定するには、HADOOP SQL の下にある [emr-hive] をクリックします。Ranger の [サービスマネージャー] ページを開くと、[HADOOP SQL] カテゴリに、作成済みの [emr-hive] サービスインスタンスが表示されます。このサービスインスタンスを表示、編集、または削除できます。

Ranger UI に [emr-hive] サービスが表示されない場合は、次の手順を実行します。

  1. EMR on ECS コンソールにログインします。

  2. クラスターサービスページで、[Ranger-plugin] サービスを探し、Status をクリックして設定ページを開きます。

  3. [enableImpala] パラメーターを検索し、その値を [true] に設定します。

  4. 設定を保存します。

  5. Ranger UI ページを更新します。 HADOOP SQL の下に [emr-hive] サービスが表示されます。

[emr-hive] サービスを開くと、設定済みのすべての権限ポリシーのリストが表示されます。デフォルトでは、Ranger にはいくつかのポリシーが含まれています。たとえば、あるデフォルトポリシーは、hive ユーザー (HiveServer サービスの起動ユーザー) に、すべてのデータベース、テーブル、列、UDF、および URL リソースへのフルアクセスを付与します。もう 1 つのデフォルトポリシーは、すべてのユーザーに、データベース、および default データベース内のリソースに対する作成権限を付与します。

権限ポリシーの追加

右上隅にある[新しいポリシーの追加]をクリックして、権限ポリシーを追加します。ポリシーには一意のポリシー名が必要です。基本的なポリシーは、リソース、ユーザー、権限という 3 つの主要なコンポーネントで構成されます。リソースはポリシーが管理するアセット (データベース、テーブル、列、URL など) で、ユーザーはポリシーが適用されるアカウント、権限は付与されるアクセスの種類です。

  • ポリシーリソース

    Ranger for Hive では、ポリシーリソースには [データベース][テーブル][カラム][URL]、および [UDF] が含まれます。リソースタイプを選択して、その権限を設定できます。デフォルトでは、ポリシーフォームには [データベース][テーブル]、および [カラム] のフィールドが表示されます。リソースの名前をクリックして、別のタイプに切り替えることができます。

    ポリシーを設定する際には、リソース名を入力する必要があります。たとえば、[データベース] には testdb[テーブル] には test[カラム] には id[URL] には oss://test-bucket/test/tmp のように入力できます。また、アスタリスク (*) を入力すると、そのタイプのすべてのリソースに一致させることができます。各リソース設定行には、リソースタイプのドロップダウン ([カラム] など)、値入力フィールド (必須)、およびリソースの包含/除外を指定する [Include] トグルが含まれています。

  • ポリシーユーザー

    ポリシーは特定のユーザーに適用する必要があります。[ユーザーの選択] リストからユーザーを選択できます。[ユーザーの選択] ダイアログボックスで、権限を付与するユーザー (例: test) を選択します。

  • ポリシー権限

    [権限の追加] をクリックすると、[権限の追加/編集] セクションが表示されます。[権限の追加/編集] パネルで、必要な権限 (たとえば、[選択][作成]) を選択し、[追加] をクリックして確定します。

例1:カラムレベルの権限

Ranger アクセス制御の一般的なユースケースは、特定のユーザーにテーブルに対する select 権限を付与することです。これにより、ユーザーは select columns from table クエリを実行できるようになります。以下のフィールド値を使用して、Ranger ポリシーを設定します。

  • [ポリシー名]: select-permission-example

  • [データベース]: testdb (含む)

  • [テーブル]: test (含む)

  • [カラム]: id (含める)

  • [監査ログ]: はい

  • [許可条件]: ユーザー選択が test、権限が[選択]

このポリシーは、[test] ユーザーに、[データベース]=testdb 内の [テーブル]=test[列]=id に対する [select] 権限を付与します。 これにより、ユーザーは select id from testdb.test クエリを実行できます。 ユーザーが testdb.test からすべての列を選択できるようにするには、[列] フィールドを * に設定します。

例2:テーブルレベルの権限

Ranger for Hive では、テーブルの作成権限をテーブルレベルで設定できます。たとえば、[create] 権限を [database]=testdb[table]=test、および [column]=* に付与した場合、ユーザーは test という名前のテーブルのみを作成できます。他のテーブルは作成できません。ユーザーがデータベース内の任意のテーブルを作成できるようにするには、[database]=testdb[table]=*、および [column]=*[create] 権限を付与します。

Apache Ranger で、次の主要な設定でアクセスポリシーを作成します。

  • [ポリシー名]: create-permission-example

  • [ポリシータイプ]: [アクセス]

  • [データベース]: testdb (インクルード有効)

  • [テーブル]: * (インクルードが有効)

  • [カラム]: * (包含が有効)

  • [監査ログ]:[はい]

[許可条件]セクションで、[ユーザーの選択]test に、[権限][作成]に設定します。

例3:URL権限

LOCATION 句で oss スキームを使用する Hive SQL ステートメントを実行すると、Ranger はその URL に対するユーザーの読み取りおよび書き込み権限を検証します。 たとえば、create external table test(id int, name string) location 'oss://test-bucket/test' を実行すると、oss://test-bucket/test に対する読み取りアクセス権がチェックされます。

この場合、URL 権限のポリシーを設定する必要があります。リソースタイプを [url] に切り替えるには、「権限ポリシーの追加」セクションの手順をご参照ください。Ranger で emr-hive サービスのポリシーを次の主要な設定で編集します。

  • [ポリシー名]: url-permission-example

  • リソースタイプ: [URL]、値: oss://test-bucket/test[再帰的] が有効

  • [許可条件]: ユーザーが test、権限が [読み取り]

URL 権限を制御する必要がない場合は、デフォルト権限の [ポリシー名][all - url] のポリシーを変更し、[グループの選択]public を追加することもできます。これにより、すべてのユーザーにすべての URL に対する読み取りおよび書き込み権限が付与されます。

説明

Ranger では、public はすべてのユーザーを表す特別なグループです。ポリシーの [グループの選択]public に設定されている場合、そのポリシーの権限はすべてのユーザーに適用されます。

よくある質問

読み取り専用アカウントに対する Ranger Hive 権限の設定方法

読み取り専用アカウントに特定の Hive リソースに対する select 権限のみを付与するには、次の手順で Ranger ポリシーを作成します。

  1. Ranger UI で、HADOOP SQL 配下の [emr-hive] をクリックして Hive ポリシーリストを開きます。

  2. 右上隅の[新規ポリシーの追加]をクリックします。

  3. ポリシーリソースを設定します。

    • [データベース]: 対象のデータベースの名前を入力するか、すべてのデータベースに一致させる場合は * を入力します。

    • [テーブル]:対象のテーブル名を入力するか、すべてのテーブルに一致させるには * を入力します。

    • [カラム]: すべてのカラムに一致させるには * を入力するか、個別のカラム名を指定します。

  4. [ユーザーの選択] フィールドで、読み取り専用アカウントを選択します。

  5. [権限の追加] をクリックし、[select] 権限のみを選択します。

  6. [追加] をクリックしてポリシーを保存します。

どのアカウントを指定すればよいか不明な場合は、[ユーザーの選択] ドロップダウンリストからすべてのユーザーを選択するか、Ranger 監査ログを確認して、以前に Hive に接続したアカウントを特定できます。

EMR 4.9.0 は、Ranger を使用した Impala 権限の制御をサポートしていますか?

いいえ。EMR 4.9.0 は Ranger を使用した Impala 権限の制御をサポートしていません。Impala のアクセス制御に Ranger を使用するには、この機能をサポートするより新しい EMR バージョンにクラスターをアップグレードするか、別の権限管理ソリューションを使用する必要があります。