基于Sentry實現(xiàn)數(shù)據(jù)訪問權(quán)限控制

Sentry初識


Sentry是適用于Hadoop生態(tài)環(huán)境、基于角色的授權(quán)管理系統(tǒng)蹋艺,可以模塊化集成到HDFS、Hive黄刚、Impala捎谨。它是一個策略引擎,運行定義授權(quán)規(guī)則憔维,以校驗用戶對數(shù)據(jù)模型的訪問請求涛救。

授權(quán)粒度

? ? Sentry數(shù)據(jù)訪問授權(quán)的實現(xiàn)依賴于授權(quán)對象和操作,授權(quán)對象定義要受授權(quán)規(guī)則約束的對象业扒,可以是服務(wù)器(server)检吆、數(shù)據(jù)庫、表程储、視圖甚至是列蹭沛;操作定義運行的操作粒度,包括查找(select)章鲤、刪除(delete)摊灭、創(chuàng)建(create)等。授權(quán)對象和操作級別的組合模式提供了不同特權(quán)級別的訪問控制败徊。

????在某些場景下帚呼,管理員可以使用視圖的方式限制對行或列的訪問,能一定程度上減少權(quán)限設(shè)置的工作量集嵌。

Role

????角色是一個權(quán)限集合萝挤,定義授權(quán)規(guī)則的基本單位。角色的概念允許將多個授權(quán)規(guī)則集合到一起根欧,然后再把權(quán)限相同的用戶分到一個角色里怜珍,很方便后續(xù)權(quán)限管理維護。比如不同業(yè)務(wù)的人員訪問不同的業(yè)務(wù)表凤粗,可以建多個角色酥泛,再給角色賦予相對應(yīng)的業(yè)務(wù)表訪問權(quán)限今豆,如果這類用戶要修改權(quán)限,只需對角色進行權(quán)限更改柔袁。

Group

????組是一個用戶集合呆躲,默認(rèn)情況下Sentry使用Hadoop中配置的組映射機制(比如使用OS的用戶組),Sentry使用Hadoop配置的組映射機制捶索,以確保Sentry看到組映射和Hadoop生態(tài)系統(tǒng)中其他組件看到的相同插掂。把一個Group加到多個Role里,這樣就給用戶分配到了權(quán)限腥例,可以將多個用戶分到一個組里辅甥。組的概念進一步降低了權(quán)限管理的復(fù)雜度。

授權(quán)一般操作

????1燎竖、創(chuàng)建角色

????2璃弄、給角色賦權(quán)限

????3、用戶所屬組加入到授權(quán)實體(角色)

Sentry與Hive构回、Impala夏块、Hue集成


? ? Hive、Impala等集成Sentry后可以提高數(shù)據(jù)訪問的安全性纤掸、限制用戶訪問特定資源脐供。

? ??如果Hadoop集群是用Cloudera Manager管理的,安裝Sentry就特別簡便茁肠,在cm上next患民、next就可以了,安裝后和Hive垦梆、Impala匹颤、Hue的集成也很簡單,只需要在對應(yīng)的組件配置界面上勾選上sentry就可以了托猩,比如:

如果Hive集成了Sentry印蓖,會強制啟用數(shù)據(jù)庫中的存儲通知設(shè)置,開啟這個配置后京腥,對一個表進行大并發(fā)DDL操作(比如刪除分區(qū)赦肃、增加分區(qū)等)時可能導(dǎo)致Hive Metastore超時。

????通過hive管理Sentry:hive和Sentry集成后公浪,可在beeline通過命令管理Sentry權(quán)限他宛,需要注意的是Hive Cli不支持Sentry管理。賦權(quán)用GRANT語句欠气,權(quán)限回收用REVOKE語句厅各。如前所述,權(quán)限對象包括服務(wù)(SERVER)预柒、數(shù)據(jù)庫(DATABASE)队塘、表(TABLE)袁梗,權(quán)限操作包括:ALL、SELECT憔古、UPDATE遮怜。

賦權(quán)例子:

創(chuàng)建角色:CREATE ROLE <role name>

? ? 組分配角色:GRANT ROLE <role name> TO GROUP <group name>

????服務(wù)級賦權(quán):GRANT <ALL|SELECT|UPDATE> ON SERVER <server name> TO ROLE <role name>

????數(shù)據(jù)庫賦權(quán):GRANT <ALL|SELECT|UPDATE> ON DATABASE <database name> TO ROLE <role name>

