1. 程式人生 > >MaxCompute安全管理指南-基礎篇

MaxCompute安全管理指南-基礎篇

背景及目的

  1. 方便和輔助MaxCompute的project owner或安全管理員進行project的日常安全運維,保障資料安全。
  2. 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。

各許可權賦權過程及關係圖如下:
undefined

資料流程保護機制和 Package 關係介紹

ProjectProtection(資料流出保護機制)是 MaxCompute 防止專案內的資料批量流出的安全功能。 開啟資料流程保護後,如果相互之間沒有建立“TrustedProject Group” ,與其它 project 的資料賦權就必須通過 Package 方式進行,Package 賦權後,對方 package 可以自主賦權 Package 內的資源給組內使用者。

部分資源(例如某些常用表、UDF 等),如想放權給其 Package 管理,也可以通過 Package 的方式,將資源打包後賦權給其他 Project。

ProjectProtection(資料流出保護機制)支援做例外處理,部分特殊的業務場景,可以針 對應用的 IP 地址、產品雲賬號做 Exception 策略,以滿足特殊的資料流出需求。

undefined

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;命令新增其他雲賬號。

undefined

成員角色許可權關係

如前面小節(DataWorks安全模型)說的DataWorks為了解決專案成員在ETL過程中需要的MaxCompute相關資源許可權,綁定了一些MaxCompute role。具體是指DataWorks專案固定有幾個成員角色,同時在對應MaxCompute project上建立了對應幾個role。另外MaxCompute project本身除了project owner,也還有一個admin role。

具體許可權對應如下表:

MaxCompute角色 MaxCompute資料許可權 DataWorks成員角色 平臺許可權特徵
project owner MaxCompute project的owner,擁有所有project的許可權。
admin 每一個project在建立時,會自動建立一個 admin 的role,並且為該role授予了確定的許可權:可以訪問project的所有物件、對user或role進行管理、對user或role進行授權。
與project Owner 相比,admin 角色不能將 admin 許可權指派給使用者,不能設定專案空間的安全配置,不能修改專案空間的鑑權模型,admin 角色所對應的許可權不能被修改。
project owner可以將這admin role賦權給一個user,讓該user代理安全管理。
role_project_admin project/table/fuction/resource/instance/job/package 的所有許可權 專案管理員 指專案空間的管理者,可對該專案空間的基本屬性、資料來源、當前專案空間計算引擎配置和專案成員等進行管理,併為專案成員賦予專案管理員、開發、運維、部署、訪客角色。
role_project_dev project/fuction/resource/instance/job/package/table 的所有許可權 開發 開發角色的使用者能夠建立工作流、指令碼檔案、資源和 UDF,新建/刪除表,同時可以建立釋出包,但不能執行釋出操作。
role_project_pe project/fuction/resource/instance/job 的所有許可權,擁有package 的 read 許可權和table 的 read/describe 許可權。 運維 運維角色的使用者由專案管理員分配運維許可權;擁有釋出及線上運維的操作許可權,沒有資料開發的操作許可權。
role_project_deploy 預設無許可權 部署 部署角色與運維角色相似,但是它沒有線上運維的操作許可權。
role_project_guest 預設無許可權 訪客 訪客角色的使用者只具備檢視許可權,沒有許可權進行編輯工作流和程式碼等操作。
role_project_security 預設無許可權 安全管理員 安全管理員僅在資料保護傘中用到,用於敏感規則配置,資料風險審計等

由上表可知,DataWorks角色對應的MaxCompute許可權是固定的,一旦某個user通過DataWorks角色獲取MaxCompute相關role許可權後,又通過命令列方式獲得MaxCompute的其他許可權,會使該user在MaxCompute的許可權與在DataWorks上看到的不一致。

使用者和許可權關係圖

一個DataWorks專案空間繫結一個MaxCompute project,此時根據DataWorks的專案管理——MaxCompute設定中的“MaxCompute訪問身份”這個屬性設定決定DataWorks其他專案成員是否擁有MaxCompute project的許可權。

