最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

前言

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

還有一個(gè)大家可能感慨的點(diǎn):

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

問題來了

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

答案是:有

題外話:標(biāo)題不嚴(yán)謹(jǐn),因?yàn)镸LSQL本質(zhì)是個(gè)解釋性執(zhí)行語言,不需要編譯,更好的標(biāo)題是 【解析時(shí)權(quán)限控制】。

MLSQL如果開啟了權(quán)限驗(yàn)證,他會先掃描整個(gè)腳本,然后提取必要的信息,這些信息就包含了各種數(shù)據(jù)源的詳細(xì)信息,從而在運(yùn)行前就可以知道你是不是訪問了未經(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` ;

因?yàn)镸LSQL要求任何數(shù)據(jù)源,都需要使用load語句進(jìn)行加載,在解析load語句時(shí),MLSQL知道,用戶現(xiàn)在要訪問的是基于JDBC協(xié)議的數(shù)據(jù)源訪問,他通過url拿到了這些信息:

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

當(dāng)然,這個(gè)腳本用戶還會寫入一張spam表,也一樣會被提取信息:

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

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

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

select * from public.abc as table1;

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

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

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

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

總結(jié)

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

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

相關(guān)文章

  • SQL多個(gè)字段拼接組合成新字段的常用方法

    SQL多個(gè)字段拼接組合成新字段的常用方法

    在sql語句中,有時(shí)候我們可能需要將兩個(gè)字段的值放在一起顯示,因?yàn)樗麄兺ǔJ且黄鸪霈F(xiàn)的,比如客戶名稱和客戶編號,那我們就要將這兩個(gè)字段拼接成一個(gè)字段,本文給大家介紹了幾種常見的方法,需要的朋友可以參考下
    2024-02-02
  • MySQL多表聯(lián)合查詢、連接查詢、子查詢的實(shí)現(xiàn)

    MySQL多表聯(lián)合查詢、連接查詢、子查詢的實(shí)現(xiàn)

    本文主要介紹了MySQL多表聯(lián)合查詢、連接查詢、子查詢的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-07-07
  • MySQL 中 FIELD() 自定義排序示例詳解

    MySQL 中 FIELD() 自定義排序示例詳解

    MySQL中的field()函數(shù),可以用來對SQL中查詢結(jié)果集進(jìn)行指定順序排序,這篇文章主要介紹了MySQL 中 FIELD() 自定義排序,需要的朋友可以參考下
    2024-05-05
  • MySQL分頁分析原理及提高效率

    MySQL分頁分析原理及提高效率

    這篇文章主要介紹了MySQL分頁分析原理及提高效率的相關(guān)資料,需要的朋友可以參考下
    2017-05-05
  • MySQL主從延遲問題解決

    MySQL主從延遲問題解決

    這篇文章主要介紹了MySQL主從延遲問題解決的方法,幫助大家更好的理解和使用MySQL數(shù)據(jù)庫,感興趣的朋友可以了解下
    2021-01-01
  • 學(xué)習(xí)mysql之后的一點(diǎn)總結(jié)(基礎(chǔ))

    學(xué)習(xí)mysql之后的一點(diǎn)總結(jié)(基礎(chǔ))

    學(xué)習(xí)mysql之后的一點(diǎn)總結(jié),比較適合新手朋友
    2012-05-05
  • MySQL中DATEDIFF()函數(shù)用法及返回周、月、年

    MySQL中DATEDIFF()函數(shù)用法及返回周、月、年

    這篇文章主要給大家介紹了關(guān)于MySQL中DATEDIFF()函數(shù)用法及返回周、月、年的相關(guān)資料,datediff()函數(shù)返回兩個(gè)日期之間的時(shí)間,文中通過圖文介紹的非常詳細(xì),需要的朋友可以參考下
    2023-11-11
  • MySQL連接池DataSource的使用及實(shí)踐

    MySQL連接池DataSource的使用及實(shí)踐

    DruidDataSource作為一款優(yōu)秀的數(shù)據(jù)庫連接池組件,不僅提供了高效的連接管理,還包含了豐富的監(jiān)控和診斷功能,本文主要介紹了MySQL連接池DataSource的使用及實(shí)踐,具有一定的參考價(jià)值,感興趣的可以了解一下
    2024-07-07
  • 通過mysqladmin遠(yuǎn)程管理mysql的方法

    通過mysqladmin遠(yuǎn)程管理mysql的方法

    在一些特殊場景下,想要遠(yuǎn)程重啟mysql,以便讓某些修改能及時(shí)的生效,但是mysql并沒有提供遠(yuǎn)程重啟的功能,唯一能做的就是遠(yuǎn)程關(guān)閉mysql服務(wù)
    2013-03-03
  • MySQL中l(wèi)ike模糊查詢的優(yōu)化方法小結(jié)

    MySQL中l(wèi)ike模糊查詢的優(yōu)化方法小結(jié)

    本文介紹了五種優(yōu)化MySQL中l(wèi)ike模糊查詢的方法,主要包含后綴匹配走索引、反向索引、縮小搜索范圍、使用緩存和借助全文搜索引擎這幾種,感興趣的可以了解一下
    2024-11-11

最新評論

建德市| 宁蒗| 隆回县| 武义县| 阿克苏市| 深泽县| 灵台县| 长岭县| 奈曼旗| 朔州市| 鄢陵县| 甘肃省| 泸定县| 汾阳市| 舞钢市| 边坝县| 大余县| 盐城市| 鄂温| 大理市| 玉环县| 罗田县| 富平县| 苗栗县| 体育| 尼勒克县| 岳阳市| 宜黄县| 常德市| 临颍县| 庆云县| 五大连池市| 巫山县| 开封县| 集贤县| 浑源县| 陵水| 凤冈县| 峡江县| 互助| 达日县|