Spark是一種流行的大數(shù)據(jù)集群計(jì)算框架,通常被大數(shù)據(jù)工程師,大數(shù)據(jù)科學(xué)家和大數(shù)據(jù)分析師用于各種用例。根據(jù)情況的不同,每種用戶類型都將要求一定范圍的數(shù)據(jù)訪問權(quán)限。與其他像Presto這樣具有內(nèi)置授權(quán)框架和細(xì)粒度訪問控制的大數(shù)據(jù)引擎不同,Spark可以直接訪問Qubole Metastore(利用Apache Hive)中存儲(chǔ)的所有表和資源。這不僅帶來安全問題,而且阻礙了增長(zhǎng)和企業(yè)采用。因此,我們很有必要在Qubole平臺(tái)上引入新的Spark數(shù)據(jù)訪問控制框架。
一、目標(biāo)
1、這些是介紹Spark訪問控制框架時(shí)考慮的一些最重要的設(shè)計(jì)目標(biāo):
2、細(xì)粒度的訪問控制應(yīng)在各種大數(shù)據(jù)引擎上統(tǒng)一應(yīng)用。
3、必須通過任何引擎查看或編輯策略,以提供一致且可預(yù)測(cè)的行為。
4、支持SparkSQL訪問方法,例如數(shù)據(jù)框或SQL語句。
5、該框架必須易于與Hive Authorization或Apache Ranger等各種策略管理器集成。
二、實(shí)施細(xì)節(jié)
考慮到這些要求,我們決定將Hive授權(quán)實(shí)施為我們的第一個(gè)策略管理器。Hive授權(quán)策略存儲(chǔ)在Qubole Metastore中,該庫充當(dāng)共享的中央組件,并存儲(chǔ)與Hive資源(如Hive表)相關(guān)的元數(shù)據(jù)。Spark在訪問Hive表或添加和修改這些策略時(shí)尊重Qubole Metastore中存儲(chǔ)的策略。
總之,我們實(shí)現(xiàn)了一個(gè)SQL標(biāo)準(zhǔn)訪問控制層,該層與當(dāng)今的Apache Hive或Presto中的層相同。以下各節(jié)詳細(xì)介紹了體系結(jié)構(gòu),并提供了一個(gè)示例說明其工作原理。
三、建筑
授權(quán)邏輯嵌入在Spark Catalyst Framework 的分析器層內(nèi)部。分析工具的規(guī)則負(fù)責(zé)解析“數(shù)據(jù)庫”,“表”和“列”等實(shí)體。從計(jì)劃中提取有關(guān)不同已解析實(shí)體的信息,并將其傳遞給Hive 授權(quán)器,后者已經(jīng)具有有關(guān)用戶的信息。然后,Hive授權(quán)器使用Qubole Metastore中存在的安全策略執(zhí)行資源級(jí)別檢查,如果用戶缺少拋出HiveAccessControlException的運(yùn)行特權(quán),則該查詢將停止執(zhí)行查詢。
四、限制表級(jí)訪問
1、假設(shè)我們有一個(gè)Hive表“工資”,其定義如下:
出于數(shù)據(jù)治理的目的,應(yīng)允許屬于財(cái)務(wù)團(tuán)隊(duì)的用戶“ Jane”訪問表,并且應(yīng)限制IT用戶“ Robin”訪問表。
2、屬于“ admin”角色的任何用戶都可以按照以下步驟限制對(duì)該表的訪問:
A、創(chuàng)建一個(gè)新角色,并將此角色授予應(yīng)該有權(quán)訪問該表的用戶,在這種情況下,將其授予用戶“ Jane”。
(用戶)sql> SET ROLE admin;
(用戶/管理員)sql> CREATE ROLE finance;
(用戶/管理員)sql>向用戶Jane授予資金;
B、向角色“金融”提供“選擇”特權(quán)。
(用戶/管理員)SQL>在工資單上授予資助以選擇角色;
3、當(dāng)“簡(jiǎn)”承擔(dān)通過“ SET ROLE ALL”命令授予的所有角色后訪問表時(shí),將顯示以下結(jié)果–
4、當(dāng)“羅賓”或未獲得“財(cái)務(wù)”角色的任何其他用戶嘗試相同的流程時(shí),我們可以預(yù)期會(huì)發(fā)生
五、限制列和行訪問
可以通過視圖來實(shí)現(xiàn)高級(jí)用例,例如限制列或行的訪問。例如,假設(shè)我們有一個(gè)名為“ finance_intern”的新角色,該角色無權(quán)訪問表“工資”中的“工資”列,而只能訪問與“財(cái)務(wù)”部門關(guān)聯(lián)的行。
A、像以前一樣,任何屬于admin角色的用戶都可以創(chuàng)建一個(gè)包含三列的新視圖(emp_id,emp_name,dept_name),在dept_name上添加一個(gè)過濾器,并提供finance-intern角色。訪問此新視圖而不是基表。
(用戶)sql> SET ROLE admin;
(用戶/管理員)sql> CREATE VIEW payroll_view AS
SELECT emp_id,emp_name,dept_name FROM工資單
dept_name ='財(cái)務(wù)';
(用戶/管理員)sql> GRANT SELECT ON payroll_view TO ROLE finance_intern;
B、分配了`finance_intern`角色的用戶可以擔(dān)任該角色并訪問視圖。結(jié)果如下:
(用戶)SQL> SET ROLE finance_intern;
C、由于訪問基表沒有被授予這個(gè)角色,我們會(huì)得到一個(gè)HiveAccessControlException如果用戶試圖訪問未經(jīng)授權(quán)的數(shù)據(jù)。
填寫下面表單即可預(yù)約申請(qǐng)免費(fèi)試聽!怕錢不夠?可先就業(yè)掙錢后再付學(xué)費(fèi)! 怕學(xué)不會(huì)?助教全程陪讀,隨時(shí)解惑!擔(dān)心就業(yè)?一地學(xué)習(xí),可推薦就業(yè)!
?2007-2022/ m.5wd995.cn 北京漫動(dòng)者數(shù)字科技有限公司 備案號(hào): 京ICP備12034770號(hào) 監(jiān)督電話:010-53672995 郵箱:bjaaa@aaaedu.cc