阿里云云原生一體化數倉 - 數據安全能力解讀

阿里云云棲號 發佈 2022-08-04T15:51:46.570275+00:00

MaxCompute是一款多功能、低成本、高性能、高可靠、易於使用的數據倉庫和支持全部數據湖能力的大數據平台,支持超大規模、serverless和完善的多租戶能力,內建企業級安全能力和管理功能,支持數據保護和安全共享,數據/生態開放,可以滿足數據倉庫/BI、數據湖非結構化數據處理和分析、湖倉一體聯邦計算、機器學習等多業務場景需求。

MaxCompute產品簡介

MaxCompute是一款多功能、低成本、高性能、高可靠、易於使用的數據倉庫和支持全部數據湖能力的大數據平台,支持超大規模、serverless和完善的多租戶能力,內建企業級安全能力和管理功能,支持數據保護和安全共享,數據/生態開放,可以滿足數據倉庫/BI、數據湖非結構化數據處理和分析、湖倉一體聯邦計算、機器學習等多業務場景需求。

阿里雲MaxCompute提供了全託管的服務,用戶開箱即用,只需要關注自己的業務和資源使用,真正做到Paas平台Saas模式使用。MaxCompute是一個真正的雲原生多租戶平台,可以做到較低的資源成本,讓用戶獲得更低的TCO。租戶之間可以方便的共享數據,而不必在多個Hadoop實例之間開接口。從接入和使用角度看,簡單易用,支持多引擎, 可上可下。很多使用MC的客戶反饋,不是業務不能遷移,只是再也沒有其他更好用更經濟的選擇了。從數倉管理能力上看,MaxCompute提供統一元數據、統一的帳號和權限體系,完善的企業級安全能力。從資源使用角度上看,自適應的按需彈性資源,避免資源浪費或不足,節省成本又滿足需求。業務負載隔離,消除業務間資源爭搶。從規模和數據存儲角度看,支持TB到EB級的大規模部署應用和擴展。連接廣泛外部數據源,支持結構化和非結構化數據存儲和處理,支持聯邦計算。

MaxCompute積累了阿里多年雙11自動優化和穩定可靠能力,這一點是任何Hadoop商業版產品所不具備的, MaxCompute憑藉先發優勢和阿里持續自身業務錘鍊,讓產品非常成熟穩定。

MaxCompute產品架構和周邊生態

MaxCompute是基於大數據技術的數倉,採用了自研的分布式存儲引擎pangu、分布式資源管理調度器fuxi,和分布式高性能SQL引擎,與開源的HDFS、Yarn、hive+Spark SQL關係對等,但能力全面領先開源。MaxCompute的存儲包括數倉schema on write模式所需的庫表,也包括最近開放的volume非結構化存儲。MaxCompute採用了大數據存算分離的架構,可以在大規模場景下進一步的降低成本,降低客戶TCO。MaxCompute提供了沙箱運行環境,讓用戶的UDF和業務代碼更安全也更靈活的運行在多租環境中,免去了在數據外部由用戶管理私有代碼的麻煩和限制。

MaxCompute通過tunnel服務,收斂了數據入倉的通道,對外只暴漏tunnel endpoint,讓數據出入倉更安全,同時檢查文件格式、收集元數據,用於後續讀寫優化,以極小的代價獲得相比Hive 近一個數量級的性能領先差異,這正是數倉模式的優勢所在。MaxCompute還提供了web控制台、IDE studio、CMD、SDK等多種連接方式, MMA遷移工具幫助用戶快速遷移到MaxCompute,Lemming提供邊緣端的採集、計算和雲邊協同計算。

MaxCompute對接OSS數據湖對象存儲,通過DLF獲取湖上元數據,可以做到湖倉一體聯邦,這時MaxCompute是倉,OSS是湖。對接客戶的Hadoop系統,通過自動獲取hms中元數據,自動映射hive database為MaxCompute 項目的external project,免去建外表即可直接將倉內數據與hive、HDFS數據關聯計算,這時MaxCompute是倉,Hadoo是湖。

MaxCompute周邊的二方生態和三方生態也構成了完整的數據鏈路和大數據解決方案。MaxCompute可以通過Dataworks數據集成獲取批加載的數據,還可以直接對接Flink、Kafka、Datahub等消息隊列或流式數據,實時入倉。Hologres可與MaxCompute無縫集成,權限互認、pangu直讀,基於數倉模型直接獲得交互式分析的高並發、低延時能力。MaxCompute的黃金搭檔DataWorks是一套與MaxCompute一起發展起來的開發治理工具,有了DataWorks可以更好的發揮MC的能力和優勢。

MaxCompute還支持PAI、ES、OS以及ADB、SLS等二方引擎,實現機器學習、檢索、數據集市分析、日誌處理等能力。並支持QuickBI、DataV等報表、dashboard、大屏應用。數據中台治理工具Dataphin、DataQ都將基於MaxCompute的多年阿里最佳實踐,產品化賦能客戶。更有Tableau、帆軟等三方生態工具已經與MaxCompute互認,給用戶更多選擇。

