日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

DLF+EMR之統一權限最佳實踐

本文結合具體業務場景,為您介紹如何使用DLF+EMR兩個產品實現數據湖上統一權限。

背景說明

元數據管理和數據權限控制是DLF產品提供的數據湖構建所需的基礎能力。通過DLF提供的統一元數據視圖訪問湖上數據,有效解決了數據湖中元數據一致性問題以及數據共享難題。同時各引擎也可通過集成DLF統一權限獲得企業級的權限管理能力。

相關概念說明

  • EMR:阿里云 E-MapReduce產品,詳見什么是E-MapReduce。

  • DLF Catalog:DLF數據目錄(DLF),DLF元數據體系的最上層實體,可以包括數據庫,數據表等元數據信息。詳見數據目錄。

  • DLF 數據權限:DLF所提供的數據湖的數據權限體系,支持配置數據庫、數據表、數據列、函數四種維度細粒度權限控制。詳見數據權限概述。

業務場景說明

某公司有一個EMR集群,期望Hive、Spark、Presto、Impala引擎可以通過統一的數據權限,控制實際業務中不同用戶使用數據的權限,主要分為以下幾種情況:

  • 超級管理員

    • 擁有數據湖上數據的所有權限,以及分配權限給其他人員的能力。

  • 業務A數據管理員

    • 擁有業務A相關的db_a的所有數據使用和訪問權限,以及分配該數據庫權限給其他人員的能力。

  • 業務A數據開發人員

    • 擁有業務A相關的db_a中所有數據使用和訪問權限。

  • 業務A數據分析人員

    • 擁有業務A相關的db_a中部分表的部分列的訪問權限,如對table1中col1,cole2的訪問權限。

