欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

MLSQL編譯時權(quán)限控制示例詳解

 更新時間:2019年03月22日 08:27:32   作者:祝威廉  
這篇文章主要給大家介紹了關(guān)于MLSQL編譯時權(quán)限控制的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家學習或者使用mysql具有一定的參考學習價值,需要的朋友們下面來一起學習學習吧

前言

關(guān)于mysql的權(quán)限簡單的理解就是mysql允許你做你全力以內(nèi)的事情,不可以越界。

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

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

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

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

問題來了

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

答案是:有

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

MLSQL如果開啟了權(quán)限驗證,他會先掃描整個腳本,然后提取必要的信息,這些信息就包含了各種數(shù)據(jù)源的詳細信息,從而在運行前就可以知道你是不是訪問了未經(jīng)授權(quán)的庫表。那么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要求任何數(shù)據(jù)源,都需要使用load語句進行加載,在解析load語句時,MLSQL知道,用戶現(xiàn)在要訪問的是基于JDBC協(xié)議的數(shù)據(jù)源訪問,他通過url拿到了這些信息:

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

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

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

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

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

select * from public.abc as table1;

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

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

如何實現(xiàn)列級別控制

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

總結(jié)

MLSQL通過一些有效的限制,可以在語法解析層面直接提取了所有數(shù)據(jù)源相關(guān)信息,并且將其發(fā)送給到配套的權(quán)限中心進行判斷,避免在運行時發(fā)現(xiàn)授權(quán)拒絕問題。MLSQL此舉意義重大,使得MLSQL系統(tǒng)不再完全依賴于底層系統(tǒng)的權(quán)限控制,從而讓問題得到了極大的簡化。

好了,以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學習或者工作具有一定的參考學習價值,謝謝大家對腳本之家的支持。

相關(guān)文章

  • mysql having用法解析

    mysql having用法解析

    having字句可以讓我們篩選成組后的各種數(shù)據(jù),where字句在聚合前先篩選記錄,也就是說作用在group by和having字句前,下面通過實例給大家介紹mysql having用法,一起看看吧
    2017-10-10
  • Windows下MySQL定時備份腳本的實現(xiàn)

    Windows下MySQL定時備份腳本的實現(xiàn)

    這篇文章主要介紹了Windows下MySQL定時備份腳本的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-12-12
  • SQL多表多字段比對方法實例代碼

    SQL多表多字段比對方法實例代碼

    有時候正式庫和測試庫同一個表有字段有差異,會造成各種錯誤,下面這篇文章主要給大家介紹了關(guān)于SQL多表多字段比對方法的相關(guān)資料,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下
    2022-05-05
  • MySQL子查詢的使用詳解上篇

    MySQL子查詢的使用詳解上篇

    子查詢是在查詢語句里面再嵌套一個查詢,這是因為我們在提取數(shù)據(jù)的時候有很多不知道的數(shù)據(jù)產(chǎn)生了依賴關(guān)系。本文為大家總結(jié)了一下MySQL數(shù)據(jù)庫子查詢語法規(guī)則,感興趣的可以了解一下
    2022-08-08
  • Mysql?數(shù)據(jù)庫結(jié)構(gòu)及索引類型

    Mysql?數(shù)據(jù)庫結(jié)構(gòu)及索引類型

    這篇文章主要介紹了Mysql?數(shù)據(jù)庫結(jié)構(gòu)及索引類型,數(shù)據(jù)庫索引是?mysql?數(shù)據(jù)庫中重要的組成部分,是數(shù)據(jù)庫查詢數(shù)據(jù)速度提升的關(guān)鍵,本文將介紹數(shù)據(jù)庫索引的一些內(nèi)容,下文更多相關(guān)內(nèi)容,需要的小伙伴可以參考一下
    2022-05-05
  • mysql二進制日志文件恢復數(shù)據(jù)庫

    mysql二進制日志文件恢復數(shù)據(jù)庫

    喜歡的在服務器或者數(shù)據(jù)庫上直接操作的兄弟們你值得收藏下!不然你就悲劇了。-----(當然我也是在網(wǎng)上搜索的資料!不過自己測試通過了的!)
    2014-08-08
  • MySQL連接及基本信息查看命令匯總

    MySQL連接及基本信息查看命令匯總

    這篇文章主要針對MySQL連接及基本信息查看命令進行了詳細匯總,感興趣的小伙伴們可以參考一下
    2016-02-02
  • MySQL數(shù)據(jù)分析存儲引擎示例講解

    MySQL數(shù)據(jù)分析存儲引擎示例講解

    這篇文章主要為大家介紹了MySQL數(shù)據(jù)分析關(guān)于存儲引擎的示例講解,搞懂存儲引擎會對大家在數(shù)據(jù)分析方面有很大的幫助,有需要的朋友可以借鑒參考下
    2021-10-10
  • mysql慢查詢操作實例分析【開啟、測試、確認等】

    mysql慢查詢操作實例分析【開啟、測試、確認等】

    這篇文章主要介紹了mysql慢查詢操作,結(jié)合實例形式分析了mysql慢查詢操作中的開啟、測試、確認等實現(xiàn)方法及相關(guān)操作技巧,需要的朋友可以參考下
    2019-12-12
  • MySQL之my.cnf配置文件圖文詳解

    MySQL之my.cnf配置文件圖文詳解

    my.cnf是mysql啟動時加載的配置文件,一般會放在mysql的安裝目錄中,用戶也可以放在其他目錄加載,下面這篇文章主要給大家介紹了關(guān)于MySQL之my.cnf配置文件的相關(guān)資料,需要的朋友可以參考下
    2022-09-09

最新評論