關於數據安全的問題

可以從四個方面預設數據安全問題,下面對MaxCompute數據安全能力的解讀會對應到這些問題上,解決企業數據安全的問題,保障數據安全。

what

where

who

whether

有什麼數據?

數據在哪裡?

誰能用數據?

是否被濫用?

有什麼用戶?

從哪裡可以訪問數據?

誰用了數據?

是否有泄露風險?

有什麼權限?

數據能下載到哪裡?


是否有丟失風險?

MaxCompute安全體系

按照防數據濫用、防數據泄露、防數據丟失這個三個點,看下MaxCompute的安全體系核心功能。先從MaxCompute的數據安全核心能力開始。

防數據濫用包含:細粒度的權限管理(ACL/Policy/Role)、Label Security分級管理

防數據泄露包含:認證、租戶隔離、項目空間保護、網絡隔離

MaxCompute和DataWorks關係,以及MaxCompute隔離機制

在當前雲上體系中,用戶需在阿里雲註冊一個主帳號,才可以申請開通MaxCompute,創建項目空間。

MaxCompute的付費模式有兩種,按量付費(後付費共享資源)和包年包月(預付費獨享資源),當開通MaxCompute項目時,需要開通DataWorks工作空間,DataWorks可以理解為一站式開發治理工具,包含數據採集、腳本開發、調度、數據服務等。MaxCompute包含表、欄位、UDF、resource、元數據等。DataWorks一個工作空間可以幫忙兩個項目,也就是兩個MaxCompute project,一個開發環境一個生產環境,這兩個project是隔離的,防止生產環境中關鍵敏感數據的泄露。

MaxCompute訪問與控制

當前MaxCompute訪問認證鑒權經過以下步驟,身份認證用於身份識別;請求源檢查(ip白名單)用戶檢查是否設置網絡隔離;項目空間狀態檢查,檢查項目空間是否開啟項目保護等安全設置;檢查MaxCompute項目的labelsecurity|rle|policy|acl等權限管理規則。接下來就按照這個順序講一下MaxCompute的安全機制,到權限管理部分再詳細展開講一下權限體系。

認證流程

  • 每個阿里雲帳號都需要創建相應的訪問密鑰AccessKey,主要用於在阿里雲各產品間互相認證使用權限。
  • 用戶可以在雲控制台中自行創建AccessKey。AccessKey由AccessKeyId和AccessKeySecret組成,其中AccessKeyId是公開的,用於標識用戶身份,AccessKeySecret是秘密的,用於用戶身份的鑑別。AccessKey可以更換。
  • 當用戶向MaxCompute發送請求時,首先需要將發送的請求按照MaxCompute指定的格式生成簽名字符串,然後使用AccessKeySecret對簽名字符串進行加密以生成請求籤名。MaxCompute收到用戶請求後,通過AccessKeyId找到對應的AccessKeySecret,以同樣的方法提取簽名字符串和驗證碼,如果計算出來的驗證碼和提供的一致即認為該請求是有效的;否則,MaxCompute將拒絕處理這次請求,並返回HTTP 403錯誤。

當用戶真正發生請求時,會把(Accessld、請求時間、請求參數)+簽名以固定的格式發送到MaxCompute前端,MaxCompute前端包含HttpServer和tunnel(數據上傳下載通道)。這個過程需要檢查用戶請求是否過期。當MaxCompute拿到用戶請求的AK信息,跟AK服務上的AK信息做對比,如果AK信息一致,則代表用戶請求有效。MaxCompute的數據資源及計算資源的訪問入口都需經過身份驗證。用戶認證 檢查請求 Request 發送者的真實身份:正確驗證消息發送方的真實身份,正確驗證接收到的消息在途中是否被篡改。雲帳號認證使用消息簽名機制,可以保證消息在傳輸過程中的完整性 Integrity 和真實性 Authenticity。

RAM子帳號

  • MaxCompute支持RAM鑒權。RAM(Resource Access Management)是阿里雲提供的資源訪問控制服務。通過RAM,主帳號可以創建出子帳號,子帳號從屬於主帳號,所有資源都屬於主帳號,主帳號可以將所屬資源的訪問權限授予給子帳號。
  • 用戶對MaxCompute資源訪問分為兩種,即用戶主帳號訪問和用戶子帳號訪問。主帳號是阿里雲的一個帳號主體,主帳號下可以包含不同的子帳號以便用戶可以靈活使用。MaxCompute支持主子帳號的權限訪問策略。
  • 當用戶使用主帳號訪問時,MaxCompute會校驗該主帳號是否為對應資源的所有者,只有對應資源的所有者才具備訪問該資源的權限。
  • 當用戶使用子帳號訪問時,此時會觸發子帳號授權策略。MaxCompute會校驗該子帳號是否被對應主帳號授予了訪問該資源的權限,同時也會校驗該子帳號對應的主帳號是否具有該資源的所有者權限。

