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

實現指定用戶訪問特定UDF最佳實踐

本文為您介紹如何實現將資源(表、UDF等)設置為僅能被指定的用戶訪問。此方法涉及數據的加密解密算法,屬于數據安全管控范疇。

前提條件

您需要提前安裝MaxCompute客戶端,以實現指定UDF被指定用戶訪問的操作。詳情請參見安裝并配置MaxCompute客戶端

背景信息

設置用戶訪問權限的常見方法有如下幾種:

  • Package方案,通過打包授權進行權限精細化管控。

    Package用于解決跨項目空間的數據共享及資源授權問題。通過Package授予用戶開發者角色后,用戶擁有所有權限,風險不可控。詳情請參見基于Package跨項目訪問資源

    • 下圖為DataWorks開發者角色的權限。**

      由上圖可見,開發者角色對工作空間中的Package、Functions、Resources和Table默認有全部權限,不符合權限配置的要求。

    • 下圖為通過DataWorks添加子賬號并賦予開發者角色的權限。**

    由此可見,通過打包授權和DataWorks默認的角色都不能滿足特定用戶訪問指定UDF的需求。例如,授予子賬號RAM$xxxxx.pt@aliyun-test.com:ramtest開發者角色,則默認該子賬號擁有當前工作空間中全部對象的所有操作權限,詳情請參見用戶授權

  • 在DataWorks中新建角色進行權限管控。

    在DataWorks工作配置頁面的MaxCompute高級配置頁面,可以對自定義用戶角色進行權限管控。在該頁面只能針對某個表或項目進行授權,不能對資源和UDF進行授權。

    說明

    更多有關DataWorks工作空間的MaxCompute屬性介紹,請參見配置MaxCompute引擎權限

  • Role Policy結合Project Policy實現指定用戶訪問指定UDF。

    通過Policy可以精細化地管理具體用戶對特定資源的具體權限粒度。

    說明

    為了安全起見,建議初學者使用測試項目來驗證Policy。

因此您可以通過Policy方案實現特定UDF被指定用戶訪問:

  • 如果您不想讓其他用戶訪問工作空間內具體的資源,在DataWorks中添加數據開發者權限后,再根據Role Policy的操作,在MaxCompute客戶端將其配置為拒絕訪問權限。

  • 如果您需要指定用戶訪問指定資源,在DataWorks中添加數據開發者權限后,再根據Project Policy的操作,在MaxCompute客戶端將其配置為允許訪問權限。

操作步驟

  1. 創建默認拒絕訪問UDF的角色。

    1. 在客戶端輸入如下命令創建角色denyudfrole。

      create role denyudfrole;
    2. 創建Policy授權文件,如下所示。

      {
        "Version": "1",
        "Statement": [
          {
            "Effect": "Deny",
            "Action": ["odps:Read","odps:List"],
            "Resource": "acs:odps:*:projects/sz_mc/resources/getaddr.jar"
          },
          {
            "Effect": "Deny",
            "Action": ["odps:Read","odps:List"],
            "Resource": "acs:odps:*:projects/sz_mc/registration/functions/getregion"
          }
        ]
      }
    3. 設置Role Policy。

      在客戶端執行如下命令,設置Role Policy文件的存放路徑。

      put policy /Users/yangyi/Desktop/role_policy.json on role denyudfrole;
    4. 在客戶端執行如下命令查看Role Policy。

      get policy on role denyudfrole;

      返回結果如下。**

    5. 在客戶端執行如下命令添加子賬號至role denyudfrole。

      grant denyudfrole to RAM$xxxx.pt@aliyun-test.com:ramtest;
  2. 驗證拒絕訪問UDF的角色是否創建成功。

    1. 登錄客戶端輸入whoami;確認角色。

      **

    2. 通過show grants;查看當前登錄用戶權限。

      **

      通過查詢發現該RAM子賬號有兩個角色,一個是role_project_dev(即DataWorks默認的開發者角色),另一個是剛自定義創建的denyudfrole。

    3. 驗證自建UDF以及依賴的包的權限。

      **

      通過上述驗證發現,該子賬號在擁有DataWorks開發者角色的前提下,沒有自建UDF(getregion)的讀權限。您還需要結合Project Policy來實現該UDF只能被指定的用戶訪問。

  3. 配置Project Policy。

    1. 編寫Policy。

      {
      "Version": "1", "Statement":
      [{
      "Effect":"Allow",
      "Principal":"RAM$yangyi.pt@aliyun-test.com:yangyitest",
      "Action":["odps:Read","odps:List","odps:Select"],
      "Resource":"acs:odps:*:projects/sz_mc/resources/getaddr.jar"
      },
      {
      "Effect":"Allow",
       "Principal":"RAM$xxxx.pt@aliyun-test.com:yangyitest",
      "Action":["odps:Read","odps:List","odps:Select"],
      "Resource":"acs:odps:*:projects/sz_mc/registration/functions/getregion"
      }] }
    2. 設置Role Policy。

      在客戶端執行如下命令,設置Role Policy文件的存放路徑。

      put policy /Users/yangyi/Desktop/project_policy.json;
    3. 在客戶端執行如下命令查看Role Policy。

      get policy;

      返回結果如下。**

    4. 通過whoami;show grants;進行驗證。

      **

    5. 運行SQL任務,查看是否僅指定的RAM子賬號能夠查看指定的UDF和依賴的包。

      • 指定的RAM子賬號查看指定的UDF。**

      • 查看依賴包。**