為確保MaxCompute項目數據的安全性,項目所有者或者具備授權權限的用戶需要對項目內成員的權限進行合理管控,確保權限不會過大也不會過小。本文為您介紹MaxCompute的權限管理體系。
權限體系
類別 | 說明 |
權限主體 | MaxCompute支持的權限主體如下: |
權限對象 | MaxCompute細化了項目、表、資源、函數、實例對象的操作,您可以基于MaxCompute提供的授權方案精細化管理用戶的操作權限。各對象的權限信息,請參見MaxCompute權限。 |
權限控制 | MaxCompute提供了如下授權方案,靈活滿足授權要求:
|
角色授權 | 當需要為多個用戶授予相同操作權限時,可基于角色實現,簡化授權操作。更多角色授權操作信息,請參見項目級別角色授權。 |
用戶授權 | 您可以通過如下方式為用戶授權:
更多用戶授權操作信息,請參見通過命令管理用戶權限。 |
獲取權限信息 | 查看項目人員權限信息,了解權限是否生效。更多查看權限操作信息,請參見查詢權限信息。 |
DataWorks也有自身的權限體系,如果您通過DataWorks維護MaxCompute項目,可以通過DataWorks提供的用戶、角色管理能力,合理分配角色達到管理權限的目的。更多DataWorks與MaxCompute的權限關系,請參見MaxCompute和DataWorks的權限關系。
鑒權流程
MaxCompute用戶對MaxCompute各類對象進行操作時,需要進行相關權限的鑒權。資源Owner(阿里云主賬號)擁有最高權限,能夠進行所有操作,并可以授予RAM賬號(RAM用戶/RAM角色)管理類權限。阿里云主賬號及具有管理類權限的用戶可以為其他用戶授予權限,這將決定誰獲得權限,獲得對哪些對象的權限,以及允許對這些對象執行的具體操作。
根據操作對象和具體操作的不同,MaxCompute鑒權流程分為RAM鑒權和MaxCompute服務鑒權,一個用戶執行不同操作所需要經過的鑒權流程如下圖所示。
RAM鑒權
當用戶需要在MaxCompute管理控制臺進行服務的開通、資源的購買、Quota管理、項目管理、租戶管理等操作時,阿里云會對用戶進行RAM鑒權,驗證用戶是否具備相關權限,否則不能進行操作。
MaxCompute服務鑒權
MaxCompute項目級操作鑒權。
MaxCompute項目級操作權限包括項目級對象操作與項目級管理類操作。
項目級對象操作權限:主要包括對項目(Project)、表(Table)、函數(Function)、資源(Resource)等項目及項目內對象的操作權限,如CreateTable、CreateInstance、SelectTable等,詳情請參見項目及項目內對象權限一覽表。
項目級管理類權限:主要包括進行項目安全配置、項目級用戶與角色權限管理、Package管理、Label權限管控、清理過期權限等,詳情請參見項目管理類權限一覽表。
MaxCompute項目級操作鑒權流程如下:
用戶認證。更多關于用戶認證的詳細描述,請參見用戶認證。
您可以使用阿里云賬號(包括阿里云主賬號和RAM賬號)登錄MaxCompute管理控制臺。
當您使用odpscmd或者JDBC等工具連接MaxCompute時,需要用到AccessKey ID及AccessKey Secret。
當用戶使用賬號連接MaxCompute時,系統將會判斷當前賬號是否為當前項目用戶。只有管理員執行了
add user "xxx"
命令,用戶才允許在該項目中發起操作。
請求源檢查(IP檢查):檢查IP白名單。詳情請參見管理IP白名單。
項目空間狀態檢查:檢查項目是否為正常狀態。
MaxCompute權限檢查:用戶被添加至項目后,還需要被授予相關的操作權限,才能在權限范圍內進行操作。這里的權限包括通過各類授權方案實現的權限授予,包括ACL權限控制、Policy權限控制、Download權限控制、Label權限控制、基于Package跨項目訪問資源。項目級用戶管理方法請參見通過命令管理用戶權限或者通過控制臺(新版)管理用戶權限。
MaxCompute租戶級操作鑒權。
MaxCompute租戶級操作權限包括租戶級別對象操作權限與租戶級管理類權限。
租戶級別對象操作權限包括對租戶級對象Quota和網絡連接(Networklink)的操作。例如use quota、CreateNetworkLink等,操作列表請參見租戶內對象權限一覽表。
租戶級別對象操作還包括實現一賬號管理多個Project對象,提升權限管理的便捷性。更多租戶級別角色信息請參見租戶級別角色授權。
租戶級別管理類權限指租戶級別用戶與角色權限管理,包括添加/刪除租戶級別用戶、創建/刪除租戶級別角色、查看租戶級別用戶/角色列表及權限內容、將租戶級別角色授予用戶、取消用戶被授予的租戶級別角色、將租戶級別角色添加至項目、移出項目內的租戶級別角色等。
當用戶需要進行上述操作時,MaxCompute對用戶進行鑒權,驗證用戶是否具備相關權限,否則不能進行操作。租戶級權限管理方法請參見通過控制臺(新版)管理用戶權限。
授權鏈路
MaxCompute的常見授權鏈路如下。
鏈路一:直接為用戶授予對象的操作權限
項目所有者(Project Owner)或具備內置管理角色的用戶將目標用戶添加至MaxCompute項目中后,由具備授權權限的用戶通過ACL權限控制方案為目標用戶授予對象的操作權限。
鏈路二:基于角色為多個用戶授予對象的操作權限
項目所有者(Project Owner)或具備內置管理角色的用戶將目標用戶和角色添加至MaxCompute項目中后,由具備授權權限的用戶通過ACL、Policy或Download權限控制方案為目標角色授予對象的操作權限,然后再將角色賦予目標用戶。
鏈路三:直接為用戶授予訪問高敏感等級數據的權限
項目所有者(Project Owner)或具備內置管理角色的用戶將目標用戶添加至MaxCompute項目中后,項目所有者(Project Owner)或具備Admin角色的用戶可以為目標用戶添加許可訪問等級,另外,當用戶需要訪問某些高敏感等級數據時,還可以通過Label權限控制方案為目標用戶授予訪問高敏感級數據的權限。
鏈路四:基于角色為多個用戶授予訪問高敏感等級數據的權限
項目所有者(Project Owner)或具備內置管理角色的用戶將目標用戶添加至MaxCompute項目中后,項目所有者(Project Owner)或具備Admin角色的用戶可以為目標用戶添加許可訪問等級。當需要支持多個用戶訪問相同的高敏感等級數據時,可以創建目標角色,并由項目所有者(Project Owner)或具備Admin角色的用戶通過Label權限控制方案為角色授予訪問高敏感級數據的權限,然后再將角色賦予用戶。
鏈路五:跨項目訪問資源,并直接為目標項目中的用戶授予訪問Package內資源的權限
由資源所屬項目的項目所有者(Project Owner)創建Package包并添加資源后,許可目標項目安裝Package。目標項目的項目所有者(Project Owner)安裝Package并通過ACL權限控制或Label權限控制方案為用戶授權。
鏈路六:跨項目訪問資源,并基于角色為用戶授予訪問Package內資源的權限
由資源所屬項目的項目所有者(Project Owner)創建Package包并添加資源后,許可目標項目安裝Package。目標項目的項目所有者(Project Owner)安裝Package并通過ACL權限控制或Label權限控制方案為角色授權,然后將角色賦予用戶。
MaxCompute和DataWorks的權限關系
在了解二者間的權限關系前,您需要先理清楚MaxCompute項目和DataWorks工作空間的關系:
創建MaxCompute項目時,如果DataWorks的工作空間模式選擇為簡單模式時,實際會綁定一個MaxCompute項目。
創建MaxCompute項目時,如果DataWorks的工作空間模式為標準模式時,實際會綁定一個MaxCompute開發(_dev)項目和一個MaxCompute生產項目(Prod)。
同時,您還需要設置MaxCompute訪問者身份,決定了MaxCompute項目在賬號級別的權限策略。
通過MaxCompute的權限管理體系進行權限控制,并不會影響用戶在DataWorks界面上的操作。DataWorks提供了可視化的方式管理MaxCompute項目權限,但是通過DataWorks為用戶分配角色,有可能影響用戶操作MaxCompute資源的權限。
DataWorks和MaxCompute都存在用戶和角色的概念,二者的權限關系如下:
角色及角色權限
DataWorks為了提供項目成員在數據開發過程中需要的MaxCompute相關資源權限,預設了一些MaxCompute角色。MaxCompute角色與DataWorks預設角色的權限關系如下。
DataWorks成員角色或身份
MaxCompute角色
DataWorks開發環境/MaxCompute DEV引擎項目數據權限
DataWorks生產環境/MaxCompute PROD引擎項目數據權限
DataWorks平臺權限特征
空間管理員
Role_Project_Admin
MaxCompute引擎層面:當前項目下project/table/fuction/resource/instance/job的所有權限,以及
package
的read
權限。DataWorks層面:可進行數據開發,并且發布任務至生產環境。
默認無權限、需要在安全中心走審批流程申請。
指項目空間的管理者。可以對該項目空間的基本屬性、數據源、當前項目空間計算引擎配置和項目成員等進行管理,并為項目成員賦予項目管理員、開發、運維、部署、訪客角色。
開發
Role_Project_Dev
MaxCompute引擎層面:當前項目下project/table/fuction/resource/instance/job的所有權限,以及
package
的read
權限。DataWorks層面:可進行數據開發,但無法發布任務至生產環境。
默認無權限、需要在安全中心走審批流程申請。
開發角色的用戶能夠創建工作流、腳本文件、資源和UDF以及新建和刪除表,同時可以創建發布包,但不能執行發布操作。
運維
Role_Project_Pe
當前項目空間下project/fuction/resource/instance/job的所有權限,擁有package的Read權限和table的Read/Describe權限。
說明MaxCompute引擎層面有權限,但在DataWorks上,運維角色不能直接在界面運行節點進行任務執行操作。
默認無權限、需要在安全中心走審批流程申請。
運維角色的用戶由項目管理員分配運維權限,擁有發布及線上運維的操作權限,沒有數據開發的操作權限。
部署
Role_Project_Deploy
默認無權限。
默認無權限、需要在安全中心走審批流程申請。
部署角色與運維角色相似,但是它沒有線上運維的操作權限。
訪客
Role_Project_Guest
默認無權限。
默認無權限、需要在安全中心走審批流程申請。
訪客角色的用戶只具備查看權限,沒有權限進行編輯工作流和代碼等操作。
安全管理員
Role_Project_Security
默認無權限。
默認無權限、需要在安全中心走審批流程申請。
安全管理員僅在數據保護傘模塊中使用,用于敏感規則配置、數據風險審計等。
數據分析師
Role_Project_Data_Analyst
默認無權限。
默認無權限、需要在安全中心走審批流程申請。
僅具有數據分析模塊的操作權限。
模型設計師
Pole_Project_Erd
默認無權限。
默認無權限、需要在安全中心走審批流程申請。
該角色可以在智能建模查看模型,進行數倉規劃、數據標準、維度建模和數據指標等內容的編輯,但是不能發布模型。
空間所有者,即阿里云主賬號。
Project Owner
MaxCompute項目空間的所有者,擁有該項目空間的所有權限。
有權限
無
無
Super_Administrator
MaxCompute項目空間的超級管理員,擁有項目空間的管理類權限以及項目空間內所有類型資源的全部權限。
有權限
無
無
Admin
每一個項目在創建時,會自動創建一個Admin角色,并且為該角色授予確定的權限。即可以訪問項目空間內的所有對象、對用戶或角色進行管理、授權。與項目空間的所有者相比,Admin角色不能將Admin權限指派給用戶,不能設定項目空間的安全配置,不能修改項目空間的鑒權模型,Admin角色所對應的權限不能被修改。項目空間的所有者可以將Admin角色賦權給一個用戶,讓該用戶代理安全管理。
有權限
無
無
Role_Project_Scheduler
默認無權限。
MaxCompute引擎層面:當前項目下project/table/fuction/resource/instance/job的所有權限,以及package的read權限。
DataWorks層面:用于在生產調度環境中作為執行身份。
說明當RAM用戶或RAM角色被設置為某MaxCompute項目生產環境的調度訪問身份(即創建生產環境數據源時,被配置為默認訪問身份),則該用戶或角色會被映射為MaxCompute項目的Role_Project_Scheduler角色。默認訪問身份配置詳情,請參見創建數據源。
統一使用該身份調度執行生產環境的MaxCompute任務。
用戶及用戶權限
在DataWorks工作空間中,阿里云賬號只能為項目所有者(Project Owner),項目成員只能為項目所屬阿里云賬號下的RAM用戶。您可以通過DataWorks的工作空間管理能力添加用戶并分配角色。
在MaxCompute項目中,阿里云賬號既可以為項目所有者(Project Owner)也可以為項目成員,項目成員還可以為阿里云賬號下的RAM用戶。您可以通過
add user xxx;
命令添加用戶,并通過add role xxx;
和grant role xxx to user xxx;
命令添加角色并綁定至用戶。
在不同工作空間模式及支持的訪問者身份下,用戶與權限的關系示意圖如下。
說明DataWorks角色對應的MaxCompute權限是固定的。一旦某個用戶通過DataWorks角色獲取MaxCompute相關角色權限后,又通過命令行方式獲得了其他的MaxCompute權限,會使該用戶在MaxCompute上的權限與在DataWorks上查詢到的不一致。