一個主帳號可以把當前主帳號下的RAM帳號加入MaxCompute project,也可以把其他主帳號加入MaxCompute project,但不可以把其他主帳號下的RAM帳號加入MaxCompute project。

RAM Role

  • RAM角色(RAM role)與RAM用戶一樣,都是RAM身份類型的一種。RAM角色是一種虛擬用戶,有確定的身份,可以被賦予一組權限策略,但沒有確定的登錄密碼或訪問密鑰。RAM角色需要被一個受信的實體用戶扮演,扮演成功後實體用戶將獲得RAM角色的安全令牌,使用這個安全令牌就能以角色身份訪問被授權的資源。
  • 您可以通過RAM訪問控制台創建RAM角色並修改RAM角色的權限策略,然後將RAM角色添加至MaxCompute項目。後續項目中的RAM用戶可以扮演該RAM角色執行操作。
  • RAM角色為訪問控制平台中的角色,非MaxCompute項目內的角色。
  • RAM Role是跨產品之間訪問數據的一個角色

角色

  • 角色(Role)是MaxCompute內一組訪問權限的集合。當需要對一組用戶賦予相同的權限時,可以使用角色來授權。基於角色的授權可以大大簡化授權流程,降低授權管理成本。當需要對用戶授權時,應當優先考慮是否應該使用角色來完成。
  • 一個用戶可以被分配到多個角色。從而擁有這些角色的權限的合集。
  • MaxCompute角色有兩種類別帳戶級別和項目級別。

角色類別

角色名稱

角色說明

帳戶級別(tenant)

Super_Administrator

MaxCompute內置的管理角色。除了不能創建項目、刪除項目、開通服務,其他在MaxCompute上的操作權限等同於阿里雲帳號。

Admin

MaxCompute內置的管理角色。用於管理所有對象及網絡連接(Networklink)的權限。

項目級別(Project)

Project Owner

項目所有者。用戶創建MaxCompute項目後,該用戶為此項目的所有者,擁有項目的所有權限。除項目所有者之外,任何人都無權訪問此項目內的對象,除非有項目所有者的授權許可。

Super_Administrator

MaxCompute內置的管理角色。擁有操作項目內所有資源的權限和管理類權限。權限詳細信息,請參見項目級別管理角色權限說明。項目所有者或具備Super_Administrator角色的用戶可以將Super_Administrator角色賦予其他用戶。

Admin

MaxCompute內置的管理角色。擁有操作項目內所有資源的權限和部分基礎管理類權限。權限詳細信息,請參見項目級別管理角色權限說明。項目所有者可以將Admin角色賦予其他用戶。Admin角色不能將Admin權限賦予其他用戶、不能設定項目的安全配置、不能修改項目的鑒權模型、所對應的權限不能被修改。

自定義角色

非MaxCompute內置的角色,需要用戶自定義。

租戶

  • 每個帳號是一個租戶(建議一個一級部門對應一個獨立的租戶),租戶間的數據安全隔離是在邏輯層控制的,並非物理隔離。
  • 租戶是計量和計費的主體。
  • 通過多租戶機制,各部門可以獨立管理自己的數據。除非顯式授權,否則租戶之間無法訪問對方的數據。
  • 租戶可以擁有一個或多個項目。來自多個部門成員也可以共用一個項目(類似虛擬聯合項目組)
  • 系統提供統一的權限管理模型,即不管是項目內部的數據授權,還是項目之間的數據授權,都遵循同一套權限管理機制。
  • 在物理層面,如果存在多個集群,那麼每個租戶歸屬其中一個集群,即一個租戶不能跨多個集群存儲數據。但是在邏輯層面,用戶是無需關心該租戶的實際物理存儲集群的,底層集群的分布對用戶透明。

項目空間用戶管理

Alice 創建一個 名為 WonderLand的項目,自動成為 Owner

沒有 Alice 的授權,其他任何人都無法訪問 WonderLand

Alice 要授權 Bob 允許他訪問 WonderLand中的一些對象:

首先,Bob 要有一個合法的雲帳號或者是Alice的RAM子帳號

然後,Alice 要 把 Bob 的帳號加到項目中來

最後,賦一些對象的權限給 Bob

Alice 要禁止 Bob 訪問項目,則直接將他的帳號從項目中移除即可

Bob 雖然被移除出了項目,但他之前被授予的權限仍然保留在項目中。

下次一旦他被 Alice 加入同一個項目,原有的權限將會被自動激活。 除非徹底清除Bob的權限。

控制訪問

