本文為您提供兩個常見的業務場景來介紹如何創建項目并管理成員。
業務場景一:創建完善的ETL項目
場景需求
項目需要支持多人協同開發。
成員責任劃分明確。
遵循正常的開發、調試、發布流程。生產數據需要嚴格控制。
需求分析
MaxCompute項目本身支持多人協同開發。
MaxCompute支持內置角色及自定義角色,可以通過角色為不同用戶賦予不同的權限。DataWorks也支持多種角色,可以滿足權限劃分需求。
可以通過DataWorks創建開發和生產隔離的MaxCompute項目,滿足開發、調試、發布要求,并實現數據隔離。
操作步驟
創建開發和生產項目
創建項目時,工作空間模式需要選擇標準模式。更多創建項目操作,請參見創建MaxCompute項目。
添加項目成員
創建RAM用戶并添加為項目成員,按需分配角色,例如開發、運維等。
更多創建RAM用戶信息,請參見準備RAM用戶。
更多添加項目成員并分配角色信息,請參見授權給其他用戶。
任務開發及調試
開發角色成員通過DataWorks的數據開發模塊進行任務開發、調試。如果用到生產項目的表,可以在DataWorks的數據治理模塊進行申請。
DataWorks的數據開發模塊支持多人協同開發,所有本項目的成員都可以查看任務代碼,且有編輯權限的成員都可以進行修改編輯。因此,無法很好地保密一些核心的敏感度高的代碼。有類似高保密性的任務及數據,可以由單獨項目的固定成員進行開發。
任務發布到生產環境
開發角色成員調試好任務后,進行打包。運維角色成員可以進行代碼Review后執行發布,將任務發布到生產環境。 這個過程保障任務不能隨意發布到生產環境執行。
生產環境通過Project Owner訪問MaxCompute,因此創建的Table、Function、Resource的Owner顯示的是Project Owner的賬號。這樣會出現創建的表的Owner不是創建者本人且創建表的人沒有權限查看自己創建的表的情況。
開發角色成員生產任務測試
任務發布到生產環境后,建議開發角色成員在運維中心對生產環境任務執行一次測試,以確保生產任務可正常執行。若任務執行返回成功狀態,還是需要先查看日志判斷執行是否正常,查詢結果表是否有正常的產出。通常您需要在開發界面查詢表,個人對生產環境產出的表默認無權限,可以在DataWorks的數據治理模塊進行申請。
由于開發和生產項目Owner都是同一個賬號,請謹防通過發布任務到生產項目時,將生產項目表讀寫到開發項目再通過開發項目獲取生產數據。
業務場景二:創建僅實現查詢、下載業務數據的項目
場景需求
業務單一,成員角色基本一致,后續業務不會擴展。
只需要查詢、下載業務數據進行分析。
需求分析
項目不做數據開發,需要分析的數據在其他項目中。為避免不同主賬號資源隔離,本項目的Owner必須與數據開發生產項目的Owner為同一賬號。
項目主要完成數據查詢、下載,需要每個成員用自己的權限進行數據查詢、下載。需要設置項目的訪問身份為任務負責人。
當設置訪問身份為任務負責人后,需要為每個項目成員授予對應MaxCompute的角色權限。由于需求是每個成員只能操作自己創建的表,因此需要處理好默認的角色權限。
操作步驟
創建項目
創建項目時,工作空間模式需要選擇簡單模式。更多創建項目操作,請參見創建MaxCompute項目。
創建MaxCompute自定義角色并授權
阿里云賬號通過MaxCompute客戶端執行如下命令。
--創建自定義角色。 create role custom_dev; --為自定義角色授權。 grant List, CreateInstance,CreateTable,CreateFunction,CreateResource on project prj_name to role custom_dev;
為MaxCompute的項目設置允許對象創建者默認擁有訪問權限。
阿里云賬號通過MaxCompute客戶端執行如下命令進行設置。
set ObjectCreatorHasAccessPermission=true; --實際上這個屬性默認已經為true,可以通過如下命令查看。 show SecurityConfiguration;
添加項目成員
創建RAM用戶并添加為項目成員。
更多創建RAM用戶信息,請參見準備RAM用戶。
更多添加項目成員信息,請參見授權給其他用戶。
例如添加成員時角色為開發,則添加成功后,在對應MaxCompute項目中該成員對應的角色是Role_Project_Dev。阿里云賬號可以通過
show grants for ram$阿里云賬號:RAM名稱;
命令行進行查看。修改成員的權限。
阿里云賬號通過MaxCompute客戶端執行如下命令修改成員權限。
--將成員從默認授予的角色中移除。 revoke role_project_dev from ram$阿里云賬號:RAM名稱; --給新成員授予自定義角色。 grant custom_dev to ram$阿里云賬號:RAM名稱;
該項目的成員若重新操作添加如上描述中的開發角色,則成員又會重新被授予Role_Project_Dev的角色。
該項目經過上述配置后,只能做到每個成員可以查看自己創建的表(對象),但是做不到每個成員只能查看自己創建的任務。