本文為您介紹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 ID和AccessKey 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 ID和AccessKey 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,擷取方法如下:
登入MaxCompute控制台,在左上方選擇地區。
在左側導覽列選擇租戶管理 > 租戶屬性。
在租戶管理頁面擷取對應帳號的租戶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(管理類型),即可建立成功。更多有關角色規劃詳情,請參見角色規劃。