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

Data Lake Formation:DLF および EMR を使用した統合アクセス制御

最終更新日:Jul 18, 2026

Data Lake Formation (DLF) および E-MapReduce (EMR) を使用して、データレイクに対する統合アクセス制御を実装します。実際のビジネスシナリオを例として紹介します。

背景情報

DLF は、メタデータの一貫性とデータ共有の課題を解決する統一メタデータビューを提供します。DLF と統合されたコンピューティングエンジンは、エンタープライズグレードのアクセス制御機能も獲得します。

基本概念

  • EMR:E-MapReduce は、ビッグデータ処理のための Alibaba Cloud サービスです。詳細については、「E-MapReduce とは」をご参照ください。

  • DLF カタログ:DLF メタデータシステムにおける最上位のエンティティです。データベースやテーブルなどのオブジェクトのメタデータを含めることができます。詳細については、「データカタログ」をご参照ください。

  • DLF データ権限:DLF がデータレイク向けに提供するデータ権限システムです。データベース、テーブル、列、関数の 4 つのレベルで、きめ細かなアクセス制御をサポートしています。詳細については、「データ権限の概要」をご参照ください。

ビジネスシナリオ

Hive、Spark、Presto、Impala など複数のクエリエンジンを使用する EMR クラスターを運用している企業が、異なるロールごとのデータアクセスを管理する統合アクセス制御システムを導入したいと考えています。

  • スーパー管理者

    • データレイクに対するすべての権限を持ち、他のユーザーに権限を付与できます。

  • ビジネス A データ管理者

    • db_a データベース内のビジネス A 関連データすべてにフルアクセスでき、このデータベースの権限を他のユーザーに付与できます。

  • ビジネス A データ開発者

    • db_a データベース内のすべてのデータにフルアクセスできます。

  • ビジネス A データアナリスト

    • db_a データベース内の特定のテーブル(例:table1)の特定の列(例:col1 および col2)にアクセスできます。