image

標準模式,一個DataWorks專案空間繫結兩個MaxCompute project,此時固定MaxCompute的project一個是開發專案一個是生產專案,DataWorks其他專案成員根據成員角色擁有MaxCompute 開發project對應的role許可權,但沒有MaxCompute生產project的許可權,MaxCompute 任務需要走釋出流程釋出到生產project後以owner賬號提交到MaxCompute執行。

image

使用者與許可權管理

使用者管理

操作型別 DataWorks使用者管理 MaxCompute使用者管理
操作描述 準確新增和管理使用者,應刪除或鎖定,無屬主、閒置以及離職人員的賬號許可權,嚴控管理員、運維許可權。 應刪除或鎖定,無屬主、閒置以及離職人員的賬號權 限。 通過DataWorks新增的使用者,注意會可能授權於預設的 role。
操作角色 專案管理員 owner或admin role
現狀檢視 DataWorks專案管理頁模組的——專案成員管理檢視現有成員及角色,並確認各個成員許可權的合理性。
檢視專案下的使用者:
list users;;
檢視指定使用者擁有的許可權:
show grants for <username>;
賦權操作 DataWorks專案管理頁模組的——專案成員管理新增成員和分配角色。注意:
1.只能新增該專案負責人賬號下的RAM子賬號為專案成員;
2.新增一個成員,並分配角色,可能會在MaxCompute 賦予預設的 role 許可權。具體可參看前面《MaxCompute & DataWorks使用者和許可權關係圖》小節
成員僅加入 MaxCompute project,不在DataWorks 專案成員中體現,且無任何許可權。 需要結合“物件操作”、“Role 許可權”、“label 許可權”才能使用,所以應關注成員是否擁有“物件操作”和“label 許可權”,並對相應授權進行清理。
另外,可以新增雲賬號和RAM子賬號。
在專案空間中新增使用者:
add user <username>;
回退操作 清理成員或對應角色許可權,刪除後,會自動清除對應 MaxCompute 內的 user 和預設 role。 在專案空間中移除使用者:
remove user <username>;

角色管理

操作型別 MaxCompute role管理 DataWorks角色管理
操作描述 準確的建立role並配置role許可權,及時清理離職或轉崗人員的賬號,清理role中不必要開放的資源和許可權。
MaxCompute project建立成功後除了預設有admin role外,DataWorks還給建立幾個role具體可參考前面《成員角色許可權關係》小節。
準確的分配角色,成員工作性質發生改變需及時改變角色,嚴格控制專案管理員和運維角色的分配。
操作角色 project owner或admin 專案管理員
現狀檢視 檢視當前project所有role:list roles;
檢視role中的許可權:describe role <role_name>;
檢視某使用者在什麼role中:show grants for <username>;
檢視某個role都指派給哪些user:目前暫不支援!
DataWorks專案管理->成員管理頁面,可以點選每個角色檢視該角色下的成員。
賦權操作 MaxCompute除了預設的role,還可以自定義role,通過命令自定義role許可權並將role授權給user。
建立role:Create role <role_name>;
給角色授權:grant actions on object to <role_name>;
新增使用者到角色:GRANT <roleName> TO <full_username> ;

此外,DataWorks的專案管理->MaxCompute高階配置->自定義使用者角色頁面,可以通過介面方式建立MaxCompute自定義role、對role進行授權、將role授權給成員,但是注意通過命令列建立的role不會在這個介面顯示。
DataWorks角色是固定的不能自定義,成員新增到DataWorks專案時勾選角色分配給成員,該成員既可擁有對應角色的許可權。
回退操作 刪除角色中的使用者:REVOKE <roleName> FROM <full_username>;
撤銷對角色的授權:revoke <privList> on <objType> <objName> from role <rolename>;
刪除角色:DROP ROLE <roleName>;
如果是通過DataWorks的專案管理->MaxCompute高階配置->自定義使用者角色頁面建立的role,也通過這個頁面進行回退操作。
DataWorks的角色不能刪除,只能將某個成員的角色去掉。