Ip白名單

  • MaxCompute支持在訪問認證基礎上增強的一種以IP白名單的方式,進行訪問控制。
  • 可以配置project訪問機器的白名單來進行限制Ip訪問。
  • 如果使用應用系統(如ODPSCMD或者SDK客戶端)進行項目空間數據訪問,需要配置ODPSCMD或者SDK客戶端所在的部署機器的IP位址。如果使用了代理伺服器或者經過了多跳代理伺服器來訪問MaxCompute服務實例,需要添加的IP位址為最後一跳代理伺服器的IP位址。
  • 一些其他需要訪問MaxCompute服務實例中所有project的其他上層業務系統IP發生變化的時候,如果沒有全局性IP白名單配置,需要找到所有設置白名單的project列表一個個進行新IP的修改配置,非常容易出錯。為此MaxCompute實現了系統級別IP白名單功能,系統級別IP白名單是MaxCompute實例服務級全局性配置。

當用戶請求提供的IP是否跟MaxCompute元數據存儲的白名單匹配,做一個項目級別的檢查,如果IP匹配允許訪問。白名單格式允許固定IP、掩碼或者IP段的方式。可以查看下面的例子

作用範圍:項目空間

白名單格式:101.132.236.134、100.116.0.0/16、101.132.236.134-101.132.236.144

設置白名單:adminConsole;setprojectodps.security.ip.whitelist=101.132.236.134,100.116.0.0/16

關閉白名單:清空白名單*

VPC訪問MaxCompute

MaxCompute作為阿里雲開發的海量數據處理平台,在安全性方面需要滿足安全隔離規範的要求。因此,MaxCompute團隊增加了MaxCompute對專有網絡(VPC)的支持,為MaxCompute配置使用限制,即MaxCompute VPC的限制。目前MaxCompute支持VPC的具體情況如下所示:

  • 經典網絡/VPC網絡/Internet網絡三網隔離,只能訪問各自對應的endpoint及VIP。
  • 經典網絡能夠訪問所有project 。
  • 沒有配置VPCID及IP白名單的project可以被三種網絡中請求通過的相應域名訪問,沒有限制。
  • 配置了VPC_ID的project只能被對應的VPC訪問。
  • 配置了IP白名單的project只能被對應的機器訪問 。
  • 對於加了代理的訪問請求,判斷為最後一跳代理IP及VPCID為準 。

下圖為具體示例

下圖綠色部分為經典網絡部分,藍色為用戶本身的VPC網絡,紅色為公共雲訪問。

  • 經典網絡中只能訪問Intranet_inner
  • VPC網絡中中只能訪問Intranet_public
  • Internet網絡中只能訪問Internet_vip
  • 經典網絡能夠訪問所有project
  • 配置了VPC_ID的project只能被對應的VPC訪問
  • 配置了Ip白名單的project只能被對應機器訪問
  • 沒有配置VPCID及Ip白名單的project可以被三種網絡中請求通過相應域名訪問,沒有限制,如P5
  • 對於加了代理的訪問請求,判斷為最後一跳代理IP及VPCId為準
  • 左側連接線為準,其他連接將不能訪問

公共雲MaxCompute訪問外部網絡

服務映射方案(外網)

適用於通過UDF或外部表訪問處於外網中的目標IP或域名的場景。需要提工單申請,如果目標IP或域名不存在安全限制,審核通過後即可訪問目標IP或域名。

服務映射方案(VPC)

適用於MaxCompute與VPC間的網絡已連接,需要通過UDF或外部表訪問處於VPC網絡中的單個IP或域名的場景。只需要將MaxCompute項目所屬地域的IP網段添加至VPC的安全組,並將目標IP或域名所屬VPC實例添加至MaxCompute項目,完成雙向授權後,即可訪問目標IP或域名。

專有網絡連接方案

適用於通過外部表、UDF或基於湖倉一體架構訪問處於VPC網絡下的RDS、HBase集群、Hadoop集群場景。您需要通過VPC網絡管理控制台進行授權以及配置安全組,在MaxCompute控制台創建MaxCompute與VPC網絡之間的連接,配置RDS、HBase集群、Hadoop集群等目標服務安全組,以此來建立MaxCompute與目標服務間的網絡通路。

直接連通方案

適用於通過UDF或外部表訪問阿里雲OSS、OTS(Tablestore)服務的場景。OSS、OTS服務與MaxCompute連通無需申請開通專有網絡。

項目空間保護

當有project:WonderLand、SecretGarden,可能有以下風險導致數據流出。
1、SQL:create table SecretGarden.Gotit as select * from WonderLand.customers;

2、MR:通過MR將表讀出,然後寫入SecretGarden中去

3、導出:通過數據導出工具,將該表數據導出

4、PAI:將數據間接導出

5、其他.....

當啟動項目保護模式,也就是設置ProjectProtection規則:數據只能流入,不能流出
set ProjectProtection = true

設置後,上述的4種操作將統統失效,因為它們都觸犯了ProjectProtection規則。

