DevSecOps研發(fā)安全實踐—設(shè)計篇丨IDCF

來源:華為云DevCloud
作者:華為云DevCloud
前言
隨著DevOps的發(fā)展,DevOps大幅提升了企業(yè)應(yīng)用迭代的速度。但同時,安全如果不能跟上步伐,不僅會抵消DevOps變革帶來的提升,拖慢企業(yè)數(shù)字化轉(zhuǎn)型進程,還會導致漏洞與風險不約而至。所以安全能力在全球范圍內(nèi)受到的重視越來越高, 軟件開發(fā)內(nèi)生的安全性成為評價企業(yè)DevOps成熟度水平的重要指標 。
安全設(shè)計的重要性
在《DevSecOps領(lǐng)導者指南》一書中,作者Glenn Wilson提出了DevSecOps的三層方法論,安全教育(Security Education)、通過設(shè)計保證安全(Secure By Design)、安全自動化(Security Automation)。設(shè)計安全是實現(xiàn)DevSecOps非常重要的一環(huán),大量歷史經(jīng)驗也表明,越早在架構(gòu)設(shè)計階段考慮到安全設(shè)計的系統(tǒng),比那些在越晚的開發(fā)設(shè)計階段才考慮安全設(shè)計的系統(tǒng),要安全得多。根據(jù)美國國家標準與技術(shù)研究所(NIST)統(tǒng)計,在發(fā)布后執(zhí)行代碼修復,其修復成本相當于在設(shè)計階段執(zhí)行修復的 30 倍。具體數(shù)據(jù)如圖所示。