ACL(物件操作)的授權管理

操作型別 說明
操作描述 回收非必須必要的物件操作授權,操作許可權涉及多種操作物件和型別,應逐一確認。
操作角色 project owner或admin role
現狀檢視 檢視指定使用者的許可權:
show grants for <username>;
檢視當前使用者的許可權:
show grants;
檢視指定物件的授權列表:
show acl for <objectName> [on type <objectType>];
檢視某 package 賦權情況案例:
show acl for alipaydw.alipaydw_for_alisec_app on type package;
賦權操作 進行某物件的操作賦權:
grant actions on object to subject;
操作、主體、客體型別表示式:
actions 型別: action_item1, action_item2, ...
object 型別:project project_name,table schema_name ,instance inst_name ,function func_name ,resource res_name
subject 型別:user full_username ,role role_name
操作、主體、客體型別,詳細說明請看官方文件
回退操作 回收某物件的操作許可權:
revoke actions on object from subject;

Role授權管理

操作型別 說明
操作描述 角色(Role)可以打包多個 ACL 許可權。當需要對一組使用者賦予相同的許可權,或者多ACL 許可權時,可以使用角色(Role)來授權。
操作角色 project owner或admin role
現狀檢視 檢視指定角色的賦權內容,以及擁有該許可權使用者:
describe role <rolename>;
檢視指定使用者擁有哪些 role 及 ACL:
show grants for <username>;
檢視當前使用者的 role 及 ACL:
show grants;
賦權操作 1. 建立角色:
create role <rolename>;
2. 給使用者指派某種角色:
grant <rolename> to <username>;
3. 給角色打包 ACL,有兩種方式:
方法一:逐一執行 ACL 授權命令。:
grant actions on object to role <rolename>;
操作、主體、客體型別表示式:
actions 型別: action_item1, action_item2, ...
object 型別:project project_name , table schema_name ,instance inst_name , function func_name , resource res_name
操作、主體型別,詳細說明見官方文件
方法二:新建 policy 檔案,將 policy 對映給 role。
Put policy <policy 檔案所在本地位置> on role <rolename>;
案例:
PUT POLICY D:\sx_default.txt ON ROLE sx_default; 將存放在 D 盤根目錄下的 policy 檔案 sx_default.txt,對映給 sx_default 角色;
Policy 配置詳見《policy 的授權》小節
回退操作 1. 刪除角色:
drop role <rolename>;
2. 撤銷角色指派:
revoke <rolename> from <username>;
3. 更改角色打包的 ACL,兩種方式:
方法一:逐一執行 ACL 更改授權命令。
revoke actions on object from role <rolename>;
方法二:更改 policy 檔案,將新的 policy 對映給 role。
Put policy <policy 檔案所在本地位置> on role <rolename>;

package授權管理

操作型別 說明
操作描述 開啟 ProjectProtection 的專案,如果沒有在同一個互信專案組(TrustedProject Group),則必須使用 package 方式賦權,package 賦權有兩種方式。確保package 合理打包和賦權,無閒置 package 賦權。
操作角色 project owner
現狀檢視 1. 瞭解本專案 Package 建立及賦權情況:
檢視已建立和已安裝的 Package 列表:
show packages;
檢視 Package 詳細資訊:
describe package <pkgname>;
2. 本專案安裝的 Package ,對使用者的授權情況:
show acl for <project_name.package_name> on type package;
賦權操作 Package建立者:
1. 建立 Package:
create package <pkgname>;
2. 將分享的資源新增到 Package:
add project_object to package package_name [with privileges privileges];
project_object 表示式:
table table_name ,instance inst_name ,function func_name ,resource res_name
3. 許可其他專案空間使用 Package:
allow project <prjname> to install package <pkgname> [using label<number>];
Package使用者:
1. 安裝 Package:
install package <pkgname>;
2. 將 package 賦權給使用者、角色,package賦權給具體使用者時,不能指定 label。(project owner 或admin 都可操作)
grant actions on package <pkgName> to user <username>;
grant actions on package <pkgName> to role <role_name>;
actions 型別:參考官方文件,一般將Package的 read許可權賦給物件既可滿足物件訪問package裡的資源。
回退操作 1. 撤銷其他專案空間使用 Package 的許可:
disallow project <prjname> to install package <pkgname>;
2. 刪除 Package:
delete package <pkgname>;
3. 將分享的資源移出 Package:
remove project_object from package package_name;
project_object 表示式:
table table_name ,instance inst_name ,function func_name ,resource res_name
4. 撤銷 package 的使用者、角色的許可權。
revoke actions on package <pkgName> from user <username>;
revoke actions on package <pkgName> from role <role_name>;