當啟動項目保護但依舊需要對某些表可以允許流出時,有兩種方案

方案1:在設置項目保護(ProjectProtection)的同時,附加一個例外策略(exception):

set ProjectProtection = true with exception ;

方案2:將兩個相關的項目空間設置為互信(TrustedProject),則數據的流向將不會被視為違規:

add trustedproject = SecretGarden;

應用場景

安全特性:

受保護的MC項目,允許數據流入,禁止未顯式授權的數據輸出

應用場景:

避免將高敏感的數據(例如企業員工工資信息)被隨意導出到不受保護的項目中

實現邏輯:將高敏感的數據所在的MaxCompute項目設置為強保護模式,這樣該數據只能在當前受保護的項目中被訪問到,用戶即便已獲得數據訪問權限也無法在項目之外讀取這份數據或者將數據導出項目。經過加工或脫敏後產生的新數據,經過顯示授權之後,可以流出受保護的項目。

安全特性:

受保護的MaxCompute項目,對數據訪問行為進行多因素校驗,包括數據流出目的地(IP位址、目標項目名稱)、限制數據訪問時間區間等20多個維度。即便用戶帳號密碼被盜取,也不能隨意拿走數據。

應用場景:

擔保模式的數據交換

場景說明:兩個單位要使用對方的敏感數據,但是又不願意、不允許把數據直接給到對方,怎麼做?

實現邏輯:雙方將數據導入到受保護的項目中(黑盒子),在受保護的項目中完成兩邊數據的整合加工,產生一個不敏感的結果數據,經過顯示授權之後,可以流出受保護的項目,返回給雙方。這樣雙方都使用到了對方的數據,卻拿不走。

數據訪問控制機制

權限檢查順序

MaxCompute的權限檢查順序如下:LabelSecurity Label檢查--> plicy(DENY直接返回)policy檢查--> ACL(綁定role)ACL檢查,role和用戶權限疊加-->package 跨project的權限檢查。我們也按照這個順序講一下MaxCompute的權限相關的功能。

授權方式

授權需要三部分內容,主體(被授權人),客體(MaxCompute項目中的對象或行為),操作(與客體類型有關)。授權時,需要把用戶加入項目內,再分配一個或多個角色,這樣就會繼承角色內所有的權限。

授權的內容包括:表(可以按欄位授權)、函數、資源

有3種訪問控制方式:ACL(Access Control List)、Policy、Label

授權對象:單個用戶、角色

應用場景描述:

當租戶Owner決定對另一個用戶B授權時,首先將該用戶B添加到自己的租戶中來。只有添加到租戶中的用戶才能夠被授權。用戶B加入租戶之後,可以被分配到一個或多個角色(也可以不分配任何角色),那麼該用戶B將自動繼承所有這些角色所擁有的各種權限。當一個用戶離開此項目團隊時,租戶Owner需要將該用戶從租戶中移除。用戶一旦從租戶中被移除,該用戶將不再擁有任何訪問此租戶資源的權限。

ACL(Access Control Lists)授權

ACL權限控制為白名單授權機制,即允許用戶或角色對指定對象執行指定操作。ACL權限控制方式簡單明了,可實現精準授權。

  • 主體:被授權人,必須存在於project中。
    • 授權人為執行授權操作的用戶。授權人需要具備為目標客體和目標操作授權的權限,才可以執行授權操作。
    • 使用阿里雲帳號執行授權操作時,支持為當前帳號下的RAM用戶和其他阿里雲帳號授權。
    • 使用RAM用戶帳號執行授權操作時,僅支持為隸屬同一個阿里雲帳號的其他RAM用戶授權,不支持為其他帳號授權。
  • 客體:對象:項目、表/視圖、欄位、函數、資源、實例、Package
  • 角色(role)是一組權限的集合
  • 對象刪除時,所有相關的ACL也被刪除

因此向項目中添加用戶並授權可以有以下兩種方式,通過添加用戶並授權,或者創建角色,對角色授權,添加用戶,再對用戶授予角色。

示例

grant CreateTable, CreateInstance, List on project myprj to user Alice;

增加用戶權限

grant worker to aliyun$abc@aliyun.com;

加用戶進角色

revoke CreateTable on project myprj from user Alice;

刪除用戶權限

權限說明

客體(Object)

操作(Action)

說明

支持的授權人

Project

Read

查看項目自身(不包括項目中的任何對象)的信息。

項目所有者(Project Owner)

Write

更新項目自身(不包括項目中的任何對象)的信息。

List

查看項目所有類型的對象列表。例如show tables;、show functions;等。

項目所有者(Project Owner)

具備Super_Administrator或Admin角色的用戶

CreateTable

在項目中創建表(Table)。例如create table <table_name>...;。

CreateInstance

在項目中創建實例(Instance),即運行作業。

CreateFunction

在項目中創建自定義函數(Function)。例如create function <function_name> ...;。