DevSecOps 的目標是在軟件生命周期的全部階段,可以更早、更快地發(fā)現(xiàn)并處理安全問題。從開始的安全左移到現(xiàn)在的無處不移,都是為了實現(xiàn)這個目標。因此設(shè)計安全作為全生命研發(fā)周期的排頭兵必不可少。
如何做好安全設(shè)計
如何做好設(shè)計安全,我們主要是圍繞安全架構(gòu)設(shè)計保證安全落地有法可依,進行威脅建模讓安全落地有跡可循、做好隱私和敏感數(shù)據(jù)保護讓安全落地在每一個細節(jié)和實處這幾個方面進行闡述。
安全架構(gòu)設(shè)計
在DevSecOps中,安全設(shè)計從應(yīng)用程序擴展到容器和基礎(chǔ)設(shè)施,應(yīng)用程序代碼和基礎(chǔ)設(shè)施代碼是抵御惡意行為者的多重威脅的重要防線。將良好的設(shè)計原則集成到產(chǎn)品的架構(gòu)和開發(fā)中是編寫安全代碼的基本要求。當架構(gòu)與安全控制直接相關(guān)時,確保工程師遵守良好的設(shè)計原則是非常重要的。安全控制存在于端到端交付的整個價值流中,從開發(fā)階段內(nèi)置于應(yīng)用程序中的控制到運行時保存應(yīng)用程序的控制。這些措施包括保護源代碼或者保護應(yīng)用程序運行時,還擴展到客戶與應(yīng)用程序的交互,如身份驗證和授權(quán)過程。
在安全架構(gòu)設(shè)計中,可以以安全三元組和安全設(shè)計原則為基準。機密性(Confidentiality)、完整性(Integrity)、可用(Availability),簡稱為CIA三元組,是安全的基本原則。機密性指只有授權(quán)用戶可以獲取信息,不可被任何未授權(quán)的用戶獲取。完整性指信息在輸入和傳輸?shù)倪^程中,不被非法授權(quán)修改和破壞,保證數(shù)據(jù)的一致性??捎眯灾副WC合法用戶對信息和資源的使用不會被不正當?shù)鼐芙^。
業(yè)界通用的安全設(shè)計原則,主要體現(xiàn)在限制性、簡單性和設(shè)計性三個方面:
限制性原則
失敗-默認安全原則(Fail-Safe Defaults),要有當功能失效后的應(yīng)急安全機制,還有默認的產(chǎn)品配置就應(yīng)該是安全狀態(tài),不存在安全漏洞。
完全仲裁原則(Complete Mediation),安全檢查要覆蓋任何一個訪問操作。
安全機制有能力標識每一個訪問操作請求的所有源頭。
特權(quán)分離原則(Separation of Privilege),將特權(quán)進行細分,分配給多個主體,避免一個主體擁有的特權(quán)非常多。
比如設(shè)置系統(tǒng)管理員,配置管理員,安全管理員等不同角色,對應(yīng)不同特權(quán)。
最小權(quán)限原則(Least Privilege),每個對象只擁有完成工作所需特權(quán)的最小集合,限制由意外或錯誤所引起的破壞。
簡單性原則
經(jīng)濟適用原則(Economy of Mechanism),安全設(shè)計盡可能短小精悍,在使用的時候更容易處理。
最少公共機制原則(Least Common Mechanism),公共資源的共享對象應(yīng)該設(shè)置為最少的數(shù)量,避免多個對象共享同一個資源的場景。
設(shè)計性原則
開放設(shè)計原則(Open Design),不要自行設(shè)計安全機制,不要自研算法,開發(fā)設(shè)計更重要。
可以通過密鑰、口令等來增強系統(tǒng)的安全性,這樣有利于安全機制接受廣泛的審查。
心理可承受原則(Psychological Acceptability),在心理可承受的前提下,為安全機制設(shè)置良好交互性,安全機制可能會為用戶增加額外的負擔,但是這種負擔必須是合理的,用戶可承受的。
比如多次登錄失敗后才需要輸入驗證碼。
業(yè)界經(jīng)過多年的發(fā)展和總結(jié),又發(fā)展引申出其他一些安全原則,例如縱深防御、不要輕信、保護最薄弱環(huán)節(jié)、提升隱私原則等。
威脅建模
威脅建模是分析應(yīng)用程序安全性的一種結(jié)構(gòu)化方法,用來識別,量化和解決與應(yīng)用程序相關(guān)的安全風險,通過識別目標和漏洞來優(yōu)化系統(tǒng)安全,然后定義防范或減輕系統(tǒng)威脅的對策的過程。在設(shè)計新產(chǎn)品或者現(xiàn)有產(chǎn)品中功能的時候,工程師需要熟悉攻擊者搜索的安全漏洞類型,以便他們能夠減輕被利用的風險;需要了解設(shè)計中固有的風險,以便在交付生命周期的早期消除或者減輕這些風險。綜上所述,威脅建模就是工程師評估產(chǎn)品或功能的設(shè)計以識別威脅并確定如何構(gòu)建針對他們的保護的過程。
威脅建模的過程可以參考微軟提供的方法:預設(shè)場景->圖表化場景/過程->識別威脅->提供給每個威脅的環(huán)節(jié)措施->驗證所有威脅和緩解措施。