Label授權管理

操作型別 說明
操作描述 Maxcompute的欄位、表、package 分為 1~4 個等級,應根據使用者實際需要,賦予對應的 label 許可權。
操作角色 project owner
現狀檢視 1. 檢視一個使用者能訪問哪些敏感資料集:
SHOW LABEL [<level>] GRANTS [FOR USER <username>];
--省略 [FOR USER <username>]時,檢視當前使用者所能訪問的敏感資料集.
--省略<level>時,將顯示所有 label 等級的授權;
--若指定<level>,則只顯示指定等級的授權.
2. 檢視一個敏感資料表能被哪些使用者訪問:
SHOW LABEL [<level>] GRANTS ON TABLE <tablename>;--顯示指定 table 上的 Label 授權
3. 檢視一個使用者對一個數據表的所有列級別的 Label 許可權:
SHOW LABEL [<level>] GRANTS ON TABLE <tablename> FOR USER <username>;
--顯示指定使用者對指定 table 上列級別的 Label 授權
賦權操作 1. 給使用者單個表或欄位的安全許可標籤。
GRANT LABEL <number> ON TABLE <tablename>[(column_list)] TO USER <username> [WITH EXP <days>]; --預設過期時間是 180 天
舉例:
GRANT LABEL 2 ON TABLE t1 TO USER alice WITH EXP 1; --顯式授權alice 訪問 t1 表中敏感度不超過 2 級的資料,授權有效期為 1 天
GRANT LABEL 3 ON TABLE t1(col1, col2) TO USER alice WITH EXP 1; --顯式授權 alice 訪問 t1(col1, col2)中敏感度不超過3 級的資料,授權有效期為 1 天
2. 給使用者授權整個專案的安全許可標籤。
SET LABEL <number> TO USER <username>;
3. 控制 package 安裝者對 package 中敏感資源的許可訪問級別
ALLOW PROJECT <prjName> TO INSTALL PACKAGE <pkgName> [USING LABEL <number>];--由 package 建立者授權,授予 package 安裝者對 package 中敏感資源的許可訪問級別
4. 將 package 賦權給使用者、角色,package 賦權給具體使用者時,不能指定 label。
grant actions on package <pkgName> to user <username>;
grant actions on package <pkgName> to role <role_name>;
回退操作 1. 撤銷使用者單個表或欄位的安全許可標籤。
【撤銷授權】:
REVOKE LABEL ON TABLE <tablename>[(column_list)] FROM USER <username>;
【清理過期的授權】:
CLEAR EXPIRED GRANTS;
舉例:
REVOKE LABEL ON TABLE t1 FROM USER alice;--撤銷 alice對 t1 表的敏感資料訪問
2. 更改使用者授權整個專案的安全許可標籤,預設等級為 0。
SET LABEL <number> TO USER <username>;
3. 更改 package 安裝者對 package 中敏感資源的許可訪問級別,調整為其他級別,預設為 0。
ALLOW PROJECT <prjName> TO INSTALL PACKAGE <pkgName> [USING LABEL <number>];
4. 撤銷 package 的使用者、角色的許可權。
revoke actions on package <pkgName> from user <username>;
revoke actions on package <pkgName> from role <role_name>;