CreateResource

在項目中添加資源(Resource)。例如add file|archive|py|jar <local_file>... ;、add table <table_name> ...;。

All

具備上述Project的所有權限。

Table

Describe

讀取表的元數據信息,包含表結構、創建時間、修改時間、表數據大小等。例如desc <table_name>;。

表所有者

項目所有者(PO)

具備Super_Administrator角色的用戶

具備Admin角色的用戶(不支持修改表所有人)

Select

查看表的數據。例如select * from <table_name>;。

Alter

修改表的元數據信息,包含修改表所有人、修改表名稱、修改列名、添加或刪除分區等。例如alter table <table_name> add if not exists partition ...;。

Update

更新表數據。例如insert into|overwrite table <table_name> ...;、update set ...;、delete from …;。

Drop

刪除表。例如drop table <table_name>;。

ShowHistory

查看表的備份數據信息。例如show history for table <table_name>;。

All

具備上述Table的所有權限。

Function

Read

讀取自定義函數(MaxCompute UDF)的程序文件。

函數所有者

項目所有者(PO)

具備Super_Administrator或Admin角色的用戶

Write

更新自定義函數。

Delete

刪除自定義函數。例如drop function <function_name>;。

Execute

調用自定義函數。例如select <function_name> from ...;。

All

具備上述Function的所有權限。

Resource

Read

讀取資源。

資源所有者

項目所有者(PO)

具備Super_Administrator或Admin角色的用戶

Write

更新資源。

Delete

刪除資源。例如drop resource <resource_name>;。

All

具備上述Resource的所有權限。

Instance

Read

讀取實例。

項目所有者(PO)

具備Super_Administrator或Admin角色的用戶

Write

更新實例。

All

具備上述Instance的所有權限。


Download

對角色或用戶使用Tunnel下載表、資源、函數、實例的行為進行管控



Label

為表或列數據設置敏感等級標籤
為用戶或角色設置訪問許可等級標籤


Policy授權

  • Policy授權是一種新的授權機制,它主要解決ACL授權機制無法解決的一些複雜授權場景,比如:
  • 一次操作對一組對象進行授權,如所有的函數、所有以 「abc_」 開頭的表。
  • 帶限制條件的授權,如授權只會在指定的時段內才會生效、當請求者從指定的IP位址發起請求時授權才會生效、或者只允許用戶使用SQL(而不允許其它類型的Task)來訪問某張表。
  • Policy授權機制使用訪問策略語言(Access Policy)來描述授權。策略語言目前支持20種訪問條件(即從20個維度來限制對一張表的訪問,例如訪問來源IP位址)

Policy結構和示例

當用戶已經被賦予內置角色時,如果需要對用戶的操作權限進行更精細化的管理,無法通過ACL權限控制方案解決此類授權問題。此時,可以通過Policy權限控制方案,新增角色,允許或禁止角色操作項目中的對象,並將角色綁定至用戶後,即可實現精細化管控用戶權限。

Policy支持的語法結構如下,可以對主體、行為、客體、條件、是否效果進行規則定義,例如對訪問時間、訪問ip進行限制。

ACL和Policy差異

LabelSecurity

前面兩種權限控制方式(ACL和Policy)都屬於DAC(即自主訪問控制Discretionary Access Control)

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

DAC vs MAC

------------------------

強制訪問控制機制(MAC)獨立於自主訪問控制機制(DAC)。為了便於理解,MAC與DAC的關係可以用下面的例子來做個類比。

對於一個國家來說(類比一個項目),這個國家公民要想開車(類比讀數據操作),必須先申請獲得駕照(類比申請SELECT權限)。這些就屬於DAC考慮的範疇。

但由於這個國家交通事故率一直居高不下,於是該國新增了一條法律:禁止酒駕。此後,所有想開車的人除了持有駕照之外,還必須不能喝酒。這個禁止酒駕就相當於禁止讀取敏感度高的數據。這就屬於MAC考慮的範疇。

LabelSecurity安全等級

  • LabelSecurity需要將數據和訪問數據的人進行安全等級劃分。數據敏感等級取值範圍為0~9。數值越大,安全級別越高。用戶或角色最高可訪問的敏感等級與數據敏感等級標籤相對應。
  • 在政府和金融機構的最佳實踐中,一般將數據的敏感度標記分為四類:0級 (不保密, Unclassified), 1級 (秘密, Confidential), 2級 (機密, Sensitive), 3級 (高度機密, Highly Sensitive)。
  • 在對數據和人分別設置安全等級標記之後,LabelSecurity的默認安全策略如下:
    • (No-ReadUp) 不允許用戶讀取敏感等級高於用戶等級的數據,除非有顯式授權。
    • (Trusted-User) 允許用戶寫任意等級的數據,新創建的數據默認為0級(不保密)。
  • 租戶中的LabelSecurity安全機制默認是關閉的,租戶Owner可以自行開啟。LabelSecurity安全機制一旦開啟,上述的默認安全策略將被強制執行。當用戶訪問數據表時,除了必須擁有Select權限外,還必須獲得讀取敏感數據的相應許可等級。

