MaxCompute安全管理指南-基础篇
背景及目的
方便和輔助MaxCompute的project owner或安全管理員進行project的日常安全運維,保障數據安全。
MaxCompute有安全模型,DataWorks也有安全模型,當通過DataWorks使用MaxCompute,而DataWorks的安全模型不滿足業務安全需求時,合理的將兩個安全模型結合使用就尤其重要。
安全模型
MaxCompute安全模型
安全體系
MaxCompute 多租戶的數據安全體系,主要包括如下內容:
用戶認證。
支持 云賬號 和 RAM 賬號 兩種賬號體系,對于RAM賬號,僅識別賬號體系不識別RAM權限體系,即可將主賬號自身的任意 RAM 子賬號加入 MaxCompute 的某一個項目中,但 MaxCompute 在對該 RAM 子賬號做權限驗證時,并不會考慮 RAM 中的權限定義。
用戶與授權管理。
在MaxCompute Project中對用戶添加(add)、移除(remove)、授權(grant)管理。
還可以通過角色(role)管理授權,MaxCompute project默認有admin role。
而授權方式包含ACL和Policy方式,本文只講ACL方式,Policy方式待后續升級篇中介紹。
ACL即似于 SQL92 定義的 GRANT/REVOKE 語法,它通過簡單的授權語句來完成對已存在的項目空間對象的授權或撤銷授權。授權語法如下:
grant actions on object to subject
revoke actions on object from subject
標簽安全策略
基于標簽的安全(LabelSecurity)是項目空間級別的一種強制訪問控制策略(Mandatory Access Control, MAC),它的引入是為了讓項目空間管理員能更加靈活地控制用戶對列級別敏感數據的訪問。
跨項目空間的資源分享。
Package是一種跨項目空間共享數據及資源的機制,主要用于解決跨項目空間的用戶授權問題。即可以分享table、Resource、function等資源給其他項目,但是無需對其他項目的用戶進行管理。
項目空間的數據保護。
主要解決“不允許用戶將數據轉移到項目空間之外”的需求。
對象操作賦權、Role 和 label 關系介紹
上個小節中介紹了MaxCompute體系包含多種策略,而各種策略賦權是權限遞增關系。以需要獲取一個L4等級表的權限來展開說明這個遞增關系,主要進行以下步驟操作:
第一步: 如果用戶未有過授權記錄,且非本項目用戶,首先需要添加一個 USER(用戶),這個過程,用戶還沒有任何實際權限。
第二步: 賦權 USER(用戶)對象的操作權限,有以下方式賦權。
1) 可以是單獨的操作權限;
2) 通過 policy 方式賦權給用戶;
3) 將 ACL 和 policy 賦權給 role 再賦權給用戶。 如果資源是沒有設置 Label 的,則此時用戶已經擁有的該資源的權限。
第三步: 對于擁有 Label 的資源,例如:數據表、打包了數據表的 package,則還需要 賦權 Label 權限。有以下四鐘 Label 賦權:
1) 針對某個數據表的字段;
2) 針對某個數據表;
3) 針對某個 package;
4) 給某個 USER(用戶)一個批量的 Label 權限,不支持 ROLE。
各權限賦權過程及關系圖如下:
數據流程保護機制和 Package 關系介紹
ProjectProtection(數據流出保護機制)是 MaxCompute 防止項目內的數據批量流出的安全功能。 開啟數據流程保護后,如果相互之間沒有建立“TrustedProject Group” ,與其它 project 的數據賦權就必須通過 Package 方式進行,Package 賦權后,對方 package 可以自主賦權 Package 內的資源給組內用戶。
部分資源(例如某些常用表、UDF 等),如想放權給其 Package 管理,也可以通過 Package 的方式,將資源打包后賦權給其他 Project。
ProjectProtection(數據流出保護機制)支持做例外處理,部分特殊的業務場景,可以針 對應用的 IP 地址、產品云賬號做 Exception 策略,以滿足特殊的數據流出需求。
DataWorks安全模型
DataWorks提供多人協同數據開發工作的平臺,其安全模型需要考慮幾方面:
企業之間數據的安全隔離。
數據開發即ETL過程中的安全問題,如生產任務如何保障不可隨意變更;如哪個成員可以進行代碼編輯調試,哪個成員可以進行發布生產任務等。
由于底層MaxCompute有自己的安全模型,項目成員做ETL過程肯定會需要MaxCompute的各種資源(table、Resource、function、instance)的相關權限。
針對第一點,DataWorks的用戶認證,DataWorks對接RAM,云賬號可作為主賬號進行開通并創建DataWorks項目,而項目成員必須為該主賬號的RAM子賬號不能是其他云賬號。
另外,同個主賬號創建的項目作為一個組織,項目與項目之間的任務可以進行依賴配置;不同主賬號創建的項目之間數據(各種任務)隔離。
針對第二點,DataWorks通過業務劃分“開發項目”、“生產項目”進行任務開發調試和穩定生產的隔離;通過成員角色控制哪個成員可以進行任務開發調試,哪個成員可以運維生產任務等。
針對第三點,DataWorks在MaxCompute Project創建成功的同時,在MaxCompute Project里對應DataWorks的角色創建role,并給不同role賦權。
MaxCompute和DataWorks權限關系
從前面介紹的MaxCompute和DataWorks兩個小節可以知道,通過MaxCompute的安全模型進行權限控制,并不會影響成員在DataWorks任何界面操作。通過DataWorks的用戶角色分配,是有可能影響成員的MaxCompute資源權限。下面我們詳細介紹這兩個產品之間權限如何交叉關聯。
項目關系
通過MaxCompute或DataWorks官網產品頁進入的控制臺創建的項目,
DataWorks 兩種選擇:
簡單模式的項目實際上是創建了關聯綁定好的一個MaxCompute project和一個DataWorks項目空間,同時在MaxCompute 的project里創建對應的幾個role,具體role權限后續小節會介紹。
標準模式的項目實際上是創建了關聯綁定好的一個開發(dev)MaxCompute project、一個生產(prod)MaxCompute project對應一個DataWorks項目空間。同時在MaxCompute 的project里創建對應的幾個role,具體role權限后續小節會介紹。
賬號認證
云賬號在DataWorks項目中只能是主賬號即項目owner,在MaxCompute既可以為owner也可以為普通user。當通過DataWorks項目成員管理添加成員時只能是添加當前項目主賬號對應的RAM子賬號。而MaxCompute可以通過命令行add user xxx;命令添加其他云賬號。
成員角色權限關系
如前面小節(DataWorks安全模型)說的DataWorks為了解決項目成員在ETL過程中需要的MaxCompute相關資源權限,綁定了一些MaxCompute role。具體是指DataWorks項目固定有幾個成員角色,同時在對應MaxCompute project上創建了對應幾個role。另外MaxCompute project本身除了project owner,也還有一個admin role。
具體權限對應如下表:
由上表可知,DataWorks角色對應的MaxCompute權限是固定的,一旦某個user通過DataWorks角色獲取MaxCompute相關role權限后,又通過命令行方式獲得MaxCompute的其他權限,會使該user在MaxCompute的權限與在DataWorks上看到的不一致。
用戶和權限關系圖
一個DataWorks項目空間綁定一個MaxCompute project,此時根據DataWorks的項目管理——MaxCompute設置中的“MaxCompute訪問身份”這個屬性設置決定DataWorks其他項目成員是否擁有MaxCompute project的權限。
標準模式,一個DataWorks項目空間綁定兩個MaxCompute project,此時固定MaxCompute的project一個是開發項目一個是生產項目,DataWorks其他項目成員根據成員角色擁有MaxCompute 開發project對應的role權限,但沒有MaxCompute生產project的權限,MaxCompute 任務需要走發布流程發布到生產project后以owner賬號提交到MaxCompute執行。
用戶與權限管理
用戶管理
角色管理
ACL(對象操作)的授權管理
Role授權管理
package授權管理
Label授權管理
安全功能啟用
設置 ProjectProtection(數據流出保護機制)
項目空間的數據保護主要解決“不允許用戶將數據轉移到項目空間之外”的需求。
開啟 Label Security(列及安全控制)
基于標簽的安全(LabelSecurity)是項目空間級別的一種強制訪問控制策略(Mandatory Access Control, MAC),它的引入是為了讓項目空間管理員能更加靈活地控制用戶對列級別敏感數據的訪問。
合理設置字段的 Label
設置訪問Project的IP白名單
設置禁止DataWorks的select結果下載到本地
如何通過其它云服務提高安全管理
使用MaxCompute過程中,會關聯使用到其他的云服務,因此也需要考慮通過其他云服務提高MaxCompute的安全管理。本章節主要介紹通過DataWorks使用MaxCompute時,添加項目成員必須會用到RAM子賬號,那么如何在RAM子賬號服務上提高安全管理。
前面《MaxCompute安全模型》章節中提到MaxCompute的用戶認證“支持 云賬號 和 RAM 賬號 兩種賬號體系,對于RAM賬號,僅識別賬號體系不識別RAM權 限體系,即可將主賬號自身的任意 RAM 子賬號加入 MaxCompute 的某一個項目中,但 MaxCompute 在對該 RAM 子賬號做權限驗證時,并不會考慮 RAM 中的權限定義。” 因此,我們只需要從RAM子賬號登錄驗證入手進行安全控制。
子賬號密碼強度設置
如果您允許子用戶更改登錄密碼,那么應該要求他們創建強密碼并且定期輪換。
您可以通過 RAM 控制臺設置密碼策略,如最短長度、是否需要非字母字符、必須進行輪換的頻率等等。
子賬號登錄掩碼設置
通過設置網絡掩碼決定哪些IP地址會受到登錄控制臺的影響,子用戶必須只能從指定的IP地址進行登錄。
及時撤銷用戶不再需要的權限
當一個子賬號對應員工由于工作職責變更而不再使用權限時,應該及時將對應子賬號的權限撤銷。
總結
以上是生活随笔為你收集整理的MaxCompute安全管理指南-基础篇的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 使用应用程序(Java/Python)访
- 下一篇: Extjs grid选中一条记录Ajax