[點(diǎn)晴永久免費(fèi)OA][轉(zhuǎn)帖]微信月活破10億,安全性靠誰(shuí)來(lái)支撐?
微信作為月活過(guò)10億的國(guó)民級(jí)應(yīng)用,其安全能力備受關(guān)注。值得注意的是,沒(méi)有足夠的特征數(shù)據(jù),安全策略將是"無(wú)根之木,無(wú)源之水"。微信安全數(shù)據(jù)倉(cāng)庫(kù)作為安全業(yè)務(wù)的特征數(shù)據(jù)存儲(chǔ)中心,每天服務(wù)了萬(wàn)億級(jí)的特征數(shù)據(jù)讀寫(xiě)請(qǐng)求,為整個(gè)微信安全策略提供了可靠的數(shù)據(jù)支撐,是微信安全的一塊基石。事實(shí)上,微信安全數(shù)據(jù)倉(cāng)庫(kù)不僅僅是一個(gè)存儲(chǔ)中心,更是一個(gè)特征管理和數(shù)據(jù)質(zhì)量管理的中心。 01、業(yè)務(wù)背景1.1 安全策略開(kāi)發(fā)流程安全業(yè)務(wù)的核心邏輯在安全策略中實(shí)現(xiàn)。整個(gè)的策略開(kāi)發(fā)流程包括特征數(shù)據(jù)的收集、安全策略的編寫(xiě)實(shí)現(xiàn)和策略的反饋評(píng)估。其中特征數(shù)據(jù)的收集是必不可少的環(huán)節(jié),數(shù)據(jù)的質(zhì)量將直接影響安全策略的效果。 特征數(shù)據(jù)收集主要包括:數(shù)據(jù)接入、特征的計(jì)算、特征的存儲(chǔ)。 在數(shù)據(jù)倉(cāng)庫(kù)還未建立時(shí),業(yè)務(wù)同事通過(guò)消費(fèi)離線存儲(chǔ) mmdata 和 tdw 接入數(shù)據(jù),通過(guò) Flink 流式計(jì)算或者自定義模塊對(duì)數(shù)據(jù)進(jìn)行加工,計(jì)算出需要的特征,最終存儲(chǔ)到自行維護(hù)的 KV。然后在安全策略平臺(tái)上編寫(xiě)安全策略,讀取 KV 中的數(shù)據(jù),,實(shí)現(xiàn)需要的安全邏輯。 傳統(tǒng)特征數(shù)據(jù)收集流程 1.2 為什么需要數(shù)據(jù)倉(cāng)庫(kù)前面提到在還未建立數(shù)據(jù)倉(cāng)庫(kù)時(shí),業(yè)務(wù)同事都按照自己的方式去存儲(chǔ)計(jì)算出的特征,大多通過(guò)自行申請(qǐng)部署 KV 來(lái)存儲(chǔ),如 A 同事把部署一套 KV 集群,存儲(chǔ)特征到 KV 表中,B 同事把特征存儲(chǔ)到同 KV 集群的不同表中,C 同事又額外申請(qǐng)了另外一套 KV 集群存儲(chǔ)。如下圖中的架構(gòu): 傳統(tǒng)安全后臺(tái): 各業(yè)務(wù)特征分散存儲(chǔ) 這種特征的分散存儲(chǔ),導(dǎo)致業(yè)務(wù)同事只了解自己熟悉的特征,難以交流和共享,特征缺乏統(tǒng)一的管理,數(shù)據(jù)質(zhì)量難以保證。不同的存儲(chǔ)方式,也導(dǎo)致特征訪問(wèn)接口的混亂,業(yè)務(wù)系統(tǒng)的可靠性也難以保證。 針對(duì)上述的問(wèn)題,我們希望把所有業(yè)務(wù)的特征,按統(tǒng)一的規(guī)范,建立統(tǒng)一的存儲(chǔ),方便特征的共享、管理和維護(hù)、并建立數(shù)據(jù)質(zhì)量保障體系, 為策略提供可靠的數(shù)據(jù)。所以我們需要開(kāi)發(fā)數(shù)據(jù)倉(cāng)庫(kù)。 問(wèn)題和目標(biāo) 1.3 安全業(yè)務(wù)后臺(tái)架構(gòu)當(dāng)前我們已經(jīng)把所有的安全策略統(tǒng)一到安全策略平臺(tái)進(jìn)行開(kāi)發(fā)和管理,特征數(shù)據(jù)的接入和計(jì)算統(tǒng)一到了 Flink 實(shí)時(shí)計(jì)算平臺(tái)和特征平臺(tái)。 數(shù)據(jù)倉(cāng)庫(kù)作為承上啟下的部分,對(duì)上為在安全策略平臺(tái)上的安全策略提供了數(shù)據(jù)讀寫(xiě),對(duì)下為實(shí)時(shí)計(jì)算平臺(tái)和特征平臺(tái)計(jì)算輸出的特征提供了存儲(chǔ),是整個(gè)業(yè)務(wù)體系中不可或缺的部分。 安全業(yè)務(wù)后臺(tái)架構(gòu) 02、數(shù)據(jù)倉(cāng)庫(kù)架構(gòu)演進(jìn)2.1 存儲(chǔ)選型安全業(yè)務(wù)特征數(shù)據(jù)主要有2種類(lèi)型:
騰訊有多種非常成熟穩(wěn)定的自研 KV:實(shí)時(shí)讀寫(xiě) KV(簡(jiǎn)稱(chēng)實(shí)時(shí) KV)、離線寫(xiě)實(shí)時(shí)讀 KV(簡(jiǎn)稱(chēng)離線 KV)、其他 KV 等等。這些 KV 已經(jīng)在多個(gè)業(yè)務(wù)被驗(yàn)證,有非常好的性能和可靠性、有團(tuán)隊(duì)做長(zhǎng)期的維護(hù)。其中,部分 KV 比較適配數(shù)據(jù)倉(cāng)庫(kù)的底層存儲(chǔ)的需求。其主要特點(diǎn)如下:
2.2 架構(gòu)設(shè)計(jì)和演進(jìn)2.2.1 統(tǒng)一存儲(chǔ)統(tǒng)一接口數(shù)據(jù)倉(cāng)庫(kù)第一個(gè)版本,針對(duì)特征存儲(chǔ)分散訪問(wèn)接口混亂問(wèn)題,首先部署了公共的實(shí)時(shí) KV/離線 KV 集群,并實(shí)現(xiàn)了一個(gè)接入層。新增特征和歷史特征放到公共的 KV 存儲(chǔ)集群,并且在接入層屏蔽了底層 KV 的細(xì)節(jié),提供了統(tǒng)一的讀寫(xiě)特征的接口。 數(shù)據(jù)倉(cāng)庫(kù)架構(gòu)1.0 接入層支持任意多個(gè) KV 集群,支持多個(gè)表,為屏蔽 KV 的細(xì)節(jié),接入層為每個(gè)特征分配唯一的標(biāo)識(shí)<sceneid, columnid>,讀寫(xiě)特征數(shù)據(jù)使用唯一標(biāo)識(shí)進(jìn)行,不需要關(guān)注 KV 類(lèi)型和 KV 表 ID,方便業(yè)務(wù)的接入使用。 統(tǒng)一接口 接入層還實(shí)現(xiàn)配置管理、參數(shù)校驗(yàn)、模塊校驗(yàn)、權(quán)限校驗(yàn)、流水上報(bào)、PV 統(tǒng)計(jì)等功能:
2.2.2 讀寫(xiě)分離和多 IDC 同步
數(shù)據(jù)倉(cāng)庫(kù)的讀請(qǐng)求量遠(yuǎn)遠(yuǎn)多于實(shí)時(shí)寫(xiě)入量,為了提高性能,減少讀寫(xiě)之間的相互影響,接入層做了讀寫(xiě)分離,將讀和寫(xiě)接口拆分到兩個(gè)模塊。
數(shù)據(jù)倉(cāng)庫(kù)和業(yè)務(wù)都采用的是多 IDC 部署。為了不降低查詢(xún)性能,不希望業(yè)務(wù)跨 IDC 訪問(wèn)存儲(chǔ),所以底層的 KV 也是多 IDC 部署。 這里就帶來(lái)一個(gè)問(wèn)題,特征數(shù)據(jù)如何在多 IDC 的 KV 之間進(jìn)行同步?例如業(yè)務(wù)在上海寫(xiě)入一個(gè)特征,希望在深圳也能讀到這個(gè)特征。這里按特征類(lèi)型進(jìn)行分類(lèi)處理:
數(shù)據(jù)倉(cāng)庫(kù)架構(gòu)2.0 2.2.3 異步寫(xiě)和替代分布式隊(duì)列
前一個(gè)版本中實(shí)時(shí)特征是同步寫(xiě)入,影響業(yè)務(wù)的性能,業(yè)務(wù)希望是異步寫(xiě)入。
前一個(gè)版本中分布式隊(duì)列采用的是公共的集群,眾多業(yè)務(wù)使用,出現(xiàn)過(guò)數(shù)據(jù)倉(cāng)庫(kù)受干擾影響特征數(shù)據(jù)同步。 為此在數(shù)據(jù)倉(cāng)庫(kù)中新增一個(gè)異步消息隊(duì)列模塊寫(xiě) MQ,用于異步寫(xiě)入。和分布式隊(duì)列相比 MQ 更輕量,而且 MQ 我們可以自行維護(hù), 更可控。所以新架構(gòu)中通過(guò) MQ 實(shí)現(xiàn)實(shí)時(shí)特征的多 IDC 數(shù)據(jù)的同步,替代了分布式隊(duì)列,保證數(shù)據(jù)同步不受其他業(yè)務(wù)影響。 數(shù)據(jù)倉(cāng)庫(kù)架構(gòu)3.0 2.2.4 運(yùn)營(yíng)系統(tǒng)前面3個(gè)版本解決了特征存儲(chǔ)分散、讀寫(xiě)接口不統(tǒng)一、數(shù)據(jù)同步、讀寫(xiě)性能問(wèn)題,但是特征的上線依然采用的是配置發(fā)布上線的方式,效率依然低效。 更重要的是特征缺乏統(tǒng)一的管理,共享困難,難以滿(mǎn)足業(yè)務(wù)的需求,業(yè)務(wù)常常也有各種疑問(wèn): 為此數(shù)據(jù)倉(cāng)庫(kù)新增運(yùn)營(yíng)系統(tǒng)模塊,實(shí)現(xiàn)了特征申請(qǐng)、特征上線、特征管理&分析、特征值查詢(xún)/修改、特征數(shù)據(jù)質(zhì)量管理等功能。 數(shù)據(jù)倉(cāng)庫(kù)架構(gòu)4.0
用戶(hù)不再需要手動(dòng)的修改配置文件來(lái)新增特征,可直接通過(guò) WEB 頁(yè)面申請(qǐng),填寫(xiě)必要的特征信息,通過(guò)通用審批系統(tǒng)進(jìn)行審批。
用戶(hù)不再需要手動(dòng)的發(fā)布配置上線特征,無(wú)論是新增的實(shí)時(shí)特征還是離線特征,審批通過(guò)后將自動(dòng)化的上線,提升體驗(yàn)和效率。
特征管理支持對(duì)特征 meta 信息進(jìn)行查詢(xún)和修改,包括特征所屬的業(yè)務(wù)分類(lèi)(索引)、特征類(lèi)型、特征負(fù)責(zé)人、給特征打 tag 等等,業(yè)務(wù)可以方便的查詢(xún)需要特征信息,避免重復(fù)的計(jì)算,方便各業(yè)務(wù)共享特征。
追蹤特征的原始數(shù)據(jù)來(lái)源、計(jì)算過(guò)程、數(shù)據(jù)流路徑、最終的存儲(chǔ)信息等等, 可以追蹤特征完整生產(chǎn)流程。
運(yùn)營(yíng)系統(tǒng)支持在 WEB 頁(yè)面查詢(xún)特征值和修改特征值。
保障數(shù)據(jù)質(zhì)量,下一章節(jié)詳細(xì)講述。 03、數(shù)據(jù)質(zhì)量保障數(shù)據(jù)倉(cāng)庫(kù)主要通過(guò)兩個(gè)方面來(lái)保障數(shù)據(jù)質(zhì)量:特征的標(biāo)準(zhǔn)化和數(shù)據(jù)空跑系統(tǒng)。 接下來(lái)我們進(jìn)行詳細(xì)介紹分析。 3.1 特征標(biāo)準(zhǔn)化特征的標(biāo)準(zhǔn)化是保證數(shù)據(jù)倉(cāng)庫(kù)數(shù)據(jù)質(zhì)量的手段之一,標(biāo)準(zhǔn)化是指對(duì)數(shù)據(jù)倉(cāng)庫(kù)中的特征進(jìn)行規(guī)范化處理,使得特征能夠達(dá)到一致性、可重復(fù)性等標(biāo)準(zhǔn),從而提高數(shù)據(jù)的可靠性和準(zhǔn)確性。 對(duì)于新增實(shí)時(shí)/離線特征,數(shù)據(jù)倉(cāng)庫(kù)制定了的特征規(guī)范文檔,并按規(guī)范文檔的要求,特征申請(qǐng)/管理頁(yè)面必須正確的補(bǔ)充完整特征信息,如特征類(lèi)型、業(yè)務(wù)分類(lèi)等等,后臺(tái)對(duì)每個(gè)特征都會(huì)進(jìn)行校驗(yàn),不符合規(guī)范的特征無(wú)法錄入。 另外數(shù)據(jù)倉(cāng)庫(kù)還提供了接入編程指導(dǎo)文檔,并給出完整的 C++編程實(shí)例,致力于提供標(biāo)準(zhǔn)化的編程最佳實(shí)踐。 3.2 數(shù)據(jù)空跑系統(tǒng)離線特征數(shù)據(jù)來(lái)自于業(yè)務(wù)離線計(jì)算在分布式文件系統(tǒng)中生成數(shù)據(jù)文件,然后將文件上線。歷史上曾因?yàn)樯傻臄?shù)據(jù)文件存在錯(cuò)誤,存在錯(cuò)誤的文件數(shù)據(jù)被上線到離線 KV,導(dǎo)致策略出現(xiàn)故障。 為了保障離線特征數(shù)據(jù)的質(zhì)量,數(shù)據(jù)倉(cāng)庫(kù)設(shè)計(jì)了一套空跑系統(tǒng),在上線前對(duì)數(shù)據(jù)文件進(jìn)行檢查,避免存在問(wèn)題的數(shù)據(jù)上線到現(xiàn)網(wǎng)。 數(shù)據(jù)空跑架構(gòu) 數(shù)據(jù)空跑架構(gòu)如上圖,離線特征數(shù)據(jù)的上線也納入到了運(yùn)營(yíng)系統(tǒng)的管理中,整個(gè)的空跑流程如下:
差異率示例如下圖,詳細(xì)展示了具體的差異細(xì)節(jié): 空跑結(jié)果差異率和差異詳情 完整的數(shù)據(jù)上線流程如下圖,空跑差異檢測(cè)通過(guò)后,需要檢查數(shù)據(jù)文件完整性,防止文件被修改或者覆蓋,最后數(shù)據(jù)再上線到現(xiàn)網(wǎng)數(shù)據(jù)倉(cāng)庫(kù)系統(tǒng),通知業(yè)務(wù)數(shù)據(jù)上線成功。如果中間任何一個(gè)步驟出錯(cuò)將告警給業(yè)務(wù)負(fù)責(zé)人,提醒人工介入處理。 離線特征數(shù)據(jù)上線完整流程 04、總結(jié)整體來(lái)說(shuō),我們把數(shù)據(jù)倉(cāng)庫(kù)分散的特征數(shù)據(jù)全部集中統(tǒng)一管理,提供統(tǒng)一的訪問(wèn)接口,標(biāo)準(zhǔn)化每一個(gè)特征,建立了統(tǒng)一的規(guī)范。并且在此基礎(chǔ)上保障了數(shù)據(jù)的質(zhì)量,夯實(shí)了整個(gè)安全業(yè)務(wù)的基礎(chǔ),助力一站式的數(shù)據(jù)-策略開(kāi)發(fā),極大地提升了安全對(duì)抗的效率,實(shí)現(xiàn)了數(shù)據(jù)價(jià)值的最大化。 該文章在 2023/7/29 9:38:17 編輯過(guò) |
關(guān)鍵字查詢(xún)
相關(guān)文章
正在查詢(xún)... |