保護持續(xù)集成(CI)/持續(xù)交付(CD)管道的五個優(yōu)秀實踐
譯文譯者 | 李睿
審校 | 孫淑娟
開發(fā)人員的思維方式是理解問題,構(gòu)建解決方案,然后找出如何將健壯且安全的解決方案部署到生產(chǎn)環(huán)境中。
不幸的是,一旦實現(xiàn),將安全優(yōu)秀實踐嵌入到解決方案中通常會操作更加復(fù)雜和成本高昂,而快速發(fā)布創(chuàng)新的壓力往往會導(dǎo)致DevOps團隊發(fā)布安全債務(wù)。最佳Devsecops實踐是將知識、最佳實踐和安全性“左移”到開發(fā)過程中,以便敏捷開發(fā)團隊更有可能將安全性直接融入微服務(wù)、應(yīng)用程序或數(shù)據(jù)庫中。
但是持續(xù)集成(CI)/持續(xù)交付(CD)管道呢?當(dāng)構(gòu)建、集成、打包和交付代碼到環(huán)境的人工步驟在CI/CD工具中編寫腳本時,這種自動化提高了部署的可靠性。具有強大CI/CD實施的Devops團隊通常會采取下一步措施,并考慮為生產(chǎn)環(huán)境進行持續(xù)部署,這會帶來更多風(fēng)險,但可以實現(xiàn)更頻繁的部署。
開發(fā)人員需要考慮以下這些建議和最佳實踐,以確保安全和強大的CI/CD管道。
1.在CI/CD之前建立安全開發(fā)實踐
咨詢機構(gòu)凱捷公司敏捷和開發(fā)主管KulbirRaina分享了一個首要原則:“安全和質(zhì)量必須嵌入到代碼中,在處理CI/CD管道中的自動化時,不應(yīng)該讓質(zhì)量關(guān)卡來控制。開發(fā)人員需要在他們的集成開發(fā)環(huán)境中集成安全工具,以便正確地檢查代碼?!?
Linting是一個由識別編碼風(fēng)格偏差和不安全實踐的工具執(zhí)行的過程。更復(fù)雜的靜態(tài)應(yīng)用程序安全測試(SAST)工具可以發(fā)現(xiàn)緩沖區(qū)溢出、SQL注入缺陷和其他問題。Raina建議將SAST集成到持續(xù)集成中。
Redgate Software公司Devops倡導(dǎo)者Steve Jones表示,工具很重要,但就像任何Devops流程一樣,確保隨著時間的推移不斷學(xué)習(xí)和成長。他說:“定期對開發(fā)人員進行安全編碼實踐方面的教育,并確保他們找出簡單的漏洞(例如SQL注入),這一點至關(guān)重要。”
Buildkite公司聯(lián)合創(chuàng)始人兼聯(lián)合首席執(zhí)行官Tim Lucas分享了其他的一些最佳實踐。他建議查看來自開源和第三方的依賴項,以了解常見漏洞和暴露?(CVE)。Devops團隊不要將易受攻擊的軟件投入生產(chǎn)。他建議,對供應(yīng)商軟件使用可驗證的簽名,這樣如果供應(yīng)商受到威脅,企業(yè)的安全供應(yīng)鏈也不會受到損害。
Sonatype公司現(xiàn)場首席技術(shù)官lkka Turunen對此表示贊同。他建議說,“最佳實踐之一是在搜索開源軟件項目時具有選擇性,這就像在傳統(tǒng)制造業(yè)中一樣,并非所有部分都是平等的。尋找由敬業(yè)且負責(zé)任的開發(fā)人員維護的項目,不僅可以提高軟件供應(yīng)鏈的可維護性,還可以減少技術(shù)債務(wù)、返工和安全風(fēng)險。”
這些建議只是在軟件開發(fā)生命周期中應(yīng)用最佳安全實踐時的冰山一角,但它們是開發(fā)安全交付管道的關(guān)鍵先決條件。
2.在CI/CD管道中構(gòu)建持續(xù)測試
重要的是要認識到CI/CD不僅僅是交付代碼。這也是采用左移測試并發(fā)展持續(xù)測試策略的機會。然后,將測試作為核心原則的團隊可以在觸發(fā)CI/CD管道將版本部署到任何環(huán)境之前尋找驗證安全性的機會。除了集成SAST安全測試之外,開發(fā)團隊還應(yīng)關(guān)注:
- 觸發(fā)滲透測試以發(fā)現(xiàn)后門和其他入口點漏洞。
- 驗證安全控制和測試授權(quán)。
- 使用動態(tài)應(yīng)用程序安全測試 (DAST)工具測試OWASP十個主要的高嚴(yán)重性問題。
測試自動化還應(yīng)該考慮修復(fù)常見問題的步驟、通知正確的團隊以及回滾過程。
3.自動化CI/CD內(nèi)的數(shù)據(jù)安全程序
CI/CD管道還應(yīng)該用于自動化具有代碼和構(gòu)建依賴項的安全過程。需要關(guān)注的一個領(lǐng)域是數(shù)據(jù)安全,因為版本可能包括新的數(shù)據(jù)庫、更新的數(shù)據(jù)模型或新的數(shù)據(jù)集。
一項經(jīng)常被忽視的功能是使用從生產(chǎn)環(huán)境中提取的數(shù)據(jù)來更新開發(fā)和測試環(huán)境。開發(fā)團隊?wèi)?yīng)使用最近提取的數(shù)據(jù)來驗證功能和測試體驗,并使用數(shù)據(jù)屏蔽來隱藏個人身份信息和其他符合數(shù)據(jù)合規(guī)要求的數(shù)據(jù)。
Accelario公司首席技術(shù)官兼聯(lián)合創(chuàng)始人Roman Golod建議:“數(shù)據(jù)屏蔽是CI/CD期間安全自動化的關(guān)鍵部分。開發(fā)和測試團隊需要真實的數(shù)據(jù)來確保一切在生產(chǎn)中都能順利運行,但非生產(chǎn)系統(tǒng)通常不夠安全?!?/p>
其他技術(shù)包括使用合成數(shù)據(jù)和服務(wù)虛擬化。Golod補充說,“模擬真實事物的合成數(shù)據(jù)集將進一步加強安全性,因為如果該數(shù)據(jù)庫遭到破壞,威脅參與者將一無所獲。”
Copado公司戰(zhàn)略服務(wù)高級副總裁Daniel Riedel為開發(fā)團隊增加了一個關(guān)鍵起點。他說:“開發(fā)團隊需要了解自己的數(shù)據(jù),特別是監(jiān)管該數(shù)據(jù)的安全和合規(guī)政策。一旦了解了這些政策,需要仔細構(gòu)建一個出色的安全自動化框架,而該框架經(jīng)過充分測試,涵蓋了這些政策中規(guī)定的規(guī)則和控制?!?
4.應(yīng)用零信任原則來保護CI/CD管道
Devops團隊?wèi)?yīng)該如何鎖定管道,以便只有授權(quán)的人員才能觸發(fā)它們?Redgate Software公司的Devops倡導(dǎo)者Grant Fritchey提出了一項建議:“在Devops管道中實現(xiàn)安全性自動化的關(guān)鍵與始終保持良好安全性的關(guān)鍵是完全相同的:最小特權(quán)原則。如果確保只為管道提供足夠的權(quán)限,那么在管道內(nèi)部、周圍和內(nèi)部實現(xiàn)安全自動化將很簡單,并提供想要的結(jié)果。”
一些基本實踐包括隱藏API密鑰、在CI/CD工具中定義基于項目和角色的安全憑證,以及確保遠程Devops團隊成員的訪問安全。
5.通過將CI/CD與AIops和安全自動化集成來驗證部署
一旦將代碼部署到生產(chǎn)環(huán)境,Devops團隊的職責(zé)就不會結(jié)束。這就是對可觀察性和監(jiān)控的投資成為重要的運營反饋工具的地方。Devops團隊?wèi)?yīng)與運營團隊和工具合作,以響應(yīng)事件并識別技術(shù)債務(wù)何時成為運營或安全問題。以下是一些細節(jié):
- AIops工具集中運營數(shù)據(jù),將警報與事件相關(guān)聯(lián),并幫助圍繞性能和可靠性問題自動響應(yīng)事件。
- 安全自動化可以防止威脅和攻擊,同時啟用設(shè)置權(quán)限、修補系統(tǒng)和響應(yīng)安全事件的自動化。
- 許多CI/CD工具提供與AIops、安全自動化和其他通用IT自動化工具的雙向集成。作為CI/CD管道的一部分,DevOps團隊?wèi)?yīng)觸發(fā)這些工具的通知,以通知操作和信息安全有關(guān)代碼交付的信息。它們還應(yīng)該允許IT運營和信息安全自動化來觸發(fā)構(gòu)建或回滾,以支持運營和安全需求。
Devops工作流程顯示了從規(guī)劃到監(jiān)控部署的連續(xù)路徑,以確保團隊可靠、安全地規(guī)劃、交付、發(fā)布和運行系統(tǒng)。CI/CD是主要的Devops實踐之一,因此在管道之前、內(nèi)部和之后嵌入安全性是一項關(guān)鍵的責(zé)任。
原文標(biāo)題:??5 best practices for securing CI/CD pipelines??,作者:Isaac Sacolick