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

Data Lake Formation:DLFとEMRを使用して権限を管理する

最終更新日:Mar 31, 2025

このトピックでは、特定のビジネスシナリオで データレイク の権限を管理するために Data Lake Formation(DLF)および E-MapReduce(EMR)製品を使用する方法について説明します。

背景情報

メタデータ管理とデータ権限制御は、データレイクを構築するために DLF 製品によって提供される基本的な機能です。 DLF によって提供されるメタデータビューを介してレイクデータにアクセスすることにより、データレイク内のメタデータの整合性に関連する問題を解決し、データ共有に関連する課題に対処できます。さまざまなエンジンは、DLF 権限と統合することで、エンタープライズレベルの権限管理機能を取得できます。

概念

  • EMR:Alibaba Cloud E-MapReduce 製品です。詳細については、「ECS 上の EMR とは」をご参照ください。

  • DLF カタログ:DLF データカタログ(DLF)は、DLF メタデータアーキテクチャの最上位エンティティであり、データベースやデータテーブルなどのメタデータ情報を含めることができます。詳細については、「データカタログ」をご参照ください。

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

ビジネスシナリオ

ある企業は、Hive、Spark、Presto、Impala などの異なるエンジンを持つ EMR クラスタを持っており、実際のビジネスシナリオで異なるユーザーに対して統一されたデータ権限を使用することを期待しています。主な状況は次のとおりです。

  • スーパー管理者

    • データレイクデータに対するすべての権限と、他のユーザーに権限を割り当てる機能を備えています。

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

    • ビジネス A の db_a に関連するすべてのデータ使用権限とアクセス権限、および他のユーザーにデータベース権限を割り当てる機能を備えています。

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

    • ビジネス A の db_a に関連するすべてのデータ使用権限とアクセス権限を備えています。

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

    • ビジネス A に関連する db_a 内のいくつかのテーブルのいくつかの列へのアクセス権限を持っています。たとえば、table1 の col1 と col2 へのアクセス権限などです。