比如下方用戶A的Label是3級,用戶有這張表的select權限,應該是可以查到這張表所有的數據,但開啟 LabelSecurity之後,安全等級為4級的數據是訪問不到的。

LabelSecurity應用場景

安全特性

  • 不允許用戶讀取敏感等級高於用戶等級的數據(No-ReadUp),除非有顯示授權

應用場景:

  • 限制所有非Admin用戶對一張表的某些敏感的列的讀訪問

實現邏輯:把Admin用戶設置為最高等級,非Admin用戶用戶設置為某個普通等級(例如Label=2),那麼除了Admin用戶之外,其他所有人都訪問不了 Label>2 的數據。

安全特性

  • 不允許用戶寫敏感等級不高於用戶等級的數據(No-WriteDown)

應用場景:

  • 限制已獲得敏感數據訪問許可的用戶肆意傳播和複製敏感數據

場景說明:張三由於業務需要而獲得了等級為3的敏感數據的訪問權限。但管理員仍然擔心張三可能會將敏感等級為3的那些數據寫入到敏感等級為2的列中,從而導致敏感等級為2的李四也能訪問這份數據。

實現邏輯:將安全策略設置為 No-WriteDown,從而禁止張三將數據寫入低於他自身等級的數據列

Package授權(跨項目的數據分享)

Package是一種跨項目空間共享數據及資源的機制,主要用於解決跨項目空間的用戶授權問題。

  • 當多個組織中的用戶協同工作時,數據提供方不方便把其他項目的用戶都加入自己的項目
  • Package支持用戶跨project,跨組織進行授權
  • 數據提供方」打包授權後不管」
  • Package優先級高於項目空間保護

管理package 安裝package

管理package裡面的資源 授權package的資源到本地用戶角色

管理package的授權項目

數據提供者可以在創建、添加資源、授權可安裝package項目的環節控制共享數據,數據消費方可以在安裝package、首選package資源到本地用戶角色環節,管理數據使用和權限。

MaxCompute其他安全能力

再來看一下MaxCompute為了保證數據安全的其他平台級支撐能力。

防數據濫用包含:定期審計

防數據泄露包含:沙箱隔離、存儲/傳輸加密

防數據丟失包含:備份恢復、容災

系統安全--基於沙箱的縱深防禦體系

MaxCompute中所有計算是在受限的沙箱中運行的,多層次的應用沙箱,從KVM級到Kernel級。系統沙箱配合鑒權管理機制,用來保證數據的安全,以避免出現內部人員惡意或粗心造成伺服器故障。用戶的業務進程是託管在MaxCompute引擎側執行,所以權限會有隔離。但用戶提交的UDF/MR程序可能會:

  • 惡意耗盡集群資源(CPU, Memory, Network, Disk);
  • 直接訪問Pangu文件,竊取或篡改其他用戶數據;
  • 竊取Linux節點上飛天系統進程的敏感數據(如Tubo的capability);
  • ......

MaxCompute不同於其他多租系統,會把用戶代碼放在外部環境中實現,然後通過接口對接。用戶需要在其他環境中實現、調試、對接,自己保證並發、安全等。MaxCompute全託管模式可以讓用戶的私有代碼通過沙箱環境,跑在MaxCompute的環境中,由MaxCompute實現並發和安全隔離,簡單易用且完全自由的實現用戶自定義的邏輯。

安全審計

MaxCompute 還提供精準的、細粒度的數據訪問操作記錄,並會長期保存。 MaxCompute平台體系所依賴的功能服務模塊非常之多,我們可以把它稱之為底層服務棧。對於數據操作記錄來說, MaxCompute 會收集服務棧上的所有操作記錄,從上層table/column級別的數據訪問日誌,一直到底層分布式文件系統上的數據操作日誌。最底層分布式文件系統上處理的每一次數據訪問請求,也都能追溯到MaxCompute哪個項目空間中的哪個用戶的哪個作業發起的數據訪問。日誌包括task、tunnel、endpoint訪問等操作,以及授權、label、package 等信息,詳見元倉或information_schema。

公共雲實時審計日誌,事中預警、事後分析

完整記錄用戶在MaxCompute項目內的操作行為。

接入阿里雲Action Trail服務: 查看檢索+投遞(日誌/OSS)。

滿足客戶實時審計、問題回溯分析等需求。

存儲加密和傳輸加密

傳輸加密 MaxCompute採用Restfull的接口,伺服器接入採用https,其任務調用及數據傳輸安全性由https保證

存儲加密 ,MaxCompute支持TDE透明加密,防拷貝。存儲加密支持MC託管密鑰,也支持基於KMS的BYOK(用戶自定義密鑰), 支持AES256等主流加密算法,專有雲還支持國密算法SM4 。