安全功能啟用

設定 ProjectProtection(資料流出保護機制)

專案空間的資料保護主要解決“不允許使用者將資料轉移到專案空間之外”的需求。

操作型別 說明
操作描述 設定 ProjectProtection 避免專案批量資料下載到本地電腦,出現批量資料洩露風險。
操作角色 project owner
檢視現狀 執行命令:
show SecurityConfiguration;
查是否 ProjectProtection=true
操作設定 設定 ProjectProtection 機制,預設為 false;
兩個方法設定:
DataWorks介面上設定:
進入DataWorks專案管理->MaxCompute設定->基本設定頁面,把“專案空間資料保護”屬性開啟。
命令列方式執行MaxCompute命令:
SET ProjectProtection=true [WITH EXCEPTION <policyFile>];
開啟後由於部分公共賬號,個人使用者因種種原因需要資料流出許可權,根據需要附帶 exception 例外策略(白名單),exception policy具體看升級篇介紹。
以下情形建議配置 Exception 策略
1) 需要資料流出許可權的應用系統雲賬號或 IP 地址。
2) 個人賬號開通白名單,應指定允許下載的表。
新增專案互信:
對於資料可互通的 project 可以通過專案互信的方式確保資料順利流轉。
檢視當前project 中的所有 TrustedProjects:
list trustedprojects;
在當前 project 中新增一個 TrustedProject
add trustedproject <projectname>;
在當前 project 中移除一個 TrustedProject:
remove trustedproject <projectname>;
未新增TrustedProject 的專案,申請本專案資料,需要以 package 方式授權。
回退操作 關閉 ProjectProtection 機制:
SET ProjectProtection=false;
移除 TrustedProject:
remove trustedproject <projectname> ;

開啟 Label Security(列及安全控制)

基於標籤的安全(LabelSecurity)是專案空間級別的一種強制訪問控制策略(Mandatory Access Control, MAC),它的引入是為了讓專案空間管理員能更加靈活地控制使用者對列級別敏感資料的訪問。

操作型別 說明
操作描述 開啟 LabelSecurity 確保欄位級別安全控制生效, 專案空間中的 LabelSecurity 安全機制預設是關閉的。
操作角色 project owner
檢視現狀 show SecurityConfiguration;
查是否 LabelSecurity=true
操作設定 開啟 LabelSecurity 機制,預設為 false。
Set LabelSecurity=true;
回退操作 關閉 LabelSecurity 機制:
Set LabelSecurity=false;
操作前,需要確認外部 project 資料的依賴情況,是否賦於了表的 label 許可權。

合理設定欄位的 Label

操作型別 說明
操作描述 MaxCompute資料的敏感性可以分為 0~4 級。所有資料表,可以設定安全等級,避免資料表出現不合理授權訪問情形。
檢視現狀 檢視 MaxCompute表字段的等級,兩個方式:
方式一,執行命令:DESCRIBE <tablename>;
方式二:在DataWorks的資料管理查看錶詳情中的欄位資訊。
操作設定 給表字段設定安全級別可以通過兩種方式:
方式一【推薦此方式】:
DataWorks的資料管理裡,新建表或者編輯已有表的欄位資訊,均可以設定欄位安全級別。(注意,只有Project的LabelSecurity=true,資料管理頁面才可見欄位安全級別屬性。)
方式二,執行命令:
SET LABEL <number> TO TABLE tablename[(column_list)]; -- number 取值範圍:[0, 4]。
舉例:
SET LABEL 1 TO TABLE t1; --設定表 t1 的 label 為 1 級
SET LABEL 2 TO TABLE t1(mobile, addr); --將 t1 的 mobile,addr 兩列的 label 設定為 2 級
SET LABEL 3 TO TABLE t1; --設定表 t1 的 label 為 3 級. 注意此時 mobile,addr 兩列的 label 仍為 2 級
注意:通過命令列設定自動安全級別後,在DataWorks的資料管理介面,對應表字段安全等級不同步,因此,建議通過DataWorks對錶的欄位進行安全級別設定
回退操作 將安全等級調整回原來等級。注意:欄位安全等級的上調,會導致原有的授權失效(涉及 package 授權、生產賬號和個人賬號),調整前必須通知到受影響使用者,以減少影響。

