簡介: 阿里雲的CDN和視頻雲產品在直播安全場景下有普遍的應用,阿里巴巴集團的淘寶、優酷等業務的直播正是基於這些產品底層能力,構建了強大的直播安全體系。這個基於阿里巴巴集團自身業務實踐打磨出來的架構設計,也被衆多上雲客戶所採用。本篇文章,阿里雲產品架構師小流將與你們分享這些架構實踐背後的一些思考,但願對在尋找穩定、高效、經濟的直播安全體系的開發者有所幫助。算法
阿里雲的CDN和視頻雲產品在直播安全場景下有普遍的應用,阿里巴巴集團的淘寶、優酷等業務的直播正是基於這些產品底層能力,構建了強大的直播安全體系。這個基於阿里巴巴集團自身業務實踐打磨出來的架構設計,也被衆多上雲客戶所採用。本篇文章,阿里雲產品架構師小流將與你們分享這些架構實踐背後的一些思考,但願對在尋找穩定、高效、經濟的直播安全體系的開發者有所幫助。編程
分享主要分三塊:
首先,對系統架構作一個總體介紹,先了解系統架構的全貌。
而後,把架構中的核心內容拆解出來,進行詳細的解讀。
最後,探討這個架構的優點。安全
2020年11月4日,國家網信辦正式發佈《互聯網直播服務管理規定》,對互聯網直播服務提供者、互聯網直播發布者和用戶的相關行爲做出規範,對一些不合法的直播行爲作出了約束。新規要求:互聯網直播服務,要「先審後發、即時阻斷」。該規定自2020年12月1日起施行。下圖的架構設計,囊括了直播內容的產生、存儲和消費的整個生命週期,每一個階段都有相應的措施,經過「防、控、封、堵」等多種方式,來確保直播安全。服務器
第1塊橙色部分是內容生產安全模塊。這個模塊主要是對內容生產者進行身份驗證,以確保內容生產者的合法性,儘量從源頭上規避非法發佈者產生非法內容。是直播安全的第一道防線。
第2塊是審覈及管控模塊,對應架構圖中的黃色部分。這個模塊是整個直播安全體系的核心,這個模塊主要對內容生產後進行檢查審覈,並對非法內容的播放進行管控。
第3塊是播放安全模塊,對應架構圖中淺藍色部分。這個模塊主要是對觀衆身份進行驗證,以確保直播內容不被別人所用,保障內容的安全性,同時,有效解決盜鏈問題,確保資產安全,避免資損。
上面3個模塊是傳統直播安全體系必備的模塊,主要解決內容的安全問題,契合了《互聯網直播服務管理規定》中先審後發、即時阻斷的要求。咱們在實際的業務運維中發現,直播基礎架構與直播的質量和穩定性息息相關,基礎架構的安全也相當重要。所以,咱們把架構安全也歸入直播安全體系裏面來。圖中金色部分是架構安全模塊,在這裏面有一些特殊的設計,咱們後面會講到。架構
咱們知道,直播是一種實時性、互動性顯著的互聯網傳播內容的形式。不一樣於傳統的文字、圖片、視頻等傳播形式,直播緊密的將用戶與直播內容交互在一塊兒,用戶自己也是內容生產的一份子。所以,頗有必要對生產內容的用戶進行嚴格管控,進行有效的身份驗證。要對身份進行驗證,最有效的手段就是進行鑑權。
鑑權有多種方式。一般是經過時間戳管控有效期,經過加密算法驗證身份合法性。傳統方案的作法是:用戶與平臺協商一個密鑰,將用戶推流的url、時間戳、密鑰等信息構成一個字符串,按照約定的算法將字符串轉化成相應的鑑權信息;相關信息發送到CDN節點後,由CDN進行比對;若是時間戳在約定範圍內,且鑑權值正確,則正常服務;反之,則拒絕。這種方案,須要把密鑰部署到CDN。這樣,除了平臺內部之外,多了一個鑑權key泄露的風險。因此,在咱們設計的方案裏,咱們推薦對內容安全有要求的用戶,使用遠程鑑權。運維
咱們看上邊這個架構圖。遠程鑑權的方案裏,用戶在下發推流地址時,將按照加密規則生成的url下發到推流端。推流端請求到CDN節點,CDN節點在收到推流請求時,根據約定,經過http等方式將相關的鑑權信息,好比:url參數、UA、ClientIp等等,透傳給用戶自有的遠程鑑權服務器。鑑權服務根據透傳的信息,驗證合法性,並響應鑑權結果給到CDN節點。CDN節點,根據回調的結果,進行處理。異步
固然,遠程鑑權能夠與傳統的本地鑑權組合使用,先在本地作一層判斷,再進行遠程鑑權。這種作法,可有效解決推流key泄露致使的盜推,同時避免大量非法推流請求透傳至遠程鑑權服務器,將服務器打爆。阿里雲
近些年來,因爲視頻業務爆發,對視頻監管及審覈提出了更高的要求,視頻直播的識別及審覈規格要升級。審覈規格的升級,每每意味着技術難度和成本的增長。如何在知足業務需求的狀況下,選擇成本最優的智能審覈方案,是每一個直播平臺面對的難題。通常狀況,要作嚴格的審覈,採用1s一張的非關鍵幀的截圖,是一個比較穩妥的作法。但非關鍵幀的截圖,對截圖服務的機器開銷會比較大,即客戶的使用成本會比較高。若是是大平臺,流的數量很是大,全量走非關鍵幀截圖,成本開銷會很是大。所以,考慮採用差別化的截圖策略,在成本和收益上,作到一個平衡,以期經過技術手段,在避免成本的浪費的同時,最大程度上作到識別不遺漏。好比:核心大主播,這類主播數量少,但重要性高,容易被人關注及攻擊,走非關鍵幀截圖;敏感高危類目走非關鍵幀截圖;遊戲直播和賽事直播走關鍵幀截圖。這裏說的非關鍵幀截圖,是指強制1s一張截圖;關鍵幀截圖,是根據用戶推流的gop,每一個gop截一張。加密
咱們來看總體的架構設計:平臺主播推流到阿里雲CDN;阿里雲CDN,在收流後,回調客戶截圖決策服務;客戶截圖決策服務,基於歷史主播評分、主播分類(好比高危、疑似、普通等)決策流的截圖策略,並肯定截圖週期頻率,下發到阿里雲截圖服務;阿里雲截圖服務,根據決策回調,對流進行截圖;對於客戶截圖決策服務沒法決策的流,阿里雲截圖服務會根據流的屬性分析來自動決策(好比:在流剛入系統時,進行安全的非關鍵幀截圖,後續解析發現視頻流的關鍵幀,符合關鍵幀截圖條件時,切換到關鍵幀截圖)。客戶審覈服務實時拉取阿里雲截圖並審覈,而後根據審覈結果,實時進行處理。若是是高危的,調用阿里雲流封禁接口,實時封禁主播推流,同時更新截圖決策服務,標註主播違規標識,便於後續的截圖決策。疑似的,更新截圖決策服務,標註主播疑似違規標識,調整截圖策略;普通的,則不作處理。url
截圖審覈目前也有不少基於AI的智能審覈能力,能夠大量節省人工審覈的成本。阿里雲也有相應的產品,能夠作集成。
除了截圖審覈外,經過標準的錄製服務,錄製直播內容,並進行存儲,結合截圖審覈,能夠進行人工的二次審覈及審覈確認,審覈結果,能夠同步到決策服務,進行策略的干預和更新。
內容生產安全和內容審覈管控是從內容的產生和管理角度去解決安全問題,這兩個是直播內容安全的基礎。可是在一些一旦犯錯就會產生巨大影響的場景下,須要有更嚴格的管控措施。這就要求咱們在播放側,也須要有一些安全措施來加以保障。好比一些敏感內容或者大型活動的直播,這類內容的關注度超高,一旦內容審覈有所遺漏,哪怕只是一幀畫面,也會產生巨大的輿論影響,形成播出事故。對於這種場景,推薦使用阿里雲直播產品延遲播放的能力,給審覈以足夠的時間進行逐幀確認,確保播出安全。延遲播放在平常一些須要確保時效性的場景下是不適用的,於是延遲播放的能力須要能細化到對直播流粒度的管理。固然,有一些業務場景,好比部分用戶須要實時,而部分用戶須要延遲,也能夠採用延遲播放來知足。
播放安全還須要具有經過技術手段避免資損產生的能力。資損有兩類,一類是盜鏈,即非法用戶經過非法途徑播放內容。盜鏈每每會形成直播內容泄密,致使正常業務受到影響,使得平臺花費大量資源製造的內容產生的價值大打折扣。更可惡的是,盜鏈產生的流量費用,每每還須要平臺承擔。對於盜鏈,主要的管控措施,就是進行鑑權。基礎的鑑權,好比ua、referer、時間戳、md5等能解決掉一部分盜鏈問題,可是盜鏈和防盜鏈跟安全的攻防同樣,有來有往,須要不斷的更新或者升級防盜鏈能力,纔能有效的遏制盜鏈。所以,咱們比較推薦採用遠程鑑權的方式來作防盜鏈。拉流的遠程鑑權和推流的遠程鑑權相似,這裏就再也不展開了。不管是基礎鑑權仍是遠程鑑權,都是在拉流接入時候驗證身份,並不能作到萬無一失。DRM是另外一種更高階的防盜鏈技術,這種技術主要是對視頻幀逐幀加密,在播放端再解密。DRM的防盜鏈效果更好,但須要有比較強的視頻處理的技術能力。
另外一類資損,是對不在播的內容作了錯誤的資源位推薦,影響用戶體驗,形成推薦資源的浪費。這類問題,主要是對熱門主播的直播狀態管理不許確形成的。咱們推薦的作法是將直播的業務下播和真正的CDN下播結合起來,經過CDN的關播回調,來確認是否直播下播,對於CDN已下播,但直播間未關閉的,則關閉直播間的相關邏輯。其作法是,當用戶的直播管控中心收到業務關播信息,則查詢CDN的關播信息,若CDN顯示流還在線,則調用阿里雲封禁服務,進行斷流。另外,直播管控中心定時從CDN同步流在線狀態,對於流已不在線,但業務關播仍顯示在線的,超出預約時間的,則關閉直播間相關邏輯。爲了確認流狀態更新的安全,避免接口泄露,被有心人利用,咱們也建議回調作鑑權,只有經過鑑權的回調,才能採信,接受更新。
上面三塊內容,從全鏈路上都保證了直播內容的安全,但在平常運維中,還有穩定性的要求。只有在穩定有質量保證的直播平臺上構建的直播內容安全措施,纔是有意義的。同時,在有些場景下,好比大型活動,超高的關注度,流量洪峯的衝擊,對穩定性有更高的要求。沒有一個有效的架構來支撐,一旦有點風吹草動,每每會形成活動事故。咱們把這類場景衍生出來的需求,歸入到架構安全裏面來。架構安全,本質是要保證平常運營和大型活動的推播穩定,尤爲是在大型活動時,可以承受住流量洪峯,在故障時,有快速調整和恢復的能力。
在技術上,主要依賴全鏈路災備來實現。首先是傳輸鏈路容災:CDN直播的推拉流是多層架構,CDN內部傳輸具有故障自動切換的能力,當檢測到某條傳輸鏈路有問題時,自動切換到另外的鏈路上,生效時間秒級。其次是多中心容災,阿里雲的架構裏,直播中心是全部處理直播視頻的樞紐,一旦中心出現問題,整個直播將受到巨大的影響。阿里雲的直播中心自己是高可用架構,基本上能夠知足平常的穩定性要求。在高可用架構的基礎上,採用多中心融災的方案,解決單一直播中心故障形成大面積直播中斷的問題。須要說明的是,多中心容災的成本較大,建議在大型活動等特殊場景下再啓用。
除了上述傳輸層面的全鏈路容災,咱們還推薦採用主備合流的方式,來確保架構安全。其作法是,將傳輸融災向下延伸至推流端,推流方從不一樣區域或運營商推多路流至CDN,CDN在直播中心進行合流,選擇其中一路對外分發,當該路流出現異常時,可秒級切換至另外一路流,這樣能夠作到用戶切換無感知。
上面詳細介紹了總體的系統架構,那麼爲何要用這樣的架構?這樣的架構有什麼優點呢?咱們來看:
首先,從前面的介紹能夠看到,整個架構的每一層,都有強大的鑑權能力。咱們推薦的遠程鑑權,優勢尤爲明顯,由於key是直播業務方本身保管的,不須要給第三方商業CDN部署,鑑權算法也不須要同步給第三方,減小了暴露的風險。遠程鑑權能夠根據業務狀況及時調整,有更好的靈活性。也能夠針對推流和播放,實現不一樣的策略,好比:推流用同步鑑權,保證核心內容安全;播放用異步鑑權,保證數據安全的同時,不影響播放秒開;重點流,鑑權服務能夠自助設置特殊策略,多重保障。另外,阿里雲直播CDN產品,具備業界領先的邊緣編程能力,基於該能力,能夠快速實現鑑權的自定義。
其次,咱們推薦的審覈管控架構,是經濟且高效的方案。經過這個架構,能夠作到成本與收益的平衡。管控粒度能夠到具體的流,很是的精細化。當出現異常時,能夠秒級對直播信號進行阻斷,風險控制能夠說是很是及時、立竿見影。截圖審覈、錄製審覈和延遲播放等多種審覈管控機制,逐層的篩選和控制,讓非法內容無處藏身。
最後,咱們提供的整個直播基礎架構,具有全鏈路的災備能力,容災能力強。阿里雲邊緣雲具有國內領先的CDN能力,經受了多年雙十一、世界盃等大型活動的洗禮,在應對大流量突發上有豐富的經驗。完善的內部監控,能夠在故障發生前提早排除隱患,秒級生效的故障切換能力,能夠作到觀衆無感。基礎架構穩定了,在流量洪峯來臨時,更可能是彈性資源的快速補充,阿里雲的資源儲備在業界是首屈一指的,快速的資源建設能力,能夠從容應對任何的流量洪峯。
原文連接本文爲阿里雲原創內容,未經容許不得轉載。