備份恢復

MaxCompute持續備份功能,無需手工操作備份,自動記錄備份每一次的DDL或DML操作產生的數據變化歷史,可在需要時對數據恢復到特定歷史版本。系統會自動備份數據的歷史版本(例如被刪除或修改前的數據)並保留一定時間,可以對保留周期內的數據進行快速恢復,避免因誤操作丟失數據。該功能不依賴外部存儲,系統默認為所有MaxCompute項目開放的數據保留周期為24小時,備份和存儲免費,當項目管理員修改備份保留周期超過1天時,MaxCompute會對超過1天的備份數據按量計費。

容災

公有雲異地容災

  • 為 MaxCompute項目指定備份位置到備份集群後,自動實現主集群與備份集群的數據複製,達到主集群與被集群數據的一致,實現異地數據容災。
  • 故障切換時,MaxCompute項目從主集群切換到備份集群後,使用備份集群的計算資源訪問備份集群的數據,完成服務的切換和恢復(fail over)。
  • 目前用戶還需要切換frontend和開通計算資源、以及容災決策修改默認集群。

專有雲容災

  • 適合金融級容災備份場景
  • 統一數據資源視圖,統一權限管理模型,元數據近實時同步,數據定時同步,用戶無感知
  • MaxCompute平台內部做數據分布管理,大數據管家一鍵切換主備,業務不中斷
  • 由控制集群記錄項目默認集群,主備模式也可利用備份集群的計算資源(1建議備集群縮容擴到主集群,2 在備集群容災預留資源外創建非容災單集群項目, 此類項目後續也不可改為容災 )
  • RPO依賴同步周期,RTO秒級或分鐘級(受災難決策影響)
  • 注意複製鏈路的網絡延遲(建議低於20ms) 和帶寬(按需)要求

DataWorks安全能力

最後從應用安全的層次看一下DataWorks和MaxCompute結合帶來的數據安全的能力。

防數據濫用包含:安全中心、授權審批

防數據泄露包含:數據脫敏

大數據平台全流程數據安全保障

大數據平台安全架構包含基礎安全平台可信、MaxCompute大數據平台安全、應用安全。

本次分享主要是MaxCompute大數據平台安全能力,包括元數據管理、審計日誌以及從採集、傳輸、存儲、處理、交換、銷毀這幾方面來描述MaxCompute應用了哪些能來保障用戶安全。

在引擎安全能力之上要有應用來配合才能在業務側實現安全能力,包括權限的申請、敏感數據識別、訪問統計等。

數據地圖

數據地圖是在元數據基礎上提供的企業數據目錄管理模塊,涵蓋全局數據檢索、元數據詳情查看、數據預覽、數據血緣和數據類目管理等功能。數據地圖可以更好地查找、理解和使用數據。

安全中心

DataWorks的安全中心,能夠快速構建平台的數據內容、個人隱私等相關的安全能力,滿足企業面向高風險場景的各類安全要求(例如,審計),無需額外配置即可直接使用該功能。

數據權限管理

安全中心提供精細化的數據權限申請、權限審批、權限審計等功能,實現了權限最小化管控,同時,方便查看權限審批流程各環節的進展,及時跟進處理流程。

數據內容安全管理

安全中心提供的數據分級分類、敏感數據識別、數據訪問審計、數據源可追溯等功能,在處理業務流程的過程中,能夠快速及時識別存在安全隱患的數據,保障了數據內容的安全可靠。

安全診斷的最佳實踐

安全中心提供的平台安全診斷、數據使用診斷等功能,在符合安全規範要求的前提下,提供了診斷各類安全問題的最佳實踐。保障業務在最佳的安全環境,更有效的執行。

數據保護傘

數據保護傘是一款數據安全管理產品,提供數據發現、數據脫敏、數據水印、訪問控制、風險識別、數據審計、數據溯源等功能。

關於數據安全的問題的回答

根據上文的分享,可以回答出之前四個方面的問題。

what

有什麼數據? -- > 了解數據 及時清理

有什麼用戶? -- > 認證、租戶隔離、項目空間保護

有什麼權限? -- > 細粒度的權限管理、ACL/Policy/Role

where

數據在哪裡? -- > 認證、租戶隔離、項目空間保護

從哪裡可以訪問數據? -- > 沙箱隔離

數據能下載到哪裡? -- > 網絡隔離

who

誰能用數據? -- > 安全中心、授權審批

誰用了數據? -- > 定期審計、元數據/日誌

whether

是否被濫用? -- > Label Security 分級管理

是否有泄露風險? -- > 數據脫敏

是否有丟失風險? -- > 備份恢復、容災、存儲/傳輸加密

原文連結:https://click.aliyun.com/m/1000351847/

本文為阿里雲原創內容,未經允許不得轉載。

關鍵字: