有贊大數據平臺安全建設實踐

一、概述

在大數據平臺建設初期,安全也許并不是被重點關注的一環。大數據平臺的定位主要是服務數據開發人員,提高數據開發效率,提供便捷的開發流程,有效支持數倉建設。大數據平臺的用戶都是公司內部人員。數據本身的安全性已經由公司層面的網絡及物理機房的隔離來得到保證。那么數據平臺建設過程中,需要考慮哪些安全性方面的問題?

環境隔離,數據開發人員應當只需關注自己相關業務域的數據,也應該只能訪問這一部分數據。從數據的角度,減小了被接觸面,降低了被誤操作的可能。從數據開發人員的角度,只能訪問自己業務域的數據,在數據開發的過程中,可以減少干擾項,提高效率。

數據脫敏,有些敏感數據即使是公司內部的數據開發人員,也需要限制其直接訪問的權限。

明晰權責,各業務域數據都有相應的負責人,對自己的數據負責。同時,所有數據訪問與操作都有審計信息記錄,對數據的轉化與流動有據可查。

最后,大數據平臺的目標是賦能數據開發人員,提高數據開發效率,而安全管理必然會降低數據平臺的便利性。如何平衡安全和便利性的關系,尤為重要。

有贊大數據平臺安全建設是在大數據平臺本身的發展以及數倉元數據建設的過程中不斷演進的。概括起來可以分為三個階段。

二、基于 ranger +組件 plugin 的權限控制

在大數據平臺剛開始構建的時候,我們重點關注的是基礎服務、任務調度、監控預警等方面。數據安全這一塊,只有有限的幾個數倉同學有數據讀寫權限,而各業務組的同學都只有讀權限。隨著公司的發展,業務量的提升,按業務進行數據隔離的需求開始變的強烈。

當時,我們對各方需求進行了梳理,主要為以下幾點。將數據按業務域劃分,數據開發人員只能訪問相關業務域的數據,粒度為表或字段級別。業務域可以和公司組織架構相對應,相關部門默認有相應權限。可以方便的進行權限申請與審批。調研對比各種實現方案之后,我們選擇了 ranger +組件 plugin 的權限管理方案。其中 ranger+ hiveServer2 plugin 的架構圖如下( ranger + spark thrift server plugin 類似):

\"image\"

所有數據訪問在 Hive Server 中進行鑒權,通過公司的 LDAP 服務進行用戶認證。當時的入口有 hue、數據平臺和 beeline,只有 beeline 的用戶需要進行 LDAP 認證,而 hue 和數據平臺的用戶已經認證過了,只要傳 proxy user 過來進行鑒權即可。為了支持業務域與公司組織架構相對應,需要從公司的 OA 系統將部門組織信息分別導入 ranger 以及 hadoop 進行用戶組的映射。另外,擴展 hue 增加了一個權限申請與審批的模塊。

這樣的方案基本滿足了業務數據隔離的需求。但是在用戶使用過程中,還是收到了很多不滿的反饋,主要原因就是阻礙了用戶使用的便利性。數據開發人員可能在數據平臺進行數據查詢,發現沒有數據訪問權限之后,需要到 hue 上申請權限。權限審批人員收到申請通知之后,需要登錄 ranger web UI,進行權限配置。數據管理人員需要直接在 ranger 中配置初始權限。這些都是很不方便的點。另外,ranger 支持的查詢引擎有限,想要增加查詢引擎(如 presto)就需要定制化開發。因此,這種 ranger + plugin 的做法,執行引擎的可擴展性并不好。由此,我們進入了安全建設的第二階段。

三、基于 ranger 的權限管理服務

為了提高用戶使用的便利性,我們需要收斂數據平臺的入口,下線 hue,所有的數據訪問及權限申請與審批都直接可在數據平臺上完成。并且,當用戶訪問到某個無權限的數據時,可以直接一鍵申請。為了提升執行引擎可擴展的能力,我們需要將 ranger 與執行引擎解耦,執行引擎可以不用鑒權。因此,我們在元數據系統中增加了權限管理服務模塊,通過 Restful 接口與 ranger 交互。架構圖如下:

\"image\"

所有數據訪問直接在數據平臺這個入口,通過權限管理服務進行鑒權。支持權限一鍵申請及一鍵審批。還可以支持臨時權限等特殊請求。數據管理人員也不用在 ranger 中配置策略,而是通過權限管理頁面直接進行數據業務域配置,然后自動映射為 ranger 中的策略。另外,我們還在這一階段建立了完整的審計體系,做到了所有數據訪問與操作有據可查。

四、基于 column masking 的數據脫敏

隨著公司業務的進一步增長,對敏感數據的脫敏需求變的更加強烈。我們需要將各種手機號、郵箱地址之類的敏感字段進行脫敏處理,例如手機號只顯示后四位。ranger 雖然支持 column masking,但是我們在第二階段已經將 ranger 與執行引擎進行解耦。因此,我們需要在數據平臺層面,對數據進行脫敏。我們采用的方案是 SQL 重寫。架構圖如下:

