背景:用戶在使用MaxCompute與DataWorks這兩種權限模型不清楚,並且對於相關MaxCompute的權限執行語句也不太熟悉,以至於在自己的實際操作中不能建立完整的權限策略,導致權限控制的混亂,甚至在開發過程中時常遇到權限問題的錯誤,導致延誤業務的推動進展,該篇文檔集主要的權限知識點與一體,常用的MaxCompute權限語句,以及經典的開發環境和生產環境之間的賦權示例給大家做出做出介紹。
一、MaxCompute的安全模型
二、DataWorks安全模型
三、子賬戶添加的限制
四、MaxCompute的授權管理圖
五、授權場景和注意事項
六、移除用戶的注意事項
七、成員管理的相關語句
查看成員:
添加成員:
刪除成員:
八、角色管理的相關語句:
查看角色:
創建角色:
刪除角色:
九、policy授權介紹
Policy授權則是⼀種基於主體的授權。通過Policy授權的權限數據(即訪問策略)被看做是授權主體的⼀種 ⼦資源。只有當主體(⽤戶或⻆⾊)存在時才能進⾏Policy授權操作。當主體被刪除時,通過Policy授權的 權限數據會被⾃動刪除。 Policy授權使⽤MaxCompute⾃定義的⼀種訪問策略語⾔來進⾏授權,允許或 禁⽌主體對項⽬空間對象的訪問權限。
Policy授權機制,主要解決ACL授權機制⽆法解決的⼀些復雜授權場景,⽐如:
- ⼀次操作對⼀組對象進⾏授權,如所有的函數、所有以 “taobao” 開頭的表
- 帶限制條件的授權,如授權只會在指定的時段內才會⽣效、當請求者從指定的IP地址發起請求時授權才 會⽣效、或者只允許⽤戶使⽤SQL(⽽不允許其它類型的Task)來訪問某張表。
Policy授權語句格式如下:
policy基本術語
- 主體(Principal) 主體(Principal)是指訪問策略中的權限被指派的對象。⽐如,訪問策略”允許張三在 2011年12⽉31⽇之前對資源SampleBucket執⾏CreateObject操作”中的主體是”張三”。
- 操作(Action) 操作(Action)是指主體對資源的訪問⽅法。⽐如,訪問策略”允許張三在2011年12⽉ 31⽇之前對資源SampleBucket執⾏CreateObject操作”中的操作是”CreateObject”。
- 資源(Resource) 資源(Resource)是指主體請求訪問的對象。⽐如,訪問策略”允許張三在2011年12 ⽉31⽇之前對資源SampleBucket執⾏CreateObject操作”中的資源是”SampleBucket”。
- 訪問限制(Access Restriction) 訪問限制(Access Restriction)是指權限⽣效的限制條件。⽐如,訪 問策略”允許張三在2011年12⽉31⽇之前對資源SampleBucket執⾏CreateObject操作”中的限制 條件是”在2011年12⽉31⽇之前”。
- 效⼒(Effect) 授權效⼒包括兩個⽅⾯:允許操作(Allow)和拒絕操作(Deny)。通常,Deny有更⾼ 的效⼒,在權限檢查時會優先使⽤。 注意:“拒絕操作”和”撤銷授權”是完全獨⽴的兩個概念,撤銷授 權通常包括撤銷對Allow和Deny這兩種不同效⼒的授權,⽐如傳統數據庫⼀般⽀持Revoke和Revoke Deny兩種操作
授權語句(Statement)結構
- Effect: 指明該條語句的權限類型,取值必須為Allow或Deny。
- Principal: 如果Policy在授權時是與⽤戶或⻆⾊綁定,那么就不允許再指定Principal,⽐如 MaxCompute的Role Policy。 如果Policy在授權時是與項⽬空間或項⽬空間內的對象綁定,那么必 須指Principal,⽐如MaxCompute的Project Policy。
- Action: 它表示授權操作,可以是⼀個或多個操作名,可⽀持通配符號” ” 和 ” ? ” 。 例 如 , A c t i o n = “ ” 表示所有的操作。
- Resource: 它表示授權對象,可以是⼀個或多個對象名,可⽀持通配符號” ” 和 ” ? ” 。 例 如 R e s o u r c e = “ ” 表示所有的對象。
- Condition Block: 條件塊是該條授權語句所述權限得以⽣效的條件。條件塊結構請參⻅下節的描述。
十、Policy的實際使用授權案例
基於以前的經驗,我們在odps項目中創建了兩個基本的角色,分別是開發角色dev、查詢角色adhoc。
我們對於角色的權限要求大概分如下兩類:
- A開發權限:不能修改project屬性但可以讀取project信息,有建表、建資源、建Job等各種常用權限;可以修改、刪除自己在開發庫中創建的表,但對於其他同學創建的表則只有讀取權限。
- B查詢權限:只能讀取project信息,不能建表、建資源、建Job;只能讀取表,但沒有任何修改、刪除權限。
我們的安全策略大致是這樣的:
- 開發庫上,給所有開發同學賦予A開發權限。
- 生產庫上,給所有開發同學賦予B查詢權限。
以下是開發權限的policy:policy_dev_dev.txt內容:
角色授權語句:
用戶授權語句:
一下是查詢權限的policy:policy_dw_adhoc.txt內容
角色授權語句:
用戶授權語句:
本文作者:耿江濤
本文為阿里雲內容,未經允許不得轉載。