【編者按】作者Aaron Volkmann是CERT Division高級研究員,在本文中,他對DevOps自動化違反SOX法案進(jìn)行了闡述。同時,也簡單的提出了如何通過CI來避免這個問題,由OneAPM工程師翻譯。
以下為譯文
為了解決類似Enron、Worldcom以及Tyco等公司暴露出的財務(wù)欺詐丑聞,21世紀(jì)初期美國國會頒布了薩班斯-奧克斯利法案(SOX Act)。SOX法案要求上市公司通過一系列內(nèi)部控制手段,確保向投資者披露正確的財務(wù)信息。在一家IT公司中,遵守SOX方案的主要準(zhǔn)則之一就在于:確保沒有任何員工可以單方面地在生產(chǎn)環(huán)境中變更軟件代碼。DevOps的自動化技術(shù),如持續(xù)集成(CI)、持續(xù)交付(CD)、基礎(chǔ)設(shè)施即代碼(IaC)從表面上看,似乎已經(jīng)不再遵守SOX法案了。本文將會探討DevOps自動化如何能夠讓公司在保持兼容性的同時,還能從實(shí)際上提高其合規(guī)程度。
當(dāng)軟件控制進(jìn)程從傳統(tǒng)的手動方式轉(zhuǎn)換為更加自動化的過程時,很多公司都擔(dān)心檢查會被忽略,平衡被打破的同時也造成公司違反SOX法案。在圖一中所展示的傳統(tǒng)場景中,一名開發(fā)者對某個軟件進(jìn)行變更后,先將代碼提交進(jìn)入評審流程,然后通過手工或系統(tǒng)進(jìn)行打包準(zhǔn)備部署。新版本被提交到變更控制流程中,準(zhǔn)備部署到生產(chǎn)環(huán)境中。在管理者批準(zhǔn)將變更實(shí)施到生產(chǎn)環(huán)境之后,由生產(chǎn)服務(wù)工程師進(jìn)行部署。盡管管理該過程有很多辦法,但仍無法確保評審的代碼版本就是部署到生產(chǎn)環(huán)境的那個版本。
通過使用CI服務(wù)器(如圖二所示),software shop可以記錄與追蹤每個源代碼文件的哪個版本構(gòu)成了軟件的相應(yīng)版本。在持續(xù)部署的過程中會有停頓,人們在此時對變更進(jìn)行檢查,準(zhǔn)備投入生產(chǎn)環(huán)境;任何未經(jīng)授權(quán)的變更都不能通過該環(huán)節(jié)。
CI使得對打包軟件所使用源代碼文件的確切版本進(jìn)行記錄與審核成為可能。software shop同樣可以具備集中自動化測試的能力,這樣就能一一掃描每個軟件build,尋找安全缺陷。
另一個可能抵制自動化的領(lǐng)域是服務(wù)器基礎(chǔ)設(shè)施配置。在SEI,由于需要管理員手動查看服務(wù)器build,經(jīng)常會有人反對使用IaC作為服務(wù)器配置。在使用IaC工具(Chef,Docker或者Puppet)時,可以將基礎(chǔ)設(shè)施配置腳本作為可驗證、可測試、可信賴的軟件構(gòu)件,相信它能夠產(chǎn)生可靠且能夠復(fù)制的結(jié)果。IaC讓開發(fā)者有機(jī)會集中精力開發(fā)和測試配置腳本,同時允許自動化抄送測試服務(wù)器鏡像,減少人為錯誤的風(fēng)險。
每家公司甚至各公司內(nèi)的每個科技/商業(yè)領(lǐng)域都可能會有獨(dú)特的需求和限制。在特定領(lǐng)域,達(dá)標(biāo)的自動化水平可能也會不同。通過仔細(xì)將機(jī)器布置到位,讓自動化進(jìn)程按部就班,這樣一來控制、審核和保護(hù)公司資源的能力,還有確保遵守如SOX法案這樣聯(lián)邦法規(guī)的可能性只會增加。
原文鏈接:A DevOps a Day Keeps the Auditors Away (and Helps Organizations Stay in Compliance with Federal Regulations such as Sarbanes-Oxley)(責(zé)編/仲浩)