\"image\"

SQL Engine Proposer 是我們開發的一個智能執行引擎選擇服務,可以根據查詢的特征以及當前集群中的隊列狀態為 SQL 查詢選擇合適的執行引擎。數據平臺向某個執行引擎提交查詢之前,會先訪問智能執行引擎選擇服務。在選定合適的執行引擎之后,通過敏感字段重寫模塊改寫 SQL 查詢,將其中的敏感字段根據隱藏策略(如只顯示后四位)進行替換。而敏感字段的隱藏策略存儲在 ranger 中,數據管理人員可以在權限管理服務頁面設置各種字段的敏感等級,敏感等級會自動映射為 ranger 中的隱藏策略。例如表 ods.xxx 中的列 acct_no 的敏感等級為 2,那么映射為 ranger 中的策略如下:

\"image\"

當某個查詢語句為

select acct_no from ods.xxx where par='20181128' limit 10;

經過脫敏重寫,最終執行的查詢語句為

FROM (SELECT `par`, `id`, CAST(mask_show_last_n(acct_no, 4, 'x', 'x', 'x', -1, '1') AS bigint) AS `acct_no`, `kdt_id`, `water_no`? ? ? ?, `target_id`, `remark`, `create_time`, `sub_target_id`? ?FROM `ods`.`xxx`? ?) `xxx`WHERE par = '20181128'LIMIT 10;

我們使用 antlr4 來處理執行引擎的語法文件,實現 SQL 重寫。其中,spark 和 presto 都是使用的 antlr4,所以他們的語法文件直接拿過來用即可。由于 hive 目前使用的是 antlr3 的版本,我們將 hive 的語法文件使用 antlr4 的語法重寫了一遍。之所以要全部用 antlr4,是為了最大程度的重用 visitor 的邏輯。基于同樣的方法,我們實現了字段血緣的追溯,從而可以進行字段的敏感等級傳遞。

五、未來展望

大數據平臺的安全建設并不是一項孤立的工作,而是隨著大數據平臺支持的業務量和業務種類越來越多,與大數據平臺本身的進化而一起發展的。隨著有贊實時數倉的建設、機器學習平臺的構建等等新業務的發展,安全建設仍有很長的路要走。

最后打個小廣告,有贊大數據團隊基礎設施團隊,主要負責有贊的數據平臺 (DP), 實時計算 (Storm, Spark Streaming, Flink),離線計算 (HDFS,YARN,HIVE, SPARK SQL),在線存儲(HBase),實時 OLAP(Druid) 等數個技術產品,歡迎感興趣的小伙伴聯系 qunyan@youzan.com

作者簡介:大數據平臺是有贊共享技術的核心團隊之一,該團隊主要由數據技術、數據產品、算法挖掘、廣告平臺四個小團隊組成,目前共有 34 位優秀的工程師組成。

轉載來自公眾號“有贊Coder”:https://mp.weixin.qq.com/s/4G_OvlD_5uYr0o2m-qPW-Q

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/275955.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/275955.shtml
英文地址,請注明出處:http://en.pswp.cn/news/275955.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

請先設置tkk_理光MP2014掃描至文件夾的設置方法

理光旗下的2014系列入門級A3黑白復印機市場保有量較大,該系列機型加裝M16網卡后可以方便的實現掃描至文件夾功能,經常有客戶咨詢該機型的掃描設置方法,下面我就以MP2014D為例來演示一下該機型的SMB掃描設置方法:首先是在電腦上建立…

聽說現在都考這些React面試題

大家好,我是若川。最近刷脈脈看見圈里都在聊面試,吐槽最多的還是萬年考點 React 和 Vue。不過關于兩者的比較似乎有點針尖對麥芒的趕腳。確實,面試的偏重點往往映射公司對該框架的重視程度,但也不能一概而論,去學習或放…

開發中的問題——環境相關

開始了解Android差不多兩周了,作為一名.net開發者,首次接觸Java類的技術,免不了會碰到一些問題,開博的第一篇就來說說自己遇到的問題以及一些感受。關于Android開發環境的搭建,網上已經有很多,其實等更新完…

荒島余生為什么沒有打開包裹_您會帶到荒島什么辦公桌設置?

荒島余生為什么沒有打開包裹Throughout life, you experience a lot of desks and a lot of desk setups. Real or virtual, at the office or at home, temporal or permanent — just a way to call it, nothing is permanent— a big one with a great office view or a sma…

c++ 整數取反_c++ 取反運算符“~”

取反符將二進制表示的數字中的0變為1, 1變為0但是需要注意的是c中對int型進行取反操作時,將前面的前導0也進行了取反(int型變量為32bit)。比如1的二進制表示是00000000 00000000 00000000 00000001~(00000000 00000000 00000000 00000001) 11111111 11111111 11111…

第五課 路由之初識路由