手順

  1. EMR クラスタを作成し、DLF をメタデータとして使用します。

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

    2. 次のオプションを使用して E-MapReduce クラスタを作成します。

      • ビジネスシナリオデータレイク を選択します。

      • オプションサービス:少なくとも Hive コンポーネントと DLF-Auth コンポーネントを選択します。その他のコンポーネントは、ビジネスニーズに基づいて選択できます。

      • メタデータDLF 統合メタデータ を選択します。

      • DLF カタログ: デフォルトの DLF カタログを選択するか、新しいデータカタログを作成します。この例では catalog_test を使用します。

    3. 他の構成を続行して、EMR クラスタの作成を完了します。

      説明
      • E-MapReduce クラスタが既に存在するが、DLF-Auth コンポーネントがインストールされていない場合は、EMR クラスタ内で サービスの追加 メソッドを使用して DLF-Auth コンポーネントを追加してから、DLF データ権限を使用できます。

      • E-MapReduce クラスタが既に存在するが、Hive メタデータが DLF を使用していない場合は、DLF データベース権限を使用する前にメタデータを移行できます。 DingTalk グループ: 33719678 でお問い合わせいただけます。

  2. 関連するデータベースとデータテーブルを初期化します。

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

    2. Beeline を介して Hive SQL に接続します。

      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 ユーザーを初期化します。

    • スーパー管理者の新しい RAM ユーザー dlf_data_admin を作成します。

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

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

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

  4. データ権限制御を有効にします。

    次の 2 つの手順を実行して、EMR クラスタのデータ権限制御を正式に有効にします。

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

    2. DLF でカタログの権限制御を有効にします。詳細については、「権限の構成」をご参照ください。

      説明

      本番環境では、ユーザー ID が合法的に検証されるように LDAP 認証を有効にすることをお勧めします。次の例は、権限の問題の簡単な説明であり、LDAP 認証を有効にしていないため、Beeline に接続するときにパスワードは必要ありません。

  5. スーパー管理者に DLF コンソールの承認権限とすべてのデータへのアクセス権限を付与します。

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

    2. 左側のナビゲーションペインで、データ権限 > ロール を選択します。

    3. admin ロールで、ユーザー dlf_data_admin を追加します。その後、dlf_data_admin は DLF のすべてのデータを管理するための管理者権限を持ちます。任意のユーザーに関連するデータ権限を構成できます。

    4. dlf_data_admin が DLF コンソールで RAM ユーザーのデータ権限を構成する必要がある場合は、RAM コンソールdlf_data_admin に権限ポリシーを追加する必要があります: AliyunDLFFullAccessAliyunRAMReadOnlyAccess

    5. EMR クラスタにログインし、dlf_data_admin を使用して Hive に接続し、HiveSQL を実行します。

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

      上記の SQL クエリが成功すると、ユーザー dlf_data_admin はすべてのデータベースとデータテーブルへのアクセス権限を持ちます。

  6. ビジネス A データ管理者に db_a データベースの DLF コンソールの承認権限と db_a データベースデータへのアクセス権限を付与します。

    1. Alibaba Cloud ウェブサイトのログインユーザーを dlf_data_admin ユーザーに切り替え、このアカウントを使用して他のユーザーのデータを承認します。

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

    3. 左側のナビゲーションペインで、データ権限 > データ権限 を選択し、権限を追加 をクリックします。

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

      • プリンシパルタイプRAM ユーザー/ロール

      • プリンシパルを選択:dlf_dba_admin。

      • リソースリソース承認

      • Selectcatalog リスト: catalog_test。

      • 項目を入力.データベース: db_a。

      • 権限:

        • データベース-データ権限: すべて

        • データベース-付与された権限: すべて

        • データベース内のすべてのオブジェクト-データ権限: すべて

        • データベース内のすべてのオブジェクト-付与された権限: すべて

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

    6. dlf_dba_admin が DLF コンソールで RAM ユーザーのデータ権限を構成する必要がある場合は、RAM コンソールdlf_dba_admin に権限ポリシーを追加する必要があります: Aliyundlffullaccess、aliyunramreadonlyaccess

    7. EMR クラスタにログインし、dlf_dba_admin を使用して Hive に接続し、HiveSQL を実行します。

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

      最初の SQL クエリが成功すると、ユーザー dlf_dba_admin は db_a データベースと db_a データベース内のすべてのリソースに対するすべての権限を持ちます。

      2 番目の SQL クエリが失敗すると、ユーザー dlf_dba_admin は db_a データベースと db_a データベース内のすべてのリソースに対する権限を持ちません。

  7. ビジネス A データ開発者に db_a データベースデータのクエリ権限と変更権限を付与します。

    1. Alibaba Cloud ウェブサイトのログインユーザーを dlf_dba_admin ユーザーに切り替え、このアカウントを使用して他のユーザーのデータを承認します。

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

    3. 左側のナビゲーションペインで、データ権限>データ権限 を選択し、権限を追加 をクリックします。

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

      • プリンシパルタイプ: RAM ユーザー/ロール

      • プリンシパルを選択: dlf_dba_dev。

      • リソース: リソース承認

      • Selectcatalog リスト: catalog_test。

      • 項目を入力.データベース: db_a。

      • 権限:

        • データベース - データ権限: すべて

        • データベース-付与された権限: すべて

        • データベース内のすべてのオブジェクト-データ権限: すべて

        • データベース内のすべてのオブジェクト-付与された権限: すべて

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

    6. EMR クラスタにログインし、dlf_dba_dev を使用して Hive に接続し、HiveSQL を実行します。

      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');
      

      最初と 2 番目の SQL クエリが成功すると、ユーザー dlf_dba_dev は db_a データベースと db_a データベース内のすべてのリソースに対するクエリ権限と変更権限を持ちます。

      3 番目と 4 番目の SQL クエリが失敗すると、ユーザー dlf_dba_dev は db_b データベースと db_a データベース内のすべてのリソースに対するクエリ権限と変更権限を持ちません。

  8. ビジネス A データアナリストに db_a データベースの table1(col1, col2) へのアクセス権限を付与します。

    1. Alibaba Cloud ウェブサイトで、dlf_dba_admin ユーザーとしてログインし、このアカウントを使用して他のユーザーのデータを承認します。

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

    3. 左側のナビゲーションペインで、データ権限>データ権限 を選択し、権限を追加 をクリックします。

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

      • プリンシパルタイプ: RAM ユーザー/ロール

      • プリンシパルを選択: dlf_dba_analyst。

      • リソース: リソース承認

      • リソースタイプ:

      • Selectcatalog リスト: catalog_test。

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

      • テーブルを選択: table1。

      • 権限:

        • データ列-データ権限: すべて

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

    6. EMR クラスタにログインし、dlf_dba_analyst を使用して Hive に接続し、HiveSQL を実行します。

      beeline -u jdbc:hive2://<primary node name>: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_dev は db_a.table1(col1, col2) に対するクエリ権限を持ちます。

      最初の SQL クエリが失敗すると、ユーザー dlf_dba_dev は db_a.table1(col3) に対するクエリ権限を持ちません。

      3 番目の SQL クエリが失敗すると、ユーザー dlf_dba_dev は db_a.table1 データに対する変更権限を持ちません。

      4 番目の SQL クエリが失敗すると、ユーザー dlf_dba_dev は db_b データベースデータに対するクエリ権限を持ちません。