????表賦權(quán):GRANT <ALL|SELECT|UPDATE> ON <database name>.<table name> TO ROLE <role name>

權(quán)限回收例子:

?回收數(shù)據(jù)庫權(quán)限:REVOKE <ALL|SELECT|UPDATE> ON DATABASE <database name> FROM ROLE <role name>

查看某個角色的權(quán)限:SHOW GRANT ROLE <role name>

????Sentry集成到Hue的好處:在beeline管理sentry權(quán)限不夠值觀,要輸入命令鸿市,而Hue上是以圖形化實現(xiàn)等價操作锯梁,包括創(chuàng)建role、配置role的權(quán)限策略焰情、給group分配role等涝桅。具體的在hue上的相關(guān)操作比較簡單,不再贅述烙样。

????需要注意的是配置管理sentry權(quán)限的用戶,要有所有表的訪問權(quán)限蕊肥,否則看到的數(shù)據(jù)庫谒获、表不完全。

? ? Hadoop用戶壁却、用戶組和Hue用戶批狱、用戶組以及Sentry角色的關(guān)系:

????如前所述,Sentry使用Hadoop用戶組策略展东,而Hadoop默認(rèn)是OS用戶組赔硫,Hue和Sentry集成后,就要求用戶組同時在Hue和OS里都要創(chuàng)建盐肃。

Hue權(quán)限初識


Hue權(quán)限總體上可以分為兩類:一類是功能權(quán)限爪膊、一類是數(shù)據(jù)權(quán)限

????功能權(quán)限是對Hue上一系列功能使用的授權(quán)砸王,比如用戶登陸Hue推盛、使用Hive引擎、使用Impala引擎以及管理用戶等功能性權(quán)限谦铃;數(shù)據(jù)權(quán)限的粒度是數(shù)據(jù)級別的耘成,就是對數(shù)據(jù)庫、數(shù)據(jù)表的訪問權(quán)限驹闰,甚至是字段的訪問權(quán)限瘪菌,數(shù)據(jù)權(quán)限控制用戶能看到哪些對象,對避免信息泄露嘹朗、提高數(shù)據(jù)安全性是非常有用的师妙。

? ? 管理Hue的功能權(quán)限相對較簡單,過程是先創(chuàng)建用戶骡显、用戶組疆栏,創(chuàng)建后的用戶默認(rèn)就有了登錄Hue的權(quán)限曾掂,而用戶組是基本的權(quán)限管理單位。把用戶分到用戶組壁顶,最后再給用戶組賦予特定的權(quán)限珠洗,這樣用戶就有了分配后的權(quán)限。一個企業(yè)一般都有統(tǒng)一的LDAP認(rèn)證體系若专,Hue也可以集成LDAP许蓖,這樣避免用戶創(chuàng)建、密碼管理等維護成本调衰,下面會有相信闡述膊爪。

????Hue沒有數(shù)據(jù)授權(quán)的功能,但可以依賴Sentry實現(xiàn)嚎莉,和Sentry的集成是這篇文章的主要內(nèi)容米酬,在談Sentry前先聊下Hue集成LDAP,這可讓我們從用戶管理這塊解脫出來趋箩。

Hue集成LDAP


如前所述赃额,通過與LDAP集成,用戶可以使用LDAP目錄中存儲的現(xiàn)有憑證登錄Hue叫确,將 Hue與LDAP集成后跳芳,無需在Hue中獨立管理用戶信息。

下面演示集成步驟:

1竹勉、身份驗選擇證LDAP飞盆,啟用ldap身份驗證

?2、并配置LDAP Server url次乓。ldaps://開頭的url對用戶名吓歇、密碼以加密形式傳輸,ldap://是以明文形式傳輸

3檬输、配置搜索綁定機制照瘾,設(shè)置search_bind_authentication以啟用搜索綁定;

查找用戶和組的搜索庫的專有名稱通過base_dn配置設(shè)置進行定義丧慈。

????還有一種是使用直接綁定機制析命,使用直接綁定時,必須使用精確的nt_domain 或ldap_username_pattern進行身份驗證逃默。使用直接綁定時鹃愤,如果定義了 nt 域 (通過 nt_domain 配置設(shè)置進行定義) 屬性,則使用以下形式創(chuàng)建用戶可分辨名稱模板:<login username>@nt_domain完域。此模板用于從基本可分辨名稱開始软吐,搜索所有目錄子樹。如果未配置 nt 域吟税,則 Hue 搜索用戶的精確可分辨名稱模式 (通過 ldap_username_pattern 配置設(shè)置進行定義)凹耙。在這種情況下姿现,服務(wù)器從基本可分辨名稱開始,在所有目錄子樹中搜索匹配 ldap_username_pattern 值肖抱。

