基礎(chǔ)打牢的重要性無需贅述,基礎(chǔ)不牢,地動山搖。不論是底層軟件還是網(wǎng)安系統(tǒng),基礎(chǔ)架構(gòu)的重要性都不可忽視。
根深才能葉茂,只有穩(wěn)定的基礎(chǔ)架構(gòu)才能搭建安全強(qiáng)大的軟件系統(tǒng)。本期【網(wǎng)安必讀】為您分享《基礎(chǔ)架構(gòu)即代碼的DevSec指南》,探討利用DevSecOps來保護(hù)云的挑戰(zhàn),以及基礎(chǔ)架構(gòu)即代碼如何實(shí)現(xiàn)這一切。
基礎(chǔ)架構(gòu)即代碼簡介
基礎(chǔ)架構(gòu)即代碼是指用于使用代碼管理和配置基礎(chǔ)架構(gòu)的技術(shù)和流程。它支持DevOps流程,如版本控制、同行評審、自動測試、標(biāo)記、持續(xù)集成和持續(xù)交付。
IaC的興起
DevOps公司
Puppet于2009年首次引入基礎(chǔ)架構(gòu)即代碼(也稱為IaC),以改善部署和管理基礎(chǔ)架構(gòu)的傳統(tǒng)方法。根據(jù)Puppet的說法:
“舊的基礎(chǔ)架構(gòu)管理方法,包括手動流程和文檔記錄、薄弱的單用途腳本和基于圖形用戶界面的工具,在過去都有自身的價值。然而,如今,隨著需要不斷擴(kuò)展基礎(chǔ)架構(gòu)、采用短暫的基礎(chǔ)架構(gòu)和更高的應(yīng)用系統(tǒng)復(fù)雜性,需要新的方法來控制局面。”
從那時起,IaC就已經(jīng)成為Ansible、Chef、Salt等多家公司的基礎(chǔ)。近年來,IaC的流行是在Terraform的推動下實(shí)現(xiàn)的,Terraform是Hashi Corp流行的開源IaC框架,主要用于定義公有云服務(wù)中的資源。Terraform使IaC不受限地可自定義和可訪問,為周圍的IaC生態(tài)系統(tǒng)鋪平了道路。
同時,云提供商創(chuàng)建了自己的配置框架,以幫助簡化和自動化基礎(chǔ)架構(gòu)編排和管理。AWS Cloud Formation、Azure Resource Manager(ARM)和Google的Cloud Deployment Manager都使基礎(chǔ)架構(gòu)工程師更容易構(gòu)建可重復(fù)的環(huán)境。
工作原理
IaC可以是聲明性的,這意味著它定義了將要設(shè)置的內(nèi)容;也可以是命令式的,這意味著它定義了設(shè)置方式。
Terraform和Cloud Formation都是聲明性框架的示例,而AWS Cloud Development Kit(CDK)是命令式IaC框架的示例。
Kubernetes也與IaC緊密結(jié)合,因為它的配置可以以代碼的形式定義。
每個特定的框架都有自己的約定和語法,但I(xiàn)aC通常由資源聲明、輸入變量、輸出值、配置設(shè)置和其他參數(shù)組成。IaC通常是基于JSON、HCL或YAML的,包含啟用基礎(chǔ)設(shè)施所需的所有配置,如計算、網(wǎng)絡(luò)、存儲、安全、身份和訪問管理(IAM)等。
基礎(chǔ)架構(gòu)即代碼優(yōu)勢
由于IaC使用代碼定義啟動和運(yùn)行資源所需的內(nèi)容,因此它能夠自動化和擴(kuò)展云配置,并提高可重復(fù)性。
自動化
如今的企業(yè)每天部署的應(yīng)用不計其數(shù),基礎(chǔ)架構(gòu)需求也在不斷變化以滿足這些需求。
可擴(kuò)展性
IaC使團(tuán)隊更容易、更簡單地大規(guī)模配置云資源,同時減少錯誤配置的風(fēng)險,而不必花費(fèi)不必要的時間和資源。自動化和代碼配置使得每次都以相同的方式部署云服務(wù)變得更加容易。
可重復(fù)性
一致性是云基礎(chǔ)架構(gòu)的關(guān)鍵。借助IaC,每次都以相同的方式部署計算、存儲和網(wǎng)絡(luò)服務(wù),因此您可以跨資源甚至跨多云環(huán)境保持一致性。
安全性
IaC為跨團(tuán)隊協(xié)作提供了重要的機(jī)會。通過使用統(tǒng)一、通用的語言跨環(huán)境和云配置云資源,開發(fā)人員和操作人員可以更輕松地保持同步,共同工作以確保云原生應(yīng)用的安全。
基礎(chǔ)架構(gòu)即代碼風(fēng)險
盡管IaC具有靈活性和優(yōu)勢,但它也存在一些缺點(diǎn),團(tuán)隊?wèi)?yīng)該注意這些缺點(diǎn),尤其是在安全性及合規(guī)性方面。
采用缺口
就像引入一個新的開源庫或
SaaS平臺一樣,IaC有能力提高效率,但需要適當(dāng)級別的認(rèn)同和意識。由于IaC仍然屬于相對較新的事物,所以團(tuán)隊在采用IaC時面臨的最大挑戰(zhàn)之一是將新框架與現(xiàn)有基礎(chǔ)架構(gòu)準(zhǔn)確集成。
不可改變的漂移
有了IaC,您就不用在特定的控制臺中管理基礎(chǔ)架構(gòu),而是有另一個并行運(yùn)行的框架,這應(yīng)該是您的真實(shí)信息之源。
安全性掉隊
錯誤配置是云數(shù)據(jù)泄露的主要源頭。根據(jù)一些消息來源,99%的企業(yè)的錯誤配置沒有引起注意。云安全工具提供了必要的可視性和監(jiān)控,以應(yīng)對該統(tǒng)計數(shù)據(jù),但提供的反饋可能與IaC不一致。
開源IaC安全挑戰(zhàn)
盡管IaC支持現(xiàn)成的開源模板或模塊,但重要的是要了解這些組件通常不是以安全第一的原則共享的。
開源IaC經(jīng)濟(jì)目前在Git Hub等地方以及Terraform Registry和
Artifact Hub等專門構(gòu)建的存儲庫中獲得發(fā)展動力。雖然開源IaC讓開發(fā)人員更容易、更快地啟動和運(yùn)行云服務(wù),但安全性往往是事后考慮的問題。
Terraform Registry中大約一半的開源Terraform模塊和Artifact Hub中的Helmchart包含錯誤配置。這項研究突顯了云安全問題解決方式和解決位置的缺口。它還顯示了安全性滯后的程度,以及DevSecOps對云基礎(chǔ)架構(gòu)安全的影響有多大。
圖1:Bridgecrew的開源Helm安全研究的概括性結(jié)果(左)
Bridgecrew開源Terraform安全現(xiàn)狀報告的概括性結(jié)果(右)
IaC對DevSecOps的挑戰(zhàn)
如果沒有正確的方法、策略和工具,采用DevSecOps來保護(hù)云可能會在團(tuán)隊之間造成更多的瓶頸和阻礙。
開發(fā)人員的動機(jī)和安全性經(jīng)常不能一致,這已經(jīng)不是什么秘密。DevOps希望快速移動并以迭代方式工作,安全性上不相稱的反應(yīng)式反饋會成為阻礙。
DevSecOps旨在將安全性納入DevOps的范疇,以避免可能使云原生應(yīng)用易受攻擊的錯誤配置或薄弱實(shí)現(xiàn)。如果沒有正確的方法,納入DevSecOps戰(zhàn)略會帶來一系列的挑戰(zhàn)——特別是當(dāng)涉及到保護(hù)云的安全。
這可能與兩個主要原因相關(guān)。首先,基礎(chǔ)架構(gòu)環(huán)境正在快速變化,而企業(yè)內(nèi)部可能并不總是具備跟上這些變化所需的經(jīng)驗和專業(yè)知識。其次,許多現(xiàn)有流程和工具在設(shè)計時沒有考慮到云安全,因此可能會為云原生工程和安全團(tuán)隊造成瓶頸。
不一致的治理
由于缺乏開發(fā)可擴(kuò)展基礎(chǔ)架構(gòu)的流程,云中的DevSecOps很難實(shí)現(xiàn)。IaC就是對這一問題的回應(yīng),它緩解了大規(guī)模部署基礎(chǔ)設(shè)施所帶來的性能和成本方面的挑戰(zhàn)。
技能和訪問缺口
自動化工具非常擅長處理從關(guān)鍵安全問題到違反信息性最佳實(shí)踐的所有問題。但即使是最新、最出色的工具,也無法替代可靠的云DevSecOps流程和工作流。
采納云DevSecOps和IaC的技巧
到目前為止,我們已經(jīng)解決了在云中接近DevSecOps的潛在挑戰(zhàn)。以下是克服這些挑戰(zhàn)可以采取的三個行動:
1.將一切自動化
2.利用現(xiàn)有流程
3.代碼即安全
DevOps生命周期中的云安全
雖然沒有適合每個組織的萬能解決方案,但鼓勵采用云DevSecOps的關(guān)鍵是在IaC早期實(shí)施防護(hù)措施,并在整個DevOps生命周期中收獲有價值的反饋。
圖2:在開發(fā)生命周期的每個階段識別云錯誤配置的利弊
IDE掃描
盡快發(fā)出信號是“左移”安全性的要義,還有什么反饋時機(jī)優(yōu)于開發(fā)人員實(shí)際編寫代碼的時間和地點(diǎn)?
提交前鉤連點(diǎn)
提交前單元和集成測試是公認(rèn)的最佳實(shí)踐。現(xiàn)在,也應(yīng)該進(jìn)行提交前IaC安全掃描。
拉取/合并請求檢查
對于完全依靠版本控制系統(tǒng)(VCS)的團(tuán)隊來說,將安全性嵌入經(jīng)批準(zhǔn)的代碼審查過程有很多好處。根據(jù)觸發(fā)CI/CD構(gòu)建的因素,此方法可以與CI/CD掃描一起使用,也可以代替通過CI/CD掃描。
CI/CD作業(yè)
CI/CD管道在編譯基礎(chǔ)架構(gòu)和在部署編譯后的代碼之前對其進(jìn)行測試方面至關(guān)重要。此抽象級別的掃描對于揭示即將配置的核心資源、變量和依賴模塊中的錯誤配置非常重要。
運(yùn)行時安全
請務(wù)必記住,開發(fā)者優(yōu)先安全性并不排除“傳統(tǒng)”云安全方法,即監(jiān)控運(yùn)行的云資源的安全性和合規(guī)性錯誤配置。
IaC使基礎(chǔ)設(shè)施的部署和管理更加高效,對于實(shí)現(xiàn)云DevSecOps至關(guān)重要。盡管IaC引入一系列挑戰(zhàn),但它可以保護(hù)您的基礎(chǔ)架構(gòu)。通過在整個DevOps生命周期中嵌入IaC掃描和安全即代碼修復(fù)程序,您可以采用更現(xiàn)代的云安全方法。
Prisma Cloud團(tuán)隊還將IaC視為彌合基礎(chǔ)架構(gòu)工程、DevOps和安全之間缺口的關(guān)鍵。通過利用IaC的優(yōu)勢,團(tuán)隊可以自動化云安全并將其嵌入DevOps生命周期。我們的編碼云安全平臺通過將IaC掃描和安全即代碼修復(fù)程序與開發(fā)人員已在使用的工具和工作流集成,實(shí)現(xiàn)了此類協(xié)作。