全部產品
Search
文件中心

:許可權管理常見問題

更新時間:Jun 19, 2024

本文為您介紹MaxCompute的許可權管理常見問題。

問題類別

常見問題

授權方案

為使用者授權

許可權報錯

如何跨專案讀取資料?

您可以基於Package實現跨專案讀取資料的功能,Package是一種跨專案共用資料及資源的機制,主要用於解決跨專案的使用者授權問題。使用Package之後,專案系統管理員可以對其他專案需要使用的對象進行打包授權(也就是建立一個Package),然後許可其他專案安裝此Package,其他專案系統管理員安裝Package之後,就可以自行管理Package進一步授權給自己專案中的使用者。

更多Package使用及許可權控制資訊,請參見基於Package跨專案訪問資源Package的許可權控制

MaxCompute專案的所有者能否更換為RAM使用者?

專案所有者不可以更換,建立專案的人即是專案所有者。專案所有者可以將Admin角色賦予RAM使用者。

與專案所有者相比,Admin角色有哪些限制?

與專案所有者相比,Admin角色不能執行如下操作:

  • Admin角色不能將Admin許可權指派給使用者。

  • 不能設定專案的安全配置。

  • 不能修改專案的鑒權模型。

  • Admin角色所對應的許可權不能被修改。

RAM使用者無法訪問DataWorks,提示缺少AccessKey ID,但實際有AccessKey ID,如何解決?

RAM使用者需要在個人資訊中綁定AccessKey資訊。進入個人資訊頁面,單擊修改AccessKey資訊,輸入AccessKey IDAccessKey Secret。完成配置後,請您重新嘗試訪問DataWorks。

為RAM使用者申請生產環境表的許可權時,提示授權失敗,如何解決?

  • 問題現象

    阿里雲帳號為RAM使用者授權生產環境表的許可權時,返回如下報錯。

    class java.lang.IllegalArgumentException: AccessId should not be empty.
  • 產生原因

    阿里雲帳號或RAM使用者的AccessKey ID和AccessKey Secret未完成配置。

  • 解決措施

    使用阿里雲帳號或以RAM使用者身份進入個人資訊頁面,確認是否已配置AccessKey ID和AccessKey Secret。如果未配置,單擊修改AccessKey資訊,輸入AccessKey IDAccessKey Secret

如何授予使用者動作表的許可權?

需要由專案所有者或具備Super_Administrator、Admin角色的使用者執行授權操作。您可以通過ACL授權方式(grant)為使用者授予表的相關操作許可權。命令樣本如下。

grant Update on table project_name to ram$bob@aliyun.com:Allen;

更多授權資訊,請參見MaxCompute許可權

如何為RAM使用者授權?

需要由阿里雲帳號或具備Super_Administrator、Admin角色的使用者執行授權操作。更多授權資訊,請參見MaxCompute許可權

許可權管理中的客體(Object)和操作(Action)是什嗎?

MaxCompute授權涉及到三個要素:

  • 主體(Subject):被授權的使用者或角色。

  • 客體(Object):為使用者或角色授予的目標對象,例如專案(Project)、表(Table)、函數(Function)、資源(Resource)及執行個體(Instance)。

  • 操作(Action):為使用者或角色授予的可以對目標對象執行的操作。例如讀、寫、查表。

更多資訊,請參見ACL許可權控制

RAM使用者如何訪問其他阿里雲帳號建立的專案?

假設現有兩個阿里雲帳號A和B,A帳號下有一個RAM使用者帳號C(ram_user_1),帳號C需要訪問帳號B建立的MaxCompute專案。

帳號B需要將帳號A加入到帳號B建立的專案中,同時帳號B為帳號A授予MaxCompute Super_Administrator角色。然後用帳號A登入帳號B的專案,通過執行add user ram$A:ram_user_1;命令將帳號C添加到帳號B的專案中。

如何擷取租戶ID(tenant_id)

當您需要在租戶層級指定被授權的資源範圍時,權限原則中可以指定租戶,此時您需要擷取租戶ID,擷取方法如下:

  1. 登入MaxCompute控制台,在左上方選擇地區。

  2. 在左側導覽列選擇租戶管理 > 租戶屬性

  3. 租戶管理頁面擷取對應帳號的租戶ID

