このトピックでは、Hive の Ranger アクセス制御を有効にする方法について説明し、Ranger Hive 権限設定の詳細な例を示します。
前提条件
DataLake クラスターが作成され、Ranger サービスが選択されています。クラスターの作成方法の詳細については、「クラスターの作成」をご参照ください。
注意事項
Hive の Ranger アクセス制御を有効にすると、HiveServer2 サービスは Ranger Hive プラグインをロードします。権限検証は、HiveServer2 を介して SQL ジョブを送信した場合にのみトリガーされます。他の方法で Hive にアクセスしても、権限検証はトリガーされません。
権限検証をサポートするアクセス方法
Beeline クライアントを使用して HiveServer2 にアクセスする。
JDBC URL を使用して HiveServer2 に接続する。
権限検証をサポートしないアクセス方法
Hive クライアントを使用して Metastore に直接接続する。
Hive-Client API を使用して Metastore に直接接続する。
設定方法
クラスターサービスページに移動します。
上部のナビゲーションバーで、必要に応じてリージョンとリソースグループを選択します。
EMR on ECS ページで、対象クラスターの [操作] 列にある [クラスターサービス] をクリックします。
Ranger で Hive を有効にします。
Services ページで、[Ranger-plugin] サービスエリアにある Status をクリックします。
[サービスの概要] エリアで、[enableHive] スイッチをオンにします。
表示されるダイアログボックスで、[OK] をクリックします。
HiveServer を再起動します。
[クラスターサービス] ページで、 を選択します。
[コンポーネントリスト] エリアで [HiveServer] を見つけ、[操作] 列の [再起動] をクリックします。
ダイアログボックスで [実行理由] を入力し、[OK] をクリックします。
[確認] ダイアログボックスで、[OK] をクリックします。
権限設定
概要
Ranger UI ページで Ranger 権限を設定できます。Ranger UI ページへのアクセス方法の詳細については、「Ranger の概要」をご参照ください。
Ranger Hive 権限を設定するには、次の図に示すように、HADOOP SQL の下にある [emr-hive] をクリックします。
[emr-hive] ページでは、設定されているすべてのアクセスポリシーのリストを表示できます。Ranger には、いくつかのデフォルトポリシーが含まれています。たとえば、デフォルトポリシーでは、HiveServer サービスを開始する hive ユーザーに、データベース、テーブル、列、ユーザー定義関数 (UDF) 、URL などのすべてのリソースへのアクセス権限が付与されます。別のデフォルトポリシーでは、すべてのユーザーにデータベースに対する Create 権限と、デフォルトデータベース内での Create 権限が付与されます。
アクセスポリシーの追加
右上隅にある [Add New Policy] をクリックして、アクセスポリシーを作成します。Policy Name フィールドでポリシーの一意の名前を指定する必要があります。基本的な権限設定には、リソース、ユーザー、権限の 3 つの要素が必要です。リソースは、データベース、テーブル、列、URL など、ポリシーによって管理されるリソースを定義します。ユーザーは、ポリシーが適用されるユーザーを指定します。権限は、ポリシーが付与するアクセスの種類を定義します。
ポリシーリソース
Ranger Hive では、[database]、[table]、[column]、[url]、[udf] などのポリシーリソースが権限設定に使用されます。デフォルトでは、ポリシーには [database]、[table]、[column] が表示されます。リソース名をクリックして、別のリソースに切り替えることができます。
アクセスポリシーを設定するときは、リソースの名前を入力します。たとえば、[database] を testdb に、[table] を test に、[column] を id に、[url] を oss://test-bucket/test/tmp に設定します。次の図に示すように、アスタリスク (*) を入力して、特定のタイプのすべてのリソースを指定することもできます。

ポリシーユーザー
アクセスポリシーは、ユーザーの権限を定義します。次の図に示すように、[Select User] リストからユーザーを選択して権限を設定します。

ポリシー権限
[Add Permissions] をクリックします。表示される [add/edit Permissions] セクションで、次の図に示すように、必要な [permission] を選択します。

例 1: 列権限の設定
Ranger アクセス制御の一般的な使用例は、テーブルに対する Select 権限を特定のユーザーに付与することです。これにより、ユーザーは select columns from table 操作を実行できるようになります。次の図に、権限設定の例を示します。
このポリシーは、testdb [データベース] 内の test [テーブル] の id [列] に対する [select] 権限を [test] ユーザーに付与します。これにより、ユーザーは select id from testdb.test を実行できます。ユーザーが testdb.test テーブルからすべての列を選択できるようにするには、[列] を * に設定します。
例 2: テーブル権限の設定
Ranger Hive では、テーブルレベルでテーブル作成権限を構成できます。たとえば、[作成] 権限を [データベース]=testdb、[テーブル]=test、および [カラム]=* で構成した場合、ユーザーは test テーブルのみを作成できます。ユーザーにデータベース内の任意のテーブルの作成を許可する場合は、[作成] 権限を [データベース]=testdb、[テーブル]=*、および [カラム]=* で構成する必要があります。この構成を次の図に示します。
例 3: URL 権限の設定
実行する Hive SQL 文に場所情報が含まれており、その場所のスキームが oss である場合、システムはその場所に対する読み取りおよび書き込み権限があるかどうかを確認します。たとえば、create external table test(id int, name string) location 'oss://test-bucket/test' 文を実行すると、システムは oss://test-bucket/test に対する読み取り権限があるかどうかを確認します。
この場合、URL のアクセスポリシーを設定する必要があります。リソースを URL に切り替える方法については、「アクセスポシーの追加」セクションをご参照ください。次の図に設定例を示します。
URL 権限を制御する必要がない場合は、[Policy Name] の下にある [all - Url] ポリシーを変更することもできます。[Select Group] フィールドに public を追加します。これにより、すべてのユーザーにすべての URL に対する読み取りおよび書き込み権限が付与されます。次の図に手順を示します。
Ranger では、public はすべてのユーザーを含む特別なグループです。ポリシーで [Select Group] を public に設定すると、そのポリシーはすべてのユーザーに適用されます。

> [Hive]