操作步驟

  1. 創建EMR集群,并使用DLF作為元數據。

    1. 登錄E-MapReduce控制臺。

    2. 創建E-MapReduce集群,輸入選項如下:

      • 業務場景:選擇數據湖。

      • 可選服務:需要至少選中HiveDLF-Auth組件,其他組件根據業務需要選擇。

      • 元數據:選擇DLF 統一元數據。

      • DLF數據目錄:選擇默認的DLF Catalog,或者新建一個數據目錄(Catalog)。此處演示使用catalog_test為例。

    3. 繼續其他配置完成EMR集群創建。

      說明
      • 如果您已經有E-MapReduce集群,但未安裝DLF-Auth組件,可以通過EMR集群中添加服務的方式,添加DLF-Auth組件后,再使用DLF數據權限。

      • 如果您已經有E-MapReduce集群,但Hive元數據未使用DLF,可以通過元數據遷移后再使用DLF 數據權限。可以參考EMR元數據遷移到數據湖構建(DLF)也可通過釘釘群聯系我們:33719678。

  2. 初始化相關數據庫和數據表。

    1. 登錄EMR集群,可參考登錄集群。

    2. 通過Beeline連接Hive SQL。

      beeline -u jdbc:hive2://<主節點的節點名稱>: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. 開啟數據權限控制。

    需要完成以下兩步,才可以正式開啟EMR集群的數據權限控制:

    1. 在EMR集群開啟數據權限控制,具體操作參考DLF-Auth

    2. 在DLF中開啟Catalog的權限控制,具體操作參考權限設置

      說明

      生產使用建議同時開啟LDAP認證,以保證用戶身份經過合法校驗。以下示例為簡單說明權限問題,并未開啟LDAP認證,所以beeline連接時未要求輸入密碼。

  5. 設置超級管理員的權限,使其具備DLF控制臺授權權限,以及所有數據的訪問權限。

    1. 打開數據湖構建控制臺。

    2. 在左側菜單欄,選擇數據權限 > 角色。

    3. admin角色中,添加用戶dlf_data_admin,此時dlf_data_admin就會具備dlf管理所有數據權限的管理員??梢詾槿我庥脩襞渲孟嚓P數據權限。

    4. 如果需要dlf_data_admin可以為在DLF控制臺為RAM用戶配置數據權限,還需要在RAM控制臺中,為dlf_data_admin添加權限策略:AliyunDLFFullAccess,AliyunRAMReadOnlyAccess。

    5. 登錄EMR集群,使用dlf_data_admin連接Hive,執行HiveSQL。

      beeline -u jdbc:hive2://<主節點的節點名稱>:10000 -n dlf_data_admin
      select * from db_a.table1;
      select * from db_b.table1;

      上述SQL查詢成功,該用戶dlf_data_admin同時具備了所有數據庫,數據表的訪問權限。

  6. 設置業務A數據管理員的權限,使其具備DLF控制臺授權db_a數據庫的權限,以及db_a數據庫數據的訪問權限。

    1. 切換阿里云網站的登錄用戶為dlf_data_admin子賬號,使用該賬戶后續為其他用戶進行數據授權。

    2. 登錄數據湖構建控制臺。

    3. 在左側菜單欄,選擇數據權限 > 數據授權,單擊新增授權

    4. 輸入如下信息:

      • 主體類型RAM 用戶/角色。

      • 主體選擇:dlf_dba_admin。

      • 授權資源資源授權。

      • 選擇數據目錄:catalog_test。

      • 選中數據庫:db_a。

      • 權限配置

        • 數據庫-數據權限ALL

        • 數據庫-授權權限ALL。

        • 數據庫下所有對象-數據權限ALL。

        • 數據庫下所有對象-授權權限ALL

    5. 單擊確定,保存授權信息。

    6. 如果需要dlf_dba_admin在DLF控制臺為RAM用戶配置數據權限,還需要在RAM控制臺中,為dlf_dba_admin添加權限策略:AliyunDLFFullAccess,AliyunRAMReadOnlyAccess。

    7. 登錄EMR集群,使用dlf_dba_admin連接Hive,執行HiveSQL。

      beeline -u jdbc:hive2://<主節點的節點名稱>:10000 -n dlf_dba_admin
      select * from db_a.table1;
      select * from db_b.table1;

      上述SQL第一條查詢成功,該用戶dlf_dba_admin具備了db_a數據庫及其下面所有資源的權限。

      上述SQL第二條查詢失敗,該用戶dlf_dba_admin不具備db_b數據庫及其下面所有資源的權限。

  7. 設置業務A數據開發人員的權限,使其具備db_a數據庫數據的查詢和修改權限。

    1. 切換阿里云網站的登錄用戶為dlf_dba_admin子賬號,使用該賬戶后續為其他用戶進行數據授權。

    2. 登錄數據湖構建控制臺。

    3. 在左側菜單欄,選擇數據權限>數據授權,單擊新增授權。

    4. 輸入如下信息:

      • 主體類型RAM 用戶/角色。

      • 主體選擇:dlf_dba_dev。

      • 授權資源資源授權

      • 選擇數據目錄:catalog_test。

      • 選中數據庫:db_a。

      • 權限配置

        • 數據庫-數據權限ALL

        • 數據庫-授權權限ALL。

        • 數據庫下所有對象-數據權限ALL

        • 數據庫下所有對象-授權權限ALL。

    5. 單擊確定,保存授權信息。

    6. 登錄EMR集群,使用dlf_dba_dev連接Hive,執行HiveSQL。

      beeline -u jdbc:hive2://<主節點的節點名稱>: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');
      

      上述SQL第1、2條查詢成功,該用戶dlf_dba_dev具備了db_a數據庫及其下面所有資源的查詢和修改權限。

      上述SQL第3、4條查詢失敗,該用戶dlf_dba_dev不具備db_b數據庫及其下面所有資源的查詢和修改權限。

  8. 設置業務A數據分析人員的權限,使其具備db_a數據庫table1(col1,col2)的訪問權限。

    1. 在阿里云網站的登錄用戶為dlf_dba_admin子賬號,使用該賬戶后續為其他用戶進行數據授權。

    2. 登錄數據湖構建控制臺。

    3. 在左側菜單欄,選擇數據權限>數據授權,單擊新增授權。

    4. 輸入如下信息:

      • 主體類型RAM 用戶/角色。

      • 主體選擇:dlf_dba_analyst。

      • 授權資源資源授權

      • 資源類型數據列。

      • 選擇數據目錄:catalog_test。

      • 選擇數據庫:db_a。

      • 選擇數據表:table1。

      • 權限配置

        • 數據列-數據權限ALL

    5. 單擊確定,保存授權信息。

    6. 登錄EMR集群,使用dlf_dba_analyst連接Hive,執行HiveSQL。

      beeline -u jdbc:hive2://<主節點的節點名稱>: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;

      上述SQL第2條查詢成功,該用戶dlf_dba_dev具備了db_a.table1(col1,col2)的查詢權限。

      上述SQL第1條查詢失敗,該用戶dlf_dba_dev不具備db_a.table1(col3)的查詢權限。

      上述SQL第3條查詢失敗,該用戶dlf_dba_dev不具備db_a.table1的數據修改權限。

      上述SQL第4條查詢失敗,該用戶dlf_dba_dev不具備db_b數據庫的數據查詢權限。

總結

以上示例演示了一個簡單業務場景下如何運用DLF進行數據授權的操作步驟。您可以根據具體業務需求,靈活配置DLF數據權限,以授予不同用戶訪問和操作各類資源的適當權限。