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