- Falco云原生安全:Falco原理、實踐與擴展
- (意)洛里斯·德喬安尼等
- 2062字
- 2024-06-26 16:56:36
1.2 Falco的設計原則
現在你已經看到Falco可以做什么,接下來讓我們來談談為什么它是這樣設計的。當你開發一個非常復雜的軟件時,關注正確的應用場景并優先考慮核心目標是極其重要的。有時這意味著你要接受取舍。Falco也不例外,它的發展遵循一套核心原則。在本節中,我們將探討為什么是這些原則以及它們各自如何影響Falco的架構和特性。理解這些原則可以幫助你判斷Falco是否適合你的應用場景,并幫助你更加充分地使用它。
1.2.1 專為運行時設計
Falco引擎旨在為運行中的服務和應用程序檢測威脅。當它檢測到異常行為時,Falco應該立即提醒你(最多在幾秒內),這樣你就能立即得到通知并做出響應,而不是在幾分鐘或幾小時后才意識到問題。
這個設計原則體現在三個重要的架構選擇上。第一,Falco被設計為一個流處理引擎,能夠在數據到達時快速處理數據,而不是先存儲數據然后再處理。第二,它被設計為獨立評估每個事件,而不是根據事件序列生成警報,這意味著將不同的事件關聯起來(即使是可行的)不是Falco的主要目標(也不鼓勵這么做)。第三,Falco評估規則時盡可能貼近數據源。如果可能的話,它會避免在處理信息之前傳輸信息,而是傾向于在端點處部署更豐富的引擎。
1.2.2 生產環境就緒
你可以在任何環境中部署Falco,包括需要穩定性和低額外開銷的生產環境。不能因為它使得應用程序崩潰,而是應該盡最大可能減小對應用程序的影響。
這種設計原則會影響數據收集架構,特別是當Falco運行在具有許多進程或容器的端點上時。Falco的驅動程序(內核模塊和eBPF探針)經歷了多輪迭代和多年測試,以保證其性能和穩定性。通過操作系統的內核來收集數據,而不是監控進程/容器,可以確保你的應用程序不會因為Falco中的Bug而崩潰。
Falco引擎是用C++編寫的,并采用了許多方法來減少資源消耗。例如,它會避免處理像讀寫磁盤或網絡數據這樣的系統調用。在某種程度上,這其實是一種限制,因為它阻止用戶創建檢查負載內容的規則,但它也確保了CPU和內存消耗保持在較低水平,這是更為重要的。
1.2.3 靈活自由
Falco旨在觀察應用程序的行為,而不需要用戶重新編譯應用程序、安裝庫或者重新構建帶有監控鉤子(hook)的容器。這在現代容器化環境中非常重要,因為在這些環境中,對每個組件進行更改將需要大量不切實際的工作。它也保證了Falco可以看到每個進程和容器,無論它們來自哪里、誰運行或者運行了多長時間。
1.2.4 為邊緣運行環境優化
與其他策略引擎(例如,OPA)相比,Falco在設計時明確考慮了分布式、多傳感器架構。它的傳感器被設計為輕量、高效和便攜,可以在不同的環境中運行。它可以部署在物理機、虛擬機或容器中。Falco二進制文件可用于多種平臺,包括ARM。
1.2.5 避免移動和存儲大量數據
目前市面上大多數威脅檢測產品都是基于將大量事件發送到一個集中式SIEM工具,然后再分析收集的數據。Falco則是圍繞一個完全不同的原則設計的:盡可能地靠近端點執行檢測,并且只向集中式收集器發送警報。這種方法導致解決方案在執行復雜分析方面的能力有所下降,但其操作簡單、成本效益更高,并且可以很好地橫向擴展(或稱水平擴展)。
1.2.6 可伸縮性
說到規模,Falco的另一個重要設計目標是它應該能夠擴展以支持世界上最大的基礎設施環境。如果你能運行它,Falco就應該能保護它。正如我們剛剛描述的,保持有限的狀態和避免集中存儲是其中的重要元素。邊緣計算也是一個重要的元素,因為分布式規則評估是真正以水平方式擴展Falco等工具的唯一方法。
可伸縮性的另一個關鍵部分是端點檢測。Falco的數據收集棧沒有使用sidecar(邊車)、庫鏈接或進程檢測等技術。原因是所有這些技術的資源利用率都隨著要監控的容器、庫或進程的數量增加而增長。一臺忙碌的主機有太多的容器、庫和進程,以至于上述技術無法施展,但它們有且只有一個操作系統內核。在內核中捕獲系統調用意味著,無論主機規模有多大,每臺主機都只需要部署一個Falco傳感器,這使得Falco可以在具有大量活動的大型主機上運行。
1.2.7 真實性
使用系統調用作為數據源還有哪些好處呢?答案是系統調用永遠不會說謊。你很難跳過Falco,因為它用來收集數據的機制很難被禁用或規避。即使你試圖逃避或繞開它,仍然會留下Falco可以捕捉到的痕跡。
1.2.8 健壯的默認配置和豐富的靈活性
另一個關鍵的設計目標是最小化用戶在Falco中獲得價值所花費的時間。直接安裝Falco無須額外配置就可以帶來出色的效果,除非你有更高的要求,否則一般不需要定制。
與此同時,如果你確實需要定制,Falco也提供了靈活性。例如,你可以通過豐富和清晰的語法創建新規則,開發和部署擴展檢測范圍的新數據源,并將Falco與所需的通知和事件收集工具集成。
1.2.9 簡潔性
簡潔性是Falco的最后一個架構設計原則,同時也是最重要的一個。Falco規則的語法設計緊湊、易讀,可以快速上手。Falco規則的條件都盡可能地放在一行中。所有人(不一定是專家)都能夠輕松地編寫新規則或修改現有規則。如果這降低了語法的表達能力也沒關系,因為Falco的目標是提供高效的安全規則引擎,而不是完整的領域特定語言,這方面還有其他更好的工具。
簡潔性也體現在擴展Falco新數據源和集成新的云服務或容器類型的過程中,無論使用哪種語言(包括Go、C和C++)編寫插件。Falco很容易加載這些插件,你可以使用它們來添加對新數據源或規則中使用的新字段的支持。
- 數字身份與元宇宙信任治理
- SASE原理、架構與實踐
- 網絡空間攻防技術原理
- 計算機網絡安全基礎(第5版)
- Digital Forensics with Kali Linux
- 數據安全領域指南
- Web安全之深度學習實戰
- 數據安全與流通:技術、架構與實踐
- 互聯網企業安全高級指南
- 數字政府網絡安全合規性建設指南:密碼應用與數據安全
- CTF網絡安全競賽入門教程
- Python Penetration Testing Essentials
- 商用密碼應用與安全性評估
- Hands-On Spring Security 5 for Reactive Applications
- 精通Veeam Backup&Replication(原書第2版)