Isaac Sacolick
之所以會出現DevOps,是因為需要頻繁發(fā)布的開發(fā)團隊與需要維護可靠性和穩(wěn)定性的運營團隊之間在文化上、功能上和技術上存在隔閡。DevOps文化致力于解決思維方式、協(xié)作和實踐上的差異以實現各自目標和DevOps實踐,其中包括持續(xù)集成/持續(xù)交付(CI/CD)、基礎設施即代碼(IaC)、AIOps(通過在應用程序監(jiān)視中內置機器學習實現)。
隨著越來越多的人和企業(yè)開始采用DevOps,“DevOps”一術語顯然已經無法再準確描述這一活動的全部范疇、實踐和要求。我曾經呼吁使用“DevQaOps”這一術語,并推薦在可行的情況下使用前移安全測試。
每個人對安全負責也很重要。將安全性轉移到開發(fā)和運營中(即DevSecOps)可以幫助用戶實現這一目標。
在DevOps出現之前,開發(fā)團隊通常只在應用程序發(fā)布過程的最后階段才開始進行安全實踐,變更咨詢委員會(CAB)通常會要求有這一步驟。由于安全團隊是在流程后期才加入的,因此他們理解業(yè)務需求、熟悉技術變更、評估風險以及進行安全測試的時間都相當有限。當安全團隊發(fā)現了問題,要想在不影響時間表的情況下修復問題時會顯得非常倉促。如果發(fā)現的問題需要進行實質性的代碼更改,那么開發(fā)團隊就會面臨一個進退兩難的選擇。
在發(fā)布流程的后期進行安全性測試對于DevOps團隊來說是一個重大風險,因為這樣可能會增加發(fā)布頻率和對微服務的投資。據DORA和Google Cloud發(fā)布的《2019年度DevOps促進狀態(tài)報告》(Accelerate:State of DevOps 2019)顯示,43%的受訪者為每天或每周都需要發(fā)布應用程序的高績效或精英企業(yè)。由于DevOps開始被大量應用在生產部署當中,這使得用戶需要有一種綜合性方法來頻繁部署最佳安全實踐,同時這也要求用戶在開發(fā)流程的早期就開始部署。
敏捷開發(fā)團隊和信息安全團隊之間需要在以下領域進行協(xié)作:
·? 審查安全要求、架構和編碼實踐。
·? 在CI/CD管道中進行自動化安全測試。
·? 監(jiān)視應用程序所面臨的威脅并解決安全問題。
在以下部分中,我將針對這些領域提供一些指導原則。
開發(fā)團隊和信息安全團隊必須在敏捷開發(fā)流程的早期(甚至在編碼開始之前)就安全性展開合作。在Puppet、CircleCI和Splunk發(fā)布的《2019年DevOps狀態(tài)報告》中,研究人員明確了幾種開發(fā)和信息安全團隊相互協(xié)作的最佳實踐:
·? 安全和開發(fā)團隊應當就威脅模型展開協(xié)作。
·? 應在產品待辦事項列表中優(yōu)先考慮功能性和非功能性安全要求。
·? 安全要求應當被視為設計約束條件。
敏捷開發(fā)團隊可以通過標記高等級安全風險要求和進行安全審查來實施這些實踐。開發(fā)團隊應與信息安全團隊在需求、架構、設施和應用程序部署方面展開合作,以捕獲用戶信息、管理授權和處理敏感數據。
為了降低代碼更改的風險,敏捷團隊應以用戶的角度編寫驗收標準,以解決信息安全團隊的安全要求和約束。
敏捷開發(fā)人員還應該按照設計原則來審查OWASP(開放 Web 應用程序安全項目)的安全性,其中包括以下幾種最佳實踐:
·? 在密碼過期等領域建立起由安全性驅動的默認策略。
·? 在定義角色和授權訪問業(yè)務流程時實施最低權限原則。
·? 深入理解職責分離、“不信任”服務等安全原則,最小化攻擊面以及避免安全性變得模糊不清。
·? 通過深入了解根本原因和整體性修復,快速解決安全問題。
最后,開發(fā)團隊和信息安全團隊應共同總結出一套可供參考的編碼最佳實踐,例如卡內基梅隆大學的編碼實踐、密歇根大學安全計算的最佳實踐,以及所用編程語言和平臺的最佳安全編碼實踐。
如果要將應用程序部署到公有云,用戶還應查看例如Google Cloud安全性概述、AWS安全性設計、Azure上設計安全應用程序的站點等最佳實踐。
下一步要考慮安全性的是CI/CD管道,在此管道中,自動化代碼和安全驗證能夠分割構建并警告開發(fā)人員。建立CI/CD管道標準時應考慮的一些較常見的安全實踐和工具:
·? 靜態(tài)應用程序安全測試(SAST)平臺(如SonarQube、Veracode、Sentinel Source和Checkmarx)可針對不同的漏洞和模式掃描代碼。例如,SonarQube可掃描惡意輸入(污點分析)、跨站點腳本、敏感數據暴露和已知漏洞。Veracode稱,他們已經掃描了超過11萬億行代碼,誤報率低于5%。Checkmark可使用20多種編程語言,并符合PCI-DSS、HIPAA、FISMA等法規(guī)標準。所有這三個工具均可在多個IDE和CI/CD平臺上運行。此外,用戶還可以選擇開源的SAST工具,例如CodeWarrior和NodeJsScan。目前OWASP已列出了20多種SAST工具,并指出它們可以發(fā)現配置問題、身份驗證和訪問控制中的漏洞。
·? 附屬掃描工具可審查包括開源庫在內的基礎軟件組件,并報告漏洞。GitLab Secure擁有SAST和其他安全工具,包括依賴性檢測,并且可以與Java、JavaScript、PHP、Python、Ruby、Scala和Go一起使用。OWASP Dependency Check還可與Jenkins、CircleCI和SonarQube進行集成。Snyk開源安全管理器能夠讓開發(fā)人員查找和修復開源漏洞。微軟最近發(fā)布了一款名為Application Inspector的代碼分析工具,可以針對400種模式進行報告,其中包括影響安全性的功能。
·? 滲透測試的出現已經有一段時間了,但是傳統(tǒng)上許多公司都設置有在軟件開發(fā)生命周期(SDLC)中測試代碼、構建和部署流程獨立性的安全團隊。目前比較流行的工具OWASP Zed Attack Proxy(OWASP ZAP)可以嵌入CI/CD工具(如Jenkins)中并觸發(fā)部署。ZAP項目負責人Simon Bennetts曾就ZAP的All Day DevOps系列產品指出:“使用得越早越好。ZAP在自動化方面具有許多亮點?!?/p>
·? DevOps、云計算和開發(fā)工具通常都有自己的安全插件。例如,Jenkins和Azure DevOps有40多個安全插件,CircleCI也有20多個安全插件。微軟Azure已發(fā)布了自己的持續(xù)安全性方法,AWS則為CodePipeline用戶提供了DevSecOps準則。 隨著安全技術、集成和devops工具的快速發(fā)展,信息安全和開發(fā)團隊應定期檢查這些工具以查找新的安全插件。
·? 另一個重要的考慮因素是保護CI/CD管道本身。保護鍵和參數的安全對于安全性來說至關重要,為此CircleCI、Jenkins和Azure都提供了鎖定這些鍵和參數的工具和建議。
在保護基礎設施即代碼、強化容器安全和配置云服務方面有著一整套DevSecOps規(guī)范。此外,在數據安全性、身份管理和物聯(lián)網設備安全方面也有專門的DevSecOps主題。如果用戶的工程和開發(fā)項目涵蓋基礎設施、移動、網絡、物聯(lián)網和分析,那么用戶還將在這些領域中找到專門的安全實踐和工具。
除了基礎設施和數據安全之外,從事應用程序開發(fā)的所有人都必須熟知應用程序在生產環(huán)境中的工作方式。審查事件,參與對深層次原因的分析以及糾正缺陷都是應用程序開發(fā)的重要職責。對于開發(fā)人員來說,這通常意味著改進應用程序監(jiān)視工具的日志記錄和審查分析功能。
作為一種新興的運營技術,AIOps利用了機器學習和自動化功能簡化了DevOps和應用程序監(jiān)視。運營團隊通常會使用許多不同的監(jiān)視工具,但是使用多個工具可能會減慢解決事件的速度,尤其是在復雜的多云環(huán)境中以及開發(fā)團隊頻繁進行修改時。
AIOps工具聚合了多個監(jiān)視工具、應用程序日志文件或基礎設施組件的運營數據,然后再利用機器學習來幫助識別事件,觸發(fā)自動響應并減少解決問題的時間。這些工具還可以通過篩選縱向操作數據來幫助發(fā)現異常值和延緩問題的發(fā)展速度。通過這種類型的分析可以發(fā)現許多安全問題。
對安全問題的審查監(jiān)視和AIOps工具可以幫助信息安全和開發(fā)團隊將運營中的安全事件反饋至敏捷開發(fā)流程中并進行修復。雖然這是一種被動性安全措施,但是對于致力于管理和提高應用程序安全性的敏捷團隊和devops 部門而言,這是一項至關重要的實踐。
解決軟件安全問題需要在敏捷開發(fā)流程開始時就積極主動采取措施,使用開發(fā)管道中的最佳實踐和工具,以及基于監(jiān)視生產系統(tǒng)的被動措施。安全威脅總是瞬息萬變,因此敏捷團隊和DevOps部門需要不斷審查安全實踐并驗證新方法。
本文作者Isaac Sacolick為《驅動數字技術:通過技術實現業(yè)務轉型的領導者指南》一書的作者。該指南介紹了許多關于敏捷性、DevO ps和數據科學的實踐,對成功的數字化轉型計劃具有重要的指導意義。
原文網址
https://www.infoworld.com/article/3520969/how-to-bring-security-into-agile-development-and-cicd.html