Categories
程式開發

混沌工程實踐分享:整合信息安全和DevOps


在柏林召開的O’Reilly Velocity 2019大會上,來自Capsule8的Kelly Shortridge做演講介紹了使用混沌工程助力DevOps文化中集成信息安全。 Shortridge在演講中指出,“D.I.E.三合體”是從設計上構建信息安全的很好方式,即分佈性(Distributed)、不變性(Immutable)和暫態性(Ephemeral)。用戶可使用D.I.E.三角去持續提高攻擊的代價。

D.I.E.三合體是一種面對性能和安全威脅時,有效保持系統彈性和恢復的能力。三合體旨在提高系統安全的質量水準,進而有助於信息安全在DevOps中的集成。 Shortridge強調,信息安全業界數十年來一直秉持通過設計構建安全的理念。 D.I.E.三合體支持團隊在工作中構建可靠系統,是一種組織上友好的方式。

在“D.I.E.”中,“D”是分佈性(Distributed)的首字母縮寫,意味將DoS等服務中斷的影響最小化。 “I”表示不變性(Immutable),意味著更易於逆向檢測發現系統更改。 “E”表示暫態性(Ephemeral),即用戶盡量將攻擊者可見的資產價值降低至近乎零。這些屬性使得混沌安全原則有助於從設計上構建安全系統。設計的出發點,是企業必須對安全控制失敗形成相應的預案。因此,企業必須具備對安全事件的響應能力,而非避免安全事件的發生。

Shortridge建議,使用遊戲日(game day)方式演練存在於安全環境中的潛在風險方案。她進一步建議,使用擬生產環境去更好地了解複雜系統中的運作方式。 Shortridge建議,從簡單測試著手,進而逐漸增加複雜度。例如,構建網絡釣魚或SQL注入這樣可在用戶實操環境中有效運行的測試。

Shortridge在演講中談及分佈式系統,指出多區域服務(multi-region service)是一種可誤導攻擊者的方法。團隊基於有效的負載平衡,可快速地重新部署服務,更改服務的提供形式和設置等具體內容。例如,混淆和定期更改IP區塊。另一方面,如果團隊使用了服務網格,可通過網格配置迫使攻擊者提升獲取訪問和修改訪問控制的權限。例如,需要訪問IP表這一層。這樣做,可最終更改攻擊者的內網漫遊(lateral movement)和資源間跳轉的方式。

Shortridge隨後介紹瞭如何在不可變架構中持續應用混沌安全原則。因為磁盤是臨時存儲,攻擊者無法在本地磁盤上可靠地存儲數據,進而造成數據洩露(Exfiltration)。磁盤信息正如Martin Fowler提出的,像鳳凰涅槃一樣定期被替換

不可變系統目前是限制團隊以任何方式編寫或修改系統。確保不變性包括測試未經授權的更改,並確保檢測到此類事件並可回滾。用戶可以搶先關閉正遭受攻擊的特定實例,這些實例進而將在其他位置重新生成;也可以搶先關閉並重新初始化實例,例如重啟發生稍許內存洩漏的應用,以解決潛在的性能問題。

Shortridge提出,一個隨時可停止服務的基礎架構對於攻擊者而言無疑是一場噩夢,因為服務存續具有極大的不確定性。例如,徹底限制Shell對服務器的訪問。一旦禁用了shell程序的訪問,那麼攻擊者很難不留痕跡地訪問或修改服務器。

Shortridge最後介紹了D.I.E.三合體中的“E”,即暫態性。大多數安全漏洞都是與狀態相關的。如果用戶不再依賴於狀態,那麼就可避免出現錯誤和漏洞。暫態性降低了攻擊者在系統中持久存留的能力,避免依賴於持久性存儲,最小化攻擊者有機會竊取數據的窗口。

暫態混沌測試中可涉及確認系統已不再接受過期資源。例如,測試中可以更改API令牌,模擬瀏覽器中的“退出所有會話”功能。然後通過注入舊API令牌,用戶可以確認API是否仍在接受過期令牌。最終確保驗證過程有效,應用預期不會使用舊令牌,否則就不符合暫態性了。

Shortridge在總結演講時提出,混沌彈性系統原生支持信息安全。要實現信息安全從筒倉模型向嵌入SDLC全週期的演變,必須將責任和問責統一起來,正如DevOps是如何將開發(Dev)和運維(Ops)統一起來的那樣。

原文鏈接:

How to Integrate Infosec and DevOps Using Chaos Engineering