MaxCompute安全管理指南-基礎篇

背景及目的

  1. 方便和輔助MaxCompute的project owner或安全管理員進行project的平常安全運維,保障數據安全。
  2. MaxCompute有安全模型,DataWorks也有安全模型,當經過DataWorks使用MaxCompute,而DataWorks的安全模型不知足業務安全需求時,合理的將兩個安全模型結合使用就尤爲重要。

安全模型

MaxCompute安全模型

安全體系

MaxCompute 多租戶的數據安全體系,主要包括以下內容:html

  • 用戶認證
    支持 雲帳號 和 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等級表的權限來展開說明這個遞增關係,主要進行如下步驟操做:bash

第一步: 若是用戶未有過受權記錄,且非本項目用戶,首先須要添加一個 USER(用戶),這個過程,用戶尚未任何實際權限。網絡

第二步: 賦權 USER(用戶)對象的操做權限,有如下方式賦權。app

1) 能夠是單獨的操做權限;
2) 經過 policy 方式賦權給用戶;
3) 將 ACL 和 policy 賦權給 role 再賦權給用戶。 若是資源是沒有設置 Label 的,則此時用戶已經擁有的該資源的權限。
複製代碼

第三步: 對於擁有 Label 的資源,例如:數據表、打包了數據表的 package,則還須要 賦權 Label 權限。有如下四鍾 Label 賦權:運維

1) 針對某個數據表的字段;
2) 針對某個數據表; 
3) 針對某個 package;
4) 給某個 USER(用戶)一個批量的 Label 權限,不支持 ROLE。
複製代碼

各權限賦權過程及關係圖以下:
undefinedspa

數據流程保護機制和 Package 關係介紹

ProjectProtection(數據流出保護機制)是 MaxCompute 防止項目內的數據批量流出的安全功能。 開啓數據流程保護後,若是相互之間沒有創建「TrustedProject Group」 ,與其它 project 的數據賦權就必須經過 Package 方式進行,Package 賦權後,對方 package 能夠自主賦權 Package 內的資源給組內用戶。命令行

部分資源(例如某些經常使用表、UDF 等),如想放權給其 Package 管理,也能夠經過 Package 的方式,將資源打包後賦權給其餘 Project。3d

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

及時撤銷用戶再也不須要的權限

當一個子帳號對應員工因爲工做職責變動而再也不使用權限時,應該及時將對應子帳號的權限撤銷。

相關文章
相關標籤/搜索