一些IT互聯(lián)網(wǎng)公司,在大量的實踐經(jīng)驗基礎(chǔ)上,構(gòu)建了自己的安全威脅庫和安全需求庫,實現(xiàn)了輕量級威脅建模過程,通過安全評估調(diào)查問卷,從系統(tǒng)結(jié)構(gòu)和使用場景去識別將要構(gòu)建的應(yīng)用類型,然后匹配對應(yīng)的威脅庫和需求庫,確定安全需求基線,最終得出安全設(shè)計方案。
業(yè)界有許多的威脅建模的方法已經(jīng)開發(fā)出來,如微軟的STRIDE、攻擊模擬和威脅分析流程PASTA、LINDDUN、通用漏洞評分系統(tǒng)CVSS、攻擊樹、Persona non Grata、安全卡、VAST建模等方法,可以將它們組合起來以創(chuàng)建更強大、更全面的潛在威脅視圖。并不是所有的方法都是全面的,有些是抽象的,有些以人為中心,還有些方法是專門針對風險或者隱私問題,組織應(yīng)該根據(jù)項目的特定需求選擇哪種方法。
安全隱私和數(shù)據(jù)保護
安全隱私需求分析與設(shè)計是服務(wù)應(yīng)用研發(fā)運營整個生命周期的源頭,在設(shè)計階段應(yīng)仔細考慮安全和隱私問題,在項目初期確定好安全需求,盡可能避免安全引起的需求變更。
DevSecOps研發(fā)運營安全解決方案關(guān)注痛點安全問題,如安全要求、合規(guī)要求以及目前熱點的個人數(shù)據(jù)和隱私保護等問題,使用安全解決方案可以更好地避免此類安全問題的發(fā)生,提升軟件應(yīng)用服務(wù)的安全性。
安全隱私需求主要來自于客戶安全需求,業(yè)界最佳實踐如OWASP TOP10、OWASP ASVS,公司安全策略《xxx信息技術(shù)管理規(guī)范》《xxx數(shù)據(jù)管理規(guī)范》,行業(yè)監(jiān)管要求,以及法律法規(guī)《網(wǎng)絡(luò)安全法》、《個人信息保護規(guī)范》、《數(shù)據(jù)安全法》等。建立明確的安全需求管理流程,能夠?qū)Π踩枨蟮姆治?、評審、決策等環(huán)節(jié)進行有效管理,讓需求分解分配可追溯。
華為云安全設(shè)計實踐
華為有20年研發(fā)安全積累,華為的研發(fā)安全能力是伴隨業(yè)務(wù)中不斷出現(xiàn)的問題逐步形成的。華為將已經(jīng)開放的運維安全能力,和即將開放的研發(fā)安全能力與華為云DevCloud深度融合,為企業(yè)帶來DevSecOps平臺,讓企業(yè)便捷的落地DevSecOps理念,在軟件開發(fā)過程中就內(nèi)置了安全保護,讓軟件“天生安全,健康成長”,成為企業(yè)的競爭力。
安全架構(gòu)設(shè)計
華為在安全設(shè)計原則方面,基于業(yè)界的規(guī)范,構(gòu)建了自己的基礎(chǔ)安全技術(shù)與工程能力,形成了安全標準與規(guī)范,其中包括安全/隱私需求基線,基礎(chǔ)安全設(shè)計規(guī)范落地,安全編碼規(guī)范,采購安全要求,開源及第三方軟件安全管理策略。
華為云在參考信息技術(shù)安全評價通用專責CC的安全功能項、NIST控制集,總結(jié)成產(chǎn)品安全架構(gòu)設(shè)計8維度24子項,。8維度安全架構(gòu)設(shè)計包括以下幾個方面:以此指導架構(gòu)設(shè)計人員系統(tǒng)、全面地進行安全架構(gòu)設(shè)計,避免架構(gòu)級安全設(shè)計遺漏。
威脅建模
華為有自己的威脅建模工具 SecDesign,在產(chǎn)品設(shè)計期就進行威脅建模,識別并消減風險。
從痛點問題入手去思考:在系統(tǒng)需求分析和設(shè)計階段,怎樣才能使產(chǎn)品更安全?在什么樣的子系統(tǒng)、模塊、數(shù)據(jù)流之間考慮安全風險?識別了風險后,怎么消減幾個方面進行思考?華為云開放的安全設(shè)計域,對STRIDE方法論進行升級,用于系統(tǒng)威脅分析,提供分析維度、參考案例,輔助進行安全設(shè)計;根據(jù)識別到的安全風險,智能推薦消減措施及測試用例,輸出分析報告;長期積累的安全風險識別方案、消減方案、設(shè)計方案、測試用例、場景樣例與知識,為安全設(shè)計提供豐富的華為云業(yè)界經(jīng)驗,極大降低企業(yè)安全設(shè)計門檻。
安全隱私和數(shù)據(jù)保護
華為云構(gòu)建了全生命周期的數(shù)據(jù)安全和隱私保護設(shè)計,實現(xiàn)數(shù)據(jù)隔離、數(shù)據(jù)加密和數(shù)據(jù)冗余。
數(shù)據(jù)隔離:隔離機制可避免客戶間有意或無意的非授權(quán)訪問、篡改等行為,降低數(shù)據(jù)泄露風險。華為云的云硬盤EVS、對象存儲服務(wù)OBS、彈性文件服務(wù)SFS等服務(wù)均將客戶數(shù)據(jù)隔離作為重要特性。用戶在設(shè)計云上業(yè)務(wù)架構(gòu)時可利用這些云服務(wù)實現(xiàn)數(shù)據(jù)安全隔離的目標。
數(shù)據(jù)加密:加密可保護靜態(tài)和傳輸中的數(shù)據(jù)。華為云的云硬盤EVS等多個服務(wù)均支持與數(shù)據(jù)加密服務(wù)DEW集成,實現(xiàn)密鑰管理和數(shù)據(jù)加密。華為云還采用加密傳輸通道,保障數(shù)據(jù)在傳輸過程的機密性和完整性。用戶在設(shè)計數(shù)據(jù)加密功能時,可以充分借鑒華為云已有的實踐和能力。
數(shù)據(jù)冗余:冗余設(shè)計可以有效防止數(shù)據(jù)丟失。華為云采用多副本備份和糾刪碼設(shè)計,通過冗余和校驗機制來判斷數(shù)據(jù)的損壞并快速進行修復,以確保服務(wù)的可靠性。用戶在設(shè)計云上業(yè)務(wù)時,可充分利用華為云服務(wù)提供的可靠性服務(wù)。
隱私保護設(shè)計:在產(chǎn)品設(shè)計過程中考慮隱私,可大幅提高產(chǎn)品的隱私保護能力。華為云在構(gòu)建云服務(wù)時,將隱私保護作為需求落入產(chǎn)品開發(fā)設(shè)計流程。華為云在個人數(shù)據(jù)全生命周期貫徹PbD(Privacy by design)的理念,構(gòu)建具備隱私保護特性的安全云服務(wù)。華為云基于PbD原則在設(shè)計中考慮隱私,即通過設(shè)計來保護個人數(shù)據(jù)和隱私,將保護個人數(shù)據(jù)和隱私的理念以技術(shù)手段運用到產(chǎn)品和服務(wù)的各個環(huán)節(jié)中。華為云貫徹和落實的七條隱私保護基本原則是合法、正當、透明,目的限制,數(shù)據(jù)最小化,準確性,存儲期限最小化,完整性與保密性,可歸責。華為云解讀GDPR等法律法規(guī),幫助企業(yè)滿足合規(guī)要求。華為云開放的隱私合規(guī)域,根據(jù)對GDPR等的解讀與業(yè)務(wù)分析,提供工具,生成隱私合規(guī)報告、隱私聲明,幫助企業(yè)合規(guī)設(shè)計;根據(jù)隱私合規(guī)設(shè)計方案,自動生成和執(zhí)行測試用例,最后給出隱私合規(guī)驗證報告。
后記
DevOps 的基本訴求之一是要“快”,而安全保障卻具有“快不起來”的特點。因為安全本身需要更為專業(yè)的知識背景,分析更復雜的攻擊方式和潛在安全問題。并且,即使使用工具,其技術(shù)棧也深于普通的檢查工具,這意味著耗時更長。比如,對源代碼的靜態(tài)檢查,如果只是檢查代碼風格,他們可以做到快速掃描;如果需要進行安全編碼的自動化檢查,那么就需要進行流分析,甚至需要一個專門的編譯過程來收集必要信息。未來的路任重道遠,實現(xiàn)DevSecOps還有很長的路要走。
參考附錄
1.《DevSecOps領(lǐng)導者指南》格倫·威爾遜(GLENN WILSON)翻譯:莊飛
2.《研發(fā)運營安全白皮書》. 云計算開源產(chǎn)業(yè)聯(lián)盟.
3.《華為云安全白皮書》.華為技術(shù)有限公司
4.華為可信專業(yè)級之—— 可信設(shè)計
5. 每天掃描超300億行代碼,DevSecOps在華為的落地與實踐_DevOps

#IDCF DevOps黑客馬拉松挑戰(zhàn)賽,獨創(chuàng)端到端DevOps體驗,精益創(chuàng)業(yè)+敏捷開發(fā)+DevOps流水線的完美結(jié)合。
2022年9月17-18日將在北京舉辦,36小時內(nèi)從0到1打造并發(fā)布一款產(chǎn)品。
企業(yè)組隊參賽&個人參賽均可,趕緊上車~??