為使用者授權報錯:“FAILED:Invalid account Name xxxxxx”,如何解決?

  • 問題現象

    為使用者授權時,返回如下報錯。

    FAILED:Invalid account Name xxxxxx
  • 產生原因

    授權語句中的使用者名稱無效。

  • 解決措施

    建議您確認使用者名稱是否正確。可以通過執行list users;命令擷取當前專案的使用者列表,然後授權時直接複製使用者列表中的使用者名稱,避免手動輸入拼字錯誤,導致使用者名稱無效。

為使用者授權報錯:“FAILED: lack of account provider, principalName xxxxxx”,如何解決?

  • 問題現象

    為使用者授權時,返回如下報錯。

    FAILED: lack of account provider, principalName xxxxxx
  • 產生原因

    授權語句中的使用者名稱無效或當前專案支援的帳號系統不支援RAM。

  • 解決措施

    建議您登入MaxCompute用戶端,執行list accountproviders;命令查看MaxCompute專案空間支援的帳號系統是否支援RAM。如果返回結果沒有RAM,執行add accountprovider ram;命令,增加對RAM帳號體系的支援,並再次執行list accountproviders;命令查看MaxCompute專案空間支援的帳號系統已增加RAM。若確認專案支援RAM,仍然報錯,則需要確認使用者名稱是否正確。可以通過執行list users;命令擷取當前專案的使用者列表,然後授權時直接複製使用者列表中的使用者名稱,避免手動輸入拼字錯誤,導致使用者名稱無效。

MaxCompute中有視圖(View)查詢許可權,為什麼執行查詢時報錯其他使用者無許可權而無法查詢?

  • 問題現象

    MaxCompute中視圖(ViewA)引用資料表B,使用者A有ViewA的查詢許可權,執行查詢ViewA時報錯使用者B(視圖Owner)無資料表B的查詢許可權。

  • 產生原因

    當視圖Owner(View Owner)缺失視圖參考資料表的SELECT許可權時,視圖不可用。一般情境為視圖Owner變更後,沒有及時對新的Owner授予視圖參考資料表的SELECT許可權;或視圖參考資料表的Owner撤銷了視圖Owner對參考資料表的SELECT許可權。因此即使使用者A有ViewA的查詢許可權,也無法進行視圖的查詢。

  • 解決措施

    建議您檢查視圖Owner(View Owner)是否丟失了視圖參考資料表的SELECT許可權,命令如下。

    show grants for <user_name>;  -- user_name為視圖Owner的使用者名稱稱

    若確認丟失,需要給View Owner重新添加視圖參考資料表的SELECT許可權,視圖方可使用。

執行作業報錯:You have NO privilege to do the restricted operation on xxx Access Mode is AllDenied如何解決?

  • 產生原因

    對應的專案為禁用狀態。

  • 解決措施

    • 檢查是否帳號欠費或者是專案關聯預設計算Quota為訂用帳戶Quota而對應訂用帳戶訂單到期了。欠費或到期的話您儲值、續約成功後會自動回復為正常狀態,恢複速度與您訂單量、專案量相關,時間為2~30分鐘不等。

    • 非欠費/到期,則應該是手動禁用了,可以直接到MaxCompute控制台的專案管理頁面恢複專案。

建立資源類型(Resource)的自訂角色報錯:“failed to check policy format: invalid Action value - odps:<Action>”,如何解決?

  • 問題現象

    使用Policy許可權控制功能,以建立資源類型(Resource)的角色test_role並授予該角色建立Package(CreatePackage)的許可權為例,編寫Policy授權如下:

    {
        "Statement":[
            {
                "Action":[
                    "odps:CreatePackage"
                    ],
                    "Effect":"Allow",
                    "Resource":[
                        "acs:odps:*:projects/test_project/authorization",
                        "acs:odps:*:projects/test_project/authorization/packages/*",
                        "acs:odps:*:projects/test_project/authorization/packages/*/*/*" 
                        ]
            }
        ],
        "Version":"1"
    }

    返回如下報錯。

    Create role test_role error: [400] com.aliyun.odps.OdpsException: failed to check policy format: invalid Action value - odps:CreatePackage
  • 產生原因

    MaxCompute不支援對資源類型(Resource)角色授予專案管理類許可權,而建立Package(CreatePackage)屬於專案管理類許可權。查看更多專案管理類許可權,請參見專案管理類許可權一覽表

  • 解決措施

    建立包含專案管理類許可權的自訂角色時,切換角色類型為Admin(管理類型),即可建立成功。更多有關角色規劃詳情,請參見角色規劃