1.路由快速入門 1.1 概念 是指把數據從一個地方傳送到另一個地方的行為和動作,而路由器,正是執行這種行為動作的機器。它的英文名稱為Router,是一種連接多個網絡或者網段的網絡設備,它能將不同網絡或者網段之間的數據信息進行“翻…

Console Snacks[摘自Advanced Rails Recipes]

1. Write Console Methods在~/.irbrc定義ActvieRecord::Base.connection.select_all方法1.# ~/.railsrc2.def sql(query)3.ActiveRecord::Base.connection.select_all(query)4.end1.# ~/.irbrc2.if ENV[RAILS_ENV]3.load File.dirname(__FILE__) /.railsrc4.end這樣就可以在直…

如何使用 React 和 React Hooks 創建一個天氣應用

大家好,我是若川(點這里加我微信 ruochuan12,長期交流學習)。今天推薦一個練手的React項目,創建天氣應用,相信很快能看完。昨天發送書掉粉18人,是我沒想到的,送書一般是出版社按閱讀…

擬態防御_純素食漢堡的擬態

擬態防御If people are so against the idea of pigs and chickens being chopped up why would they want to buy fake bacon with realistic visual streaks of pork fat, or soy meat that tries to replicate the streaky texture of cooked chicken flesh? Surely these …

delphi 算術溢出解決方法_性能優化系列:JVM 內存劃分總結與內存溢出異常詳解分析...

前言那些使用過 C 或者 C 的讀者一定會發現這兩門語言的內存管理機制與 Java 的不同。在使用 C 或者 C 編程時,程序員需要手動的去管理和維護內存,就是說需要手動的清除那些不需要的對象,否則就會出現內存泄漏與內存溢出的問題。如果你使用 J…

微信小程序如何發送 http 請求

2019獨角獸企業重金招聘Python工程師標準>>> 為什么要使用云函數發送 http 請求小程序云函數5 個可信域名不受限制需要備案無需備案在一些特殊情境, 比如域名沒有備案或域名 5 個以上就需要使用云函數發送 HTTP 請求了. 如何使用云函數發送 HTTP 請求? 在云函數中能…

H5 頁面列表緩存方案

大家好,我是若川(點這里加我微信 ruochuan12,長期交流學習)。今天給大家介紹一下關于h5頁面的列表緩存方案。感謝屏幕前的你一直關注著我。點擊下方卡片關注我、加個星標,或者查看源碼等系列文章。學習源碼整體架構系列…

SQL未能排它地鎖定數據庫以執行該操作解決

SQL未能排它地鎖定數據庫以執行該操作解決: --原因其他用戶或進程在用著數據庫 /* 關閉用戶打開的進程處理 */ use master if exists (select * from dbo.sysobjects where id object_id(N[dbo].[p_killspid]) and OBJECTPROPERTY…

不只是coding_不只是外表

不只是coding“We just need it to look more professional…”“我們只需要看起來更專業...” “We don’t have the graphic expertise you do…”“我們沒有您所需要的圖形專業知識……” “I just don’t know how to make it look good…”“我只是不知道如何使它看起來…

讀取 wps_軟件前世今生篇之WPS(求伯君1988年先于OFFICE研發出WPS)

軟件前世今生篇之WPS今天給大家普及一下WPS這款辦公軟件,相信你會問wps有什么可普及的?我們都知道啊,不就是一款辦公軟件,而且還是抄襲office的,安裝還挺簡單的,而且還有一大堆廣告,不過使用免費…

吳恩達機器學習筆記11-梯度下降法實踐2-學習率

梯度下降算法收斂所需要的迭代次數根據模型的不同而不同,我們不能提前預知,我們可以繪制迭代次數和代價函數的圖表來觀測算法在何時趨于收斂。 也有一些自動測試是否收斂的方法,例如將代價函數的變化值與某個閥值(例如0.001&#…

制作五彩紙屑轉場動效_何時以及如何將五彩紙屑添加到產品UI

制作五彩紙屑轉場動效As I am sure all designers have picked up on, confetti has become a popular method of (positive) feedback inside mobile and desktop apps. I will discuss the viable scenarios where you can implement confetti and will even provide some co…

【無套路送書】架構師是怎樣煉成的?

大家好,我是若川。不知道這是今年第幾次送書了,前三次分別是:第一次,第二次,第三次。本次《架構師的自我修煉》,非常珍貴,我爭取到了2本送給大家,送書規則見文末。可以參與下&#x…

WinForm中使用Excel控件

最近項目中要在WinForm中使用Excel控件,經過幾天的研究,現在總結一下成果。 在WinForm中使用Excel控件主要有三種方法:WebBrowser、DSOFramer、OWC。下面分別描述一下如何使用。 一、WebBrowser /// -1、如何使用 WebBrowser 控件…

python腳本自動化盲注_三、基于報錯型注入和sql盲注的自動化實現

通過前面payload的構造,不難發現,對于報錯型注入和布爾注入(sql盲注)純手工注入的效率是非常慢的。這些payload語句雖然復雜,但大部分內容都是相同的,因此,一言不合就寫了個腳本自動化注入,坐等信息爆出的感…