> 作者 崔康 發布于 2014年5月3日
DevOps在國內社區逐漸推廣,其關注于改善開發與運維團隊之間的溝通與協作。最近,來自于YellowSpider公司的COOLeslie Sachs和顧問BobAiello[撰文](http://www.ibm.com/developerworks/security/library/d-robust-effective-information-security-devops/index.html)分享了如何使用DevOps 最佳實踐來使您的信息安全更加健壯和有效。
首先,作者回答了為何信息安全是 DevOps的關鍵組成部分之一:
DevOps
> 在確保開發人員與運維人員能一起工作并且更有效率方面非常成功。通過
DevOps
> ,運維團隊可以獲得他們所需要用于了解如何建立有效和可靠應用程序構建、打包和部署過程方面的信息。而信息安全組也同樣有許多與運維團隊一樣的需求。此外,
InfoSec
> 還需要獲得他們需要用于確保整個系統是安全和可靠方面的信息。正如
DevOps
> 幫助開發和運維團隊能更有效地一起工作一樣,
DevOps
> 也可以幫助開發和信息安全團隊更有效地一起工作。在
DevOps
> 中,持續部署已經成為
DevOps
> 的一個關鍵實踐,并且關注于通過自動化的構建、打包和部署來自動化部署流水線。通過提供一個平臺可以在開發生命周期里盡早訪問和定位安全問題,信息安全團隊也同樣能夠從部署流水線上得到顯著的獲益。只要一旦有風險評估被介入,有效的安全保障就應當永遠與之同步進行。
需要強調的是,DevOps可以幫助定位安全風險。作者指出,作為軟件或系統開發工作的一部分,風險需要被理解和定位。安全保障不能僅僅在開發過程的末尾才加入進來。系統需要在開發生命周期的最開始,就將安全保障與設計和開發一道同時得到關注。
-
DevOps 提供了必需的構造來幫助定位眾多安全風險,這是創建任何復雜技術系統的內在要求。
-
安全漏洞往往是各種事件的直接后果。例如,在 C/C++ 系統中進行不恰當的編碼實踐就可能導致緩沖溢出條件有機會被惡意攻擊者用于實施越級程序權限。緩沖溢出攻擊經常被攻擊者所利用,來獲得系統的控制權,甚至可以很有效地獲得 root 權限。
-
運行時事件的發生也可能導致不恰當的安全控制,例如發生在不同組件之間的身份驗證與授權。一個常見的安全問題根源就是來自于由于某次部署所應用的不正確的訪問權限。
-
另外一個安全問題領域是確保所部署的是正確的代碼。在部署過程中所帶來的錯誤有可能會暴露給惡意攻擊者。
-
在不同接口之間的配置問題經常會曝露給攻擊者,以被其用于嘗試侵入系統。一旦系統缺乏防范措施,不恰當的安全控制問題就有可能導致非授權的變更變得非常難以識別,而且難于執行鑒定證明來查清到底有哪些變更是由于錯誤或是由于惡意目的所造成的。
作者指出,通過有效的源代碼管理來構建安全的系統,軟件質量需要從最開始構建。
DevOps
> 及部署流水線幫助有效地創建和提供測試環境,以用于評估和測試在組件間接口上的安全漏洞。通過以及時到位的方式提供一個健壯的測試環境可以增強安全性,通過提供一個自動化的測試平臺可以用于識別需要被定位的安全問題。一旦代碼中的問題被找到,它們就能被定位作為缺陷或變更請求,從而在它們的整個生命周期中被追蹤到,以確保已被識別的風險可以被定位。
在“開發、運維和信息安全團隊之間的協作”方面,作者強調,信息安全團隊通常非常缺乏足夠能理解復雜系統常見的內在自有安全漏洞方面的技術專家。
> 正如
DevOps
> 能改善開發與運維之間的溝通,
DevOps
> 同樣能增強信息安全團隊的能力,它允許信息安全團隊完全理解整個應用以及它是如何構建、打包和部署的。這一知識可以幫助
InfoSec
> 維護一個相關的和有效的關注。通過理解系統的基礎架構,
InfoSec
> 同樣可以幫助理解何時安全會被突破以及應該采取什么樣的措施應對該安全漏洞,尤其在基礎設施自身缺乏安全免疫力的前提下。在許多案例中,這對使用自動化的過程重建服務器來說非常關鍵。
在“自動化應用程序的構建、打包和部署”方面,作者指出,可以以多種方式來創建自動化過程來構建、打包和部署代碼來支持敏捷迭代開發。
> 自動化構建過程是實現持續集成(
continuousintegration
> )和持續交付(
continuousdelivery
> )的一個前提條件。構建過程應當自動化地嵌入不可改變的版本
ID
> 到每一個由構建過程所使用或所創建的配置項(
configurationitem
> ,
CI
> )中。這也是加密哈希值(
hash
> )應當被創建的地方。沖刺里程碑發布版本(
Sprintmilestonerelease
> )可以被用于測試和驗證在項目啟動階段(
inception
> )尚未被完全理解的需求。更加重要的是,關于如何構建每一個組件的技術細節可以被隱含性地文檔記錄,并可以被包括了信息安全方面的感興趣的利益相關者所審閱。在代碼中創建變體可以建立應用程序的測試,包括機制化代碼來建立與安全相關的測試。
當然,要想實現信息安全,執行入侵測試是是必不可少的步驟。
> 部署流水線提供了一個有效的框架來創建所必須的測試環境來執行入侵測試。通過
DevOps
> ,入侵測試可以在整個軟件和系統生命周期中貫徹進行。通過改善開發和信息安全團隊之間的溝通,
DevOps
> 及
InfoSec
> 都可以在通常專門為入侵測試所留出的短小時間片斷里設計和執行更加有效的入侵測試。部署流水線同樣可以使信息安全人員可以獲得對于有效評估安全漏洞來說非常關鍵的技術信息。
最后,作者指出,必須要提供安全可信的應用程序基礎。
> 為了確保可信的應用程序基礎,應當使用可以安全識別準確二進制代碼以及所有其他配置項(包括
XML
> 及屬性配置文件)的過程來構建應用程序代碼,以便您可以毫無疑問地證明正確的代碼確實被部署和確認沒有非授權的變更發生。這些過程通常會使用在應用程序自動化構建和打包過程中就首先創建的加密哈希值。一旦代碼被部署,哈希值就可以被重新計算來驗證所有的代碼是否被正確部署。
查看原文:[DevOps](http://www.infoq.com/cn/news/2014/05/devops-infosec)[與信息安全](http://www.infoq.com/cn/news/2014/05/devops-infosec)