DevSecOps 提升安全性的五種方式

Gordon Haff發表於2019-01-25

安全必須進化以跟上當今的應用開發和部署方式。

DevSecOps 提升安全性的五種方式

對於我們是否需要擴充套件 DevOps 以確實提升安全性,我們一直都有爭議。畢竟,我們認為,DevOps 一直是一系列的新實踐的簡寫,使用新工具(通常是開源的)並且在這之上構建更多的協作文化。為什麼 DevBizOps 不能更好地滿足商業的需求?或者說 DevChatOps 強調的是更快更好的溝通?

然而,如 John Willis 在今年(LCTT 譯註:此處是 2018 年)的早些時候寫的關於他對 DevSecOps 術語的理解,“我希望,有一天我們能在任何地方都不再使用 DevSecOps 這個詞,安全會是所有關於服務交付的討論中理所應當的部分。在那一天到來前,在這一點上,我的一般性結論是,這個詞只是三個新的特性而已。更重要的是,我們作為一個產業,在資訊保安方面並沒有做的很好,而這個名稱切實地區分出了問題的狀況。”

所以,為什麼我們在資訊保安方面做的不好,在 DevSecOps 的語境下安全做的好又是什麼意思呢?

儘管(也可能是因為)龐大的複雜行業的單點產品解決了特定方面的問題,但我們可以說是從未做好過資訊保安。我們仍然可以在這個時代把工作做得足夠好,以此來防範威脅,這些威脅主要集中在一個範圍內,網路的連線是受限的,而且大多數的使用者都是公司的員工,使用的是公司提供的裝置。

這些年來,這些情況並沒有能準確地描述出大多陣列織的真實現狀。但在現在這個時代,不止引入了 DevSecOps,也同時引入了新的應用架構模型、開發實踐,和越來越多的安全威脅,這些一起定義了一個需要更快迭代的新常態。與其說 DevSecOps 孤立地改變了安全,不如說資訊保安公司在 2018 年需要新的方法。

請仔細思考下面這五個領域。

自動化

大量的自動化通常是 DevOps 的標誌,這部分是關於速度的,如果你要快速變化(並且不會造成破壞),你需要有可重複的過程,而且這個過程不需要太多的人工干預。實際上,自動化是 DevOps 最好的切入點之一,甚至是在仍然主要使用老式的獨石應用monolithic app的組織裡也是如此。使用像 Ansible 這樣易於使用的工具來自動化地處理相關的配置或者是測試,這是快速開始 DevOps 之路的常用方法。

DevSecOps 也不例外,在今天,安全已經變成了一個持續性的過程,而不是在應用的生命週期裡進行不定期的檢查,甚至是每週、每月的檢查。當漏洞被廠商發現並修復的時候,這些修復能被快速地應用是很重要的,這樣對這些漏洞的利用程式很快就會被淘汰。

“左移”

在開發流程結束時,傳統的安全通常被視作一個守門人。檢查所有的部分確保沒有問題,然後這個應用程式就可以投入生產了。否則,就要再來一次。安全小組以說“不”而聞名。

因此,我們想的是,為什麼不把安全這個部分提到前面呢(在一個典型的從左到右的開發流程圖的“左邊”)?安全團隊仍然可以說“不”,但在開發的早期進行重構的影響要遠遠小於開發已經完成並且準備上線時進行重構的影響。

不過,我不喜歡“左移”這個詞,這意味著安全仍然是一個只不過提前進行的一次性工作。在應用程式的整個生命週期裡,從供應鏈到開發,再到測試,直到上線部署,安全都需要進行大量的自動化處理。

管理依賴

我們在現代應用程式開發過程中看到的一個最大的改變,就是你通常不需要去編寫這個程式的大部分程式碼。使用開源的函式庫和框架就是一個明顯的例子。而且你也可以從公共的雲服務商或其他來源那裡獲得額外的服務。在許多情況下,這些額外的程式碼和服務比你給自己寫的要好得多。

因此,DevSecOps 需要你把重點放在你的軟體供應鏈上,你是從可信的來源那裡獲取你的軟體的嗎?這些軟體是最新的嗎?它們已經整合到了你為自己的程式碼所使用的安全流程中了嗎?對於這些你能使用的程式碼和 API 你有哪些策略?你為自己的產品程式碼使用的元件是否有可用的商業支援?

沒有一套標準答案可以應對所有的情況。對於概念驗證和大規模的生產,它們可能會有所不同。但是,正如製造業長期存在的情況(DevSecOps 和製造業的發展方面有許多相似之處),供應鏈的可信是至關重要的。

可見性

關於貫穿應用程式整個生命週期裡所有階段的自動化的需求,我已經談過很多了。這裡假設我們能看見每個階段裡發生的情況。

有效的 DevSecOps 需要有效的檢測,以便於自動化程式知道要做什麼。這個檢測分了很多類別。一些長期的和高階別的指標能幫助我們瞭解整個 DevSecOps 流程是否工作良好。嚴重威脅級別的警報需要立刻有人進行處理(安全掃描系統已經關閉!)。有一些警報,比如掃描失敗,需要進行修復。我們記錄了許多引數的志以便事後進行分析(隨著時間的推移,哪些發生了改變?導致失敗的原因是什麼?)。

分散服務 vs 一體化解決方案

雖然 DevSecOps 實踐可以應用於多種型別的應用架構,但它們對小型且鬆散耦合的元件最有效,這些元件可以進行更新和複用,而且不會在應用程式的其他地方進行強制更改。在純淨版的形式裡,這些元件可以是微服務或者函式,但是這個一般性原則適用於透過網路進行通訊的鬆散耦合服務的任何地方。

這種方法確實帶來了一些新的安全挑戰,元件之間的互動可能會很複雜,總的攻擊面會更大,因為現在應用程式透過網路有了更多的切入點。

另一方面,這種型別的架構還意味著自動化的安全和監視可以更加精細地檢視應用程式的元件,因為它們不再深埋在一個獨石應用程式之中。

不要過多地關注 DevSecOps 這個術語,但要提醒一下,安全正在不斷地演變,因為我們編寫和部署程式的方式也在不斷地演變。


via: https://opensource.com/article/18/9/devsecops-changes-security

作者:Gordon Haff 選題:lujun9972 譯者:hopefully2333 校對:wxy

本文由 LCTT 原創編譯,Linux中國 榮譽推出

相關文章