亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

MLSQL中怎么實現編譯時權限控制

發布時間:2021-06-04 16:34:12 來源:億速云 閱讀:129 作者:Leah 欄目:MySQL數據庫

本篇文章為大家展示了MLSQL中怎么實現編譯時權限控制,內容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細介紹希望你能有所收獲。

權限控制,對于MLSQL而言的重要程度可以說是生命線。 MLSQL需要面對各式各樣的資源訪問,比如MySQL, Oracle,HDFS,Hive,Kafka,Sorl,ElasticSearch,Redis,API,Web等等,不同用戶對這些數據源(以及表,列)的權限是不一樣的。

傳統模式是,每個用戶都需要有個proxy user,然后到每個數據源里面給這個proxy user進行授權。 這看起來似乎就是麻煩點,但是在實際操作中,基本是很難執行的,不同的數據源在不同的團隊里面,那么整個申請流程可能要天甚至周計了。
如果上面的問題已經讓人氣餒,那么對于采用Hive做數倉的公司,可能對HIve權限訪問更讓人絕望。Hive的授權模式是跟著Linux用戶走的,也就是Spark啟動用戶是誰,誰就有權限訪問,這個對于多租戶的MLSQL應用來說,則是完全不可行了,比如啟動Spark的是sparkUser,但是真正執行的人,其實可能是張三,李四等等。Hive就無法知道是具體哪個人完成的,只知道是sparkUser。

還有一個大家可能感慨的點:

我們好不容易寫了個腳本,跑了一個小時,突然腳本失敗,一看,第350行那里訪問的數據源權限不足。 這可真是讓人惱火。

問題來了

那么,怎么才能在腳本運行前,就知道腳本里涉及到的資源是不是都被授權了?

答案是:有

題外話:標題不嚴謹,因為MLSQL本質是個解釋性執行語言,不需要編譯,更好的標題是 【解析時權限控制】。

MLSQL如果開啟了權限驗證,他會先掃描整個腳本,然后提取必要的信息,這些信息就包含了各種數據源的詳細信息,從而在運行前就可以知道你是不是訪問了未經授權的庫表。那么MLSQL是怎么做到的呢?我們來看下面的信息:

connect jdbc where
driver="com.mysql.jdbc.Driver"
and url="jdbc:mysql://${ip}:${host}/db1?${MYSQL_URL_PARAMS}"
and user="${user}"
and password="${password}"
as db1_ref;

load jdbc.`db1_ref .people`
as people;

save append people as jdbc.`db1_ref.spam` ;

因為MLSQL要求任何數據源,都需要使用load語句進行加載,在解析load語句時,MLSQL知道,用戶現在要訪問的是基于JDBC協議的數據源訪問,他通過url拿到了這些信息:

db: db1
table: people
operateType: load
sourceType: mysql
tableType: JDBC

當然,這個腳本用戶還會寫入一張spam表,也一樣會被提取信息:

db: db1
table: people
operateType: save
sourceType: mysql
tableType: JDBC

然后還有一張臨時表people,所以這個腳本總共有三張表信息,之后這些信息會被發送到AuthCenter里進行判斷,AuthCenter會告訴MLSQL那張表是沒有對當前用戶授權的,如果發現未經授權的表,MLSQL會直接拋出異常。整個過程中,完全不會執行任何物理計劃,只是對腳本的信息抽取。

在MLSQL中,我們不能在select語句里訪問hive表,只能通過load語句加載,比如下面的句子會報錯:

select * from public.abc as table1;

我們無權在select語句中訪問public.abc庫,如果需要使用,你可以通過如下方式完成:

load hive.`public.abc ` as abc;
select * from abc as table1;

如何實現列級別控制

MLSQL在解析load語句的時候,會詢問當前用戶訪問的表,有哪些列是被授權的,然后會改寫最后load的語句,提供一個新的視圖,該視圖只有用戶被授權的列。

上述內容就是MLSQL中怎么實現編譯時權限控制,你們學到知識或技能了嗎?如果還想學到更多技能或者豐富自己的知識儲備,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

嫩江县| 五原县| 积石山| 神木县| 盐津县| 浑源县| 通河县| 兴和县| 图片| 铁岭县| 神池县| 吉木乃县| 固镇县| 巴里| 慈溪市| 玛曲县| 台中县| 安顺市| 临颍县| 山东| 万安县| 澜沧| 手游| 淮滨县| 富源县| 南涧| 宁海县| 望江县| 天柱县| 九龙坡区| 青铜峡市| 鄂托克前旗| 凤山市| 平山县| 绥滨县| 屯留县| 台中县| 揭东县| 电白县| 霍山县| 安新县|