操作手順

  1. メタデータ管理に DLF を使用する EMR クラスターを作成します。

    1. E-MapReduce コンソールにログインします。

    2. EMR クラスターを作成し、以下のオプションを指定します。

      • Business ScenarioData Lake を選択します。

      • Optional ServicesHive および DLF-Auth コンポーネントを少なくとも選択します。その他のコンポーネントは、ビジネス要件に応じて選択してください。

      • MetadataDLF Unified Metadata を選択します。

      • DLF Catalog:デフォルトの DLF Catalog を選択するか、新しいものを作成します。本チュートリアルでは、catalog_test を例として使用します。

    3. 必要に応じてその他の設定を行い、EMR クラスターを作成します。

      説明
      • 既存の E-MapReduce クラスターに DLF-Auth コンポーネントが含まれていない場合、サービスとして追加することで DLF データ権限を利用できます。

      • Hive メタデータが DLF によって管理されていない既存の E-MapReduce クラスターがある場合は、DLF データ権限を使用する前にメタデータを移行する必要があります。DingTalk グループ 33719678 からお問い合わせいただくこともできます。

  2. 必要なデータベースおよびテーブルを初期化します。

    1. EMR クラスターにログインします。詳細については、「クラスターへのログイン」をご参照ください。

    2. Beeline を使用して Hive に接続します。

      beeline -u jdbc:hive2://<primary_node_name>:10000
    3. 以下の文を実行して、テストデータを初期化および作成します。

      -- データベースおよびテーブルの作成
      create database db_a;
      create table db_a.table1(
      col1 string,
      col2 string,
      col3 string
      );
      create table db_a.table2(
      col1 string,
      col2 string,
      col3 string
      );
      
      create database db_b;
      create table db_b.table1(
      col1 string,
      col2 string,
      col3 string
      );
      
      -- テストデータの初期化
      -- db_a.table1
      insert overwrite table db_a.table1 values('1','aliyun','emrA1'),('2','aliyun','dlfA1');
      
      -- db_a.table2
      insert overwrite table db_a.table2 values('1','aliyun','emrA2'),('2','aliyun','dlfA2');
      
      -- db_b.table1
      insert overwrite table db_b.table1 values('1','aliyun','emrB1'),('2','aliyun','dlfB1');
  3. 各ロールに必要な RAM ユーザーを作成します。

    • スーパー管理者:dlf_data_admin という名前の RAM ユーザーを作成します。

    • ビジネス A データ管理者:dlf_dba_admin という名前の RAM ユーザーを作成します。

    • ビジネス A データ開発者:dlf_dba_dev という名前の RAM ユーザーを作成します。

    • ビジネス A データアナリスト:dlf_dba_analyst という名前の RAM ユーザーを作成します。

  4. アクセス制御を有効にします。

    EMR クラスターのアクセス制御を有効にするには、以下の手順を完了します。

    1. EMR クラスターでアクセス制御を有効にします。詳細については、「DLF-Auth」をご参照ください。

    2. DLF の DLF Catalog に対してアクセス制御を有効にします。詳細については、「権限の設定」をご参照ください。

      説明

      本番環境では、ユーザー ID の適切な検証を確保するために LDAP 認証も有効にすることを推奨します。本チュートリアルでは簡略化のため LDAP 認証を有効にしていないため、Beeline で接続してもパスワードの入力を求められません。

  5. スーパー管理者が Data Lake Formation コンソールで権限を管理し、すべてのデータにアクセスできるように権限を設定します。

    1. Data Lake Formation コンソールに移動します。

    2. 左側のナビゲーションウィンドウで、Data Permission > Roles を選択します。

    3. dlf_data_admin ユーザーを 管理者 ロールに追加します。dlf_data_admin ユーザーはこれにより、DLF 内のすべてのデータ権限を管理し、任意のユーザーに対して設定できる管理者となります。

    4. dlf_data_admin ユーザーが Data Lake Formation コンソールで RAM ユーザーのデータ権限を設定できるようにするには、RAM コンソールでこのユーザーに AliyunDLFFullAccess および AliyunRAMReadOnlyAccess ポリシーをアタッチする必要があります。

    5. EMR クラスターにログインし、dlf_data_admin ユーザーとして Hive に接続して HiveQL 文を実行します。

      beeline -u jdbc:hive2://<primary_node_name>:10000 -n dlf_data_admin
      select * from db_a.table1;
      select * from db_b.table1;

      クエリが成功し、dlf_data_admin ユーザーがすべてのデータベースおよびテーブルにアクセスできることを確認します。

  6. ビジネス A データ管理者が Data Lake Formation コンソールで db_a データベースの権限を付与でき、そのデータベース内のすべてのデータにアクセスできるように権限を設定します。

    1. Alibaba Cloud コンソールで dlf_data_admin RAM ユーザーに切り替え、このアカウントを使用して以下の権限付与手順を実行します。

    2. Data Lake Formation コンソールに移動します。

    3. 左側のナビゲーションウィンドウで、Data Permission > Data Permissions を選択し、Add Permission をクリックします。

    4. 以下のパラメーターを設定します。

      • Principal TypeRAM ユーザー/ロール

      • Choose Principal:dlf_dba_admin。

      • ResourcesResource Authorization

      • カタログの選択:catalog_test。

      • データベースの選択:db_a。

      • Permissions

        • Database - Data Permissionすべて

        • Database - Granted Permissionすべて

        • All objects in the database - Data Permissionすべて

        • All objects in the database - Granted Permissionすべて

    5. OK をクリックして認可情報を保存します。

    6. dlf_dba_admin ユーザーが Data Lake Formation コンソールで他の RAM ユーザーのデータ権限を設定できるようにするには、RAM コンソールでこのユーザーに AliyunDLFFullAccess および AliyunRAMReadOnlyAccess ポリシーをアタッチする必要があります。

    7. EMR クラスターにログインし、dlf_dba_admin ユーザーとして Hive に接続して HiveQL 文を実行します。

      beeline -u jdbc:hive2://<primary_node_name>:10000 -n dlf_dba_admin
      select * from db_a.table1;
      select * from db_b.table1;

      1 つ目のクエリは成功します。これは、ユーザーが db_a データベース内のすべてのリソースに対する権限を持っているためです。

      2 つ目のクエリは失敗します。これは、ユーザーが db_b データベース内のリソースに対する権限を持っていないためです。

  7. ビジネス A データ開発者が db_a データベース内のデータをクエリおよび変更できるように権限を設定します。

    1. Alibaba Cloud コンソールで dlf_dba_admin RAM ユーザーに切り替え、このアカウントを使用して他のユーザーにデータ権限を付与します。

    2. Data Lake Formation コンソールに移動します。

    3. 左側のナビゲーションウィンドウで、Data Permission > Data Permissions を選択し、Add Permission をクリックします。

    4. 以下のパラメーターを設定します。

      • Principal TypeRAM ユーザー/ロール

      • Choose Principal:dlf_dba_dev。

      • ResourcesResource Authorization

      • カタログの選択:catalog_test。

      • データベースの選択:db_a。

      • Permissions

        • Database - Data Permissionすべて

        • Database - Granted Permissionなし

        • All objects in the database - Data Permissionすべて

        • All objects in the database - Granted Permissionすべて

    5. OK をクリックして認可情報を保存します。

    6. EMR クラスターにログインし、dlf_dba_dev ユーザーとして Hive に接続して HiveQL 文を実行します。

      beeline -u jdbc:hive2://<primary_node_name>:10000 -n dlf_dba_dev
      select * from db_a.table1;
      insert into table db_a.table1 values('3','aliyun','emrA1'),('4','aliyun','dlfA1');
      
      select * from db_b.table1;
      insert into table db_b.table1 values('3','aliyun','emrA1'),('4','aliyun','dlfA1');
      

      1 つ目および 2 つ目の SQL ステートメントは成功し、dlf_dba_dev ユーザーが db_a データベースおよびそのすべてのリソースに対してクエリおよび変更の権限を持っていることが確認されます。

      3 つ目および 4 つ目の SQL ステートメントは失敗します。これは、dlf_dba_dev ユーザーが db_b データベースをクエリまたは変更する権限を持っていないためです。

  8. ビジネス A データアナリストが db_a データベース内の table1(col1, col2) にアクセスできるように権限を設定します。

    1. dlf_dba_admin RAM ユーザーとして Alibaba Cloud Web サイトにログインします。このアカウントを使用して他のユーザーにデータ権限を付与します。

    2. Data Lake Formation コンソールにログインします。

    3. 左側のナビゲーションウィンドウで、Data Permission > Data Permissions を選択し、次に Add Permission をクリックします。

    4. 以下の情報を入力します。

      • Principal TypeRAM ユーザー/ロール

      • Choose Principal:dlf_dba_analyst。

      • ResourcesResource Authorization

      • Resource TypeColumn

      • データカタログの選択:catalog_test。

      • データベースの選択:db_a。

      • テーブルの選択:table1。

      • Permissions

        • Column-Data Permissionすべて

    5. OK をクリックして認可情報を保存します。

    6. EMR クラスターにログインし、dlf_dba_analyst として Hive に接続して HiveSQL コマンドを実行します。

      beeline -u jdbc:hive2://<name of the primary node>:10000 -n dlf_dba_analyst
      select * from db_a.table1;
      select col1,col2 from db_a.table1;
      insert into table db_a.table1 values('5','aliyun','emrA1'),('6','aliyun','dlfA1');
      select * from db_b.table1;

      2 つ目の SQL ステートメントは成功します。これは、dlf_dba_analyst ユーザーが db_a.table1 テーブルの col1 および col2 列をクエリする権限を持っているためです。

      1 つ目の SQL ステートメントは失敗します。これは、dlf_dba_analyst ユーザーが db_a.table1 テーブルの col3 列をクエリする権限を持っていないためです。

      3 つ目の SQL ステートメントは失敗します。これは、dlf_dba_analyst ユーザーが db_a.table1 テーブルのデータを変更する権限を持っていないためです。

      4 つ目の SQL ステートメントは失敗します。これは、dlf_dba_analyst ユーザーが db_b データベースのデータをクエリする権限を持っていないためです。

まとめ

上記の例では、典型的なビジネスシナリオで DLF データ権限を使用する方法を示しました。必要に応じて権限を設定し、さまざまなユーザーに適切なレベルのリソースアクセスを付与できます。