設定訪問Project的IP白名單

操作型別 說明
操作描述 設定IP白名單,指定白名單列表中的IP(console或者SDK所在的出口IP)能夠訪問這個Project。
注:
1.當前project的所有user(包括主賬號)都會受限。
2.DataWorks的機器預設在白名單內,因此通過DataWorks提交MaxCompute任務不會受此限制。
操作角色 project owner
檢視現狀 通過console執行命令:
setproject;
檢視對應的‘odps.security.ip.whitelist= ’若等號後面為空則未設定白名單列表
操作設定 設定前請特別注意:在白名單list加上自己當前機器IP,以免把自己遮蔽。
通過console執行命令:
setproject odps.security.ip.whitelist=xxx.xxx.xxx.xxx,xxx.xxx.x.x/xx,xxx.xxx.xxx.xxx-xxx.xxx.xxx.xxx;
白名單中IP列表的表示格式有三種。
單純IP:例如101.132.236.134。
子網掩碼:100.116.0.0/16。
網段:101.132.236.134-101.132.236.144。
設定IP白名單後,您需要等待五分鐘後才會生效。
若需更精細化管理,也可以通過policy授權,可參考後面的案例《project Policy 案例》。
回退操作 IP白名單清空後,MaxCompute就認為Project關閉了白名單功能。
setproject odps.security.ip.whitelist=;

設定禁止DataWorks的select結果下載到本地

操作型別 說明
描述 開發者通過DataWorks進行資料分析,通常會屏顯在IDE上並且可以下載結果。project設定ProjectProtection為true後,在本project中只要有表的讀取許可權,依然可以通過DataWorks的開發介面select後進行結果下載。
操作角色 DataWorks管理員
檢視現狀 進入DataWorks的專案管理->專案設定頁面,檢視“在本專案中能下載select結果”屬性是否開啟。
操作設定 進入DataWorks的專案管理->專案設定頁面,關閉“在本專案中能下載select結果”開關。
回退操作 進入DataWorks的專案管理->專案設定頁面,開啟“在本專案中能下載select結果”開關。

如何通過其它雲服務提高安全管理

使用MaxCompute過程中,會關聯使用到其他的雲服務,因此也需要考慮通過其他雲服務提高MaxCompute的安全管理。本章節主要介紹通過DataWorks使用MaxCompute時,新增專案成員必須會用到RAM子賬號,那麼如何在RAM子賬號服務上提高安全管理。

前面《MaxCompute安全模型》章節中提到MaxCompute的使用者認證“支援 雲賬號 和 RAM 賬號 兩種賬號體系,對於RAM賬號,僅識別賬號體系不識別RAM權 限體系,即可將主賬號自身的任意 RAM 子賬號加入 MaxCompute 的某一個專案中,但 MaxCompute 在對該 RAM 子賬號做許可權驗證時,並不會考慮 RAM 中的許可權定義。” 因此,我們只需要從RAM子賬號登入驗證入手進行安全控制。

子賬號密碼強度設定

如果您允許子使用者更改登入密碼,那麼應該要求他們建立強密碼並且定期輪換。
您可以通過 RAM 控制檯設定密碼策略,如最短長度、是否需要非字母字元、必須進行輪換的頻率等等。

undefined

子賬號登入掩碼設定

通過設定網路掩碼決定哪些IP地址會受到登入控制檯的影響,子使用者必須只能從指定的IP地址進行登入。

undefined

及時撤銷使用者不再需要的許可權

當一個子賬號對應員工由於工作職責變更而不再使用許可權時,應該及時將對應子賬號的許可權撤銷。

案例

具體請看《MaxCompute安全管理指南-案例篇》