一般首選方法是搜索綁定备典,本文也是按照搜索綁定做的。

4意述、LDAP身份驗證首先綁定到服務(wù)器并建立連接提佣。隨后,建立的連接用于任何后續(xù)查詢以搜索LDAP用戶信息荤崇。配置綁定到ldap服務(wù)的信息拌屏,bind_dn:定義綁定可分辨名稱 (或 DN) ;bind_password:配置設(shè)置綁定密碼

Sentry環(huán)境測試

?一术荤、Hive

JDBC訪問帶Sentry環(huán)境的Hive倚喂,測試不同用戶對hive數(shù)據(jù)的訪問權(quán)限,實現(xiàn)見下:

如果用戶沒有訪問權(quán)限瓣戚,會報異常:

? 二务唐、Impala

JDBC訪問帶Sentry環(huán)境的impala,需要注意的是連接的url带兜,設(shè)置成AuthMech=3。

? 三吨灭、Spark SQL查詢Hive

hive引擎使用hadoop的mapReducer引擎做文件解析和查詢刚照,spark使用的是自己的sql引擎做的解析,把每個數(shù)據(jù)庫表當(dāng)成一個RDD喧兄,直接操作底層HDFS无畔。所以對于沒有集成Sentry的HDFS來說,實現(xiàn)代碼沒有任何差別吠冤。

? 四浑彰、Hive查Hbase

Hive提供了與HBase的集成,使得能夠在HBase表上使用HQL語句進行查詢 插入操作以及進行Join和Union等復(fù)雜查詢拯辙。sentry同樣也能對hive查hbase的表進行權(quán)限設(shè)置郭变,測試代碼同hive,不再贅述涯保。

本文首發(fā)于公眾號:data之道

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末诉濒,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子夕春,更是在濱河造成了極大的恐慌未荒,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,682評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件及志,死亡現(xiàn)場離奇詭異片排,居然都是意外死亡寨腔,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,277評論 3 395
  • 文/潘曉璐 我一進店門率寡,熙熙樓的掌柜王于貴愁眉苦臉地迎上來迫卢,“玉大人,你說我怎么就攤上這事勇劣【副埽” “怎么了?”我有些...
    開封第一講書人閱讀 165,083評論 0 355
  • 文/不壞的土叔 我叫張陵比默,是天一觀的道長幻捏。 經(jīng)常有香客問我,道長命咐,這世上最難降的妖魔是什么篡九? 我笑而不...
    開封第一講書人閱讀 58,763評論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮醋奠,結(jié)果婚禮上榛臼,老公的妹妹穿的比我還像新娘。我一直安慰自己窜司,他們只是感情好沛善,可當(dāng)我...
    茶點故事閱讀 67,785評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著塞祈,像睡著了一般金刁。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上议薪,一...
    開封第一講書人閱讀 51,624評論 1 305
  • 那天尤蛮,我揣著相機與錄音,去河邊找鬼斯议。 笑死产捞,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的哼御。 我是一名探鬼主播坯临,決...
    沈念sama閱讀 40,358評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼恋昼!你這毒婦竟也來了尿扯?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,261評論 0 276
  • 序言:老撾萬榮一對情侶失蹤焰雕,失蹤者是張志新(化名)和其女友劉穎衷笋,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,722評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡辟宗,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,900評論 3 336
  • 正文 我和宋清朗相戀三年爵赵,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片泊脐。...
    茶點故事閱讀 40,030評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡空幻,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出容客,到底是詐尸還是另有隱情秕铛,我是刑警寧澤,帶...
    沈念sama閱讀 35,737評論 5 346
  • 正文 年R本政府宣布缩挑,位于F島的核電站但两,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏供置。R本人自食惡果不足惜谨湘,卻給世界環(huán)境...
    茶點故事閱讀 41,360評論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望芥丧。 院中可真熱鬧紧阔,春花似錦、人聲如沸续担。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,941評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽物遇。三九已至秫筏,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間挎挖,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,057評論 1 270
  • 我被黑心中介騙來泰國打工航夺, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留蕉朵,地道東北人。 一個月前我還...
    沈念sama閱讀 48,237評論 3 371
  • 正文 我出身青樓阳掐,卻偏偏與公主長得像始衅,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子缭保,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,976評論 2 355

推薦閱讀更多精彩內(nèi)容