權(quán)限管理常見問題
本文為您介紹MaxCompute的權(quán)限管理常見問題。
問題類別 | 常見問題 |
授權(quán)方案 | |
為用戶授權(quán) | |
權(quán)限報錯 |
如何跨項目讀取數(shù)據(jù)?
您可以基于Package實現(xiàn)跨項目讀取數(shù)據(jù)的功能,Package是一種跨項目共享數(shù)據(jù)及資源的機制,主要用于解決跨項目的用戶授權(quán)問題。使用Package之后,項目管理員可以對其他項目需要使用的對象進行打包授權(quán)(也就是創(chuàng)建一個Package),然后許可其他項目安裝此Package,其他項目管理員安裝Package之后,就可以自行管理Package進一步授權(quán)給自己項目中的用戶。
更多Package使用及權(quán)限控制信息,請參見基于Package跨項目訪問資源和Package的權(quán)限控制。
MaxCompute項目的所有者能否更換為RAM用戶?
項目所有者不可以更換,創(chuàng)建項目的人即是項目所有者。項目所有者可以將Admin角色賦予RAM用戶。
與項目所有者相比,Admin角色有哪些限制?
與項目所有者相比,Admin角色不能執(zhí)行如下操作:
Admin角色不能將Admin權(quán)限指派給用戶。
不能設(shè)定項目的安全配置。
不能修改項目的鑒權(quán)模型。
Admin角色所對應(yīng)的權(quán)限不能被修改。
RAM用戶無法訪問DataWorks,提示缺少AccessKey ID,但實際有AccessKey ID,如何解決?
RAM用戶需要在個人信息中綁定AccessKey信息。進入個人信息頁面,單擊修改AccessKey信息,輸入AccessKey ID和AccessKey Secret。完成配置后,請您重新嘗試訪問DataWorks。
為RAM用戶申請生產(chǎn)環(huán)境表的權(quán)限時,提示授權(quán)失敗,如何解決?
問題現(xiàn)象
阿里云賬號為RAM用戶授權(quán)生產(chǎn)環(huán)境表的權(quán)限時,返回如下報錯。
class java.lang.IllegalArgumentException: AccessId should not be empty.
產(chǎn)生原因
阿里云賬號或RAM用戶的AccessKey ID和AccessKey Secret未完成配置。
解決措施
使用阿里云賬號或以RAM用戶身份進入個人信息頁面,確認(rèn)是否已配置AccessKey ID和AccessKey Secret。如果未配置,單擊修改AccessKey信息,輸入AccessKey ID和AccessKey Secret。
如何授予用戶操作表的權(quán)限?
需要由項目所有者或具備Super_Administrator、Admin角色的用戶執(zhí)行授權(quán)操作。您可以通過ACL授權(quán)方式(grant
)為用戶授予表的相關(guān)操作權(quán)限。命令示例如下。
grant Update on table project_name to ram$bob@aliyun.com:Allen;
更多授權(quán)信息,請參見MaxCompute權(quán)限。
如何為RAM用戶授權(quán)?
需要由阿里云賬號或具備Super_Administrator、Admin角色的用戶執(zhí)行授權(quán)操作。更多授權(quán)信息,請參見MaxCompute權(quán)限。
權(quán)限管理中的客體(Object)和操作(Action)是什么?
MaxCompute授權(quán)涉及到三個要素:
主體(Subject):被授權(quán)的用戶或角色。
客體(Object):為用戶或角色授予的目標(biāo)對象,例如項目(Project)、表(Table)、函數(shù)(Function)、資源(Resource)及實例(Instance)。
操作(Action):為用戶或角色授予的可以對目標(biāo)對象執(zhí)行的操作。例如讀、寫、查表。
更多信息,請參見ACL權(quán)限控制。
RAM用戶如何訪問其他阿里云賬號創(chuàng)建的項目?
假設(shè)現(xiàn)有兩個阿里云賬號A和B,A賬號下有一個RAM用戶賬號C(ram_user_1),賬號C需要訪問賬號B創(chuàng)建的MaxCompute項目。
賬號B需要將賬號A加入到賬號B創(chuàng)建的項目中,同時賬號B為賬號A授予MaxCompute Super_Administrator角色。然后用賬號A登錄賬號B的項目,通過執(zhí)行add user ram$A:ram_user_1;
命令將賬號C添加到賬號B的項目中。
如何獲取租戶ID(tenant_id)?
當(dāng)您需要在租戶級別指定被授權(quán)的資源范圍時,權(quán)限策略中可以指定租戶,此時您需要獲取租戶ID,獲取方法如下:
登錄MaxCompute控制臺,在左上角選擇地域。
在左側(cè)導(dǎo)航欄選擇租戶管理 > 租戶屬性。
在租戶管理頁面獲取對應(yīng)賬號的租戶ID。
為用戶授權(quán)報錯:“FAILED:Invalid account Name xxxxxx”,如何解決?
問題現(xiàn)象
為用戶授權(quán)時,返回如下報錯。
FAILED:Invalid account Name xxxxxx
產(chǎn)生原因
授權(quán)語句中的用戶名無效。
解決措施
建議您確認(rèn)用戶名是否正確。可以通過執(zhí)行
list users;
命令獲取當(dāng)前項目的用戶列表,然后授權(quán)時直接復(fù)制用戶列表中的用戶名,避免手動輸入拼寫錯誤,導(dǎo)致用戶名無效。
為用戶授權(quán)報錯:“FAILED: lack of account provider, principalName xxxxxx”,如何解決?
問題現(xiàn)象
為用戶授權(quán)時,返回如下報錯。
FAILED: lack of account provider, principalName xxxxxx
產(chǎn)生原因
授權(quán)語句中的用戶名無效或當(dāng)前項目支持的賬號系統(tǒng)不支持RAM。
解決措施
建議您登錄MaxCompute客戶端,執(zhí)行
list accountproviders;
命令查看MaxCompute項目空間支持的賬號系統(tǒng)是否支持RAM。如果返回結(jié)果沒有RAM,執(zhí)行add accountprovider ram;
命令,增加對RAM賬號體系的支持,并再次執(zhí)行list accountproviders;
命令查看MaxCompute項目空間支持的賬號系統(tǒng)已增加RAM。若確認(rèn)項目支持RAM,仍然報錯,則需要確認(rèn)用戶名是否正確。可以通過執(zhí)行list users;
命令獲取當(dāng)前項目的用戶列表,然后授權(quán)時直接復(fù)制用戶列表中的用戶名,避免手動輸入拼寫錯誤,導(dǎo)致用戶名無效。
MaxCompute中有視圖(View)查詢權(quán)限,為什么執(zhí)行查詢時報錯其他用戶無權(quán)限而無法查詢?
問題現(xiàn)象
MaxCompute中視圖(ViewA)引用數(shù)據(jù)表B,用戶A有ViewA的查詢權(quán)限,執(zhí)行查詢ViewA時報錯用戶B(視圖Owner)無數(shù)據(jù)表B的查詢權(quán)限。
產(chǎn)生原因
當(dāng)視圖Owner(View Owner)缺失視圖引用表的SELECT權(quán)限時,視圖不可用。一般場景為視圖Owner變更后,沒有及時對新的Owner授予視圖引用表的SELECT權(quán)限;或視圖引用表的Owner撤銷了視圖Owner對引用表的SELECT權(quán)限。因此即使用戶A有ViewA的查詢權(quán)限,也無法進行視圖的查詢。
解決措施
建議您檢查視圖Owner(View Owner)是否丟失了視圖引用表的SELECT權(quán)限,命令如下。
show grants for <user_name>; -- user_name為視圖Owner的用戶名稱
若確認(rèn)丟失,需要給View Owner重新添加視圖引用表的SELECT權(quán)限,視圖方可使用。
執(zhí)行作業(yè)報錯:You have NO privilege to do the restricted operation on xxx Access Mode is AllDenied如何解決?
產(chǎn)生原因
對應(yīng)的項目為禁用狀態(tài)。
解決措施
檢查是否賬號欠費或者是項目關(guān)聯(lián)默認(rèn)計算Quota為包年包月Quota而對應(yīng)包年包月訂單到期了。欠費或到期的話您充值、續(xù)費成功后會自動恢復(fù)為正常狀態(tài),恢復(fù)速度與您訂單量、項目量相關(guān),時間為2~30分鐘不等。
非欠費/到期,則應(yīng)該是手動禁用了,可以直接到MaxCompute控制臺的項目管理頁面恢復(fù)項目,詳情請參見變更項目狀態(tài)。
創(chuàng)建資源類型(Resource)的自定義角色報錯:“failed to check policy format: invalid Action value - odps:<Action>”,如何解決?
問題現(xiàn)象
使用Policy權(quán)限控制功能,以創(chuàng)建資源類型(Resource)的角色test_role并授予該角色創(chuàng)建Package(CreatePackage)的權(quán)限為例,編寫Policy授權(quán)如下:
{ "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
產(chǎn)生原因
MaxCompute不支持對資源類型(Resource)角色授予項目管理類權(quán)限,而創(chuàng)建Package(CreatePackage)屬于項目管理類權(quán)限。查看更多項目管理類權(quán)限,請參見項目管理類權(quán)限一覽表。
解決措施
新建包含項目管理類權(quán)限的自定義角色時,切換角色類型為Admin(管理類型),即可創(chuàng)建成功。更多有關(guān)角色規(guī)劃詳情,請參見角色規(guī)劃。