DevSecOps軟件研發安全實踐——設計篇
前言

隨著DevOps的發展,DevOps大幅提升了企業應用迭代的速度。但同時,安全如果不能跟上步伐,不僅會抵消DevOps變革帶來的提升,拖慢企業數字化轉型進程,還會導致漏洞與風險不約而至。所以安全能力在全球范圍內受到的重視越來越高, 軟件開發內生的安全性成為評價企業DevOps成熟度水平的重要指標 。
一直以來,業界長期重視軟件上線后的安全防護,而對研發階段的安全投入不多。2012年,Gartner提出了DevSecOps的理念。DevSecOps 的理念是將安全防護流程有機地融入傳統的 DevOps 流程中,為研發安全提供強有力保證,安全工具支撐研發階段段安全要求落地。
安全設計的重要性
DevSecOps 的目標是在軟件生命周期的全部階段,可以更早、更快地發現并處理安全問題。從開始的安全左移到現在的無處不移,都是為了實現這個目標。因此設計安全作為全生命研發周期的排頭兵必不可少。
業界的相關安全設計實踐
如何做好設計安全,我們先來參考下業界相關機構和企業的做法。
? 安全開發生命周期SDL(Security Development Lifecycle)是微軟最早提出,專注在軟件開發流程的各個階段的安全和隱私問題,在系統設計階段提到了三個方面:安全設計、威脅建模和安全和隱私風險評估。
? OWASP推出了SAMM(Software Assurance Maturity Model),幫助開發者在軟件工程的過程中實施安全,在軟件構造階段提出了威脅評估和安全架構。
? 信息通信研究院的研發運營安全體系中,明確給出設計階段需要進行確定質量安全門禁、受攻擊面分析、威脅建模、安全需求設計知識庫、安全設計原則。
? 騰訊在設計階段提出了公司安全規范的建立、安全評估和威脅建模,騰訊構建了自己的隱私保護方法論——用戶、控制、數據三位一體的方式。
? 小米提出了設計階段要制定小米安全手冊、構建安全培訓體系、進行威脅建模分析。
? 華泰證券在DevSecOps敏捷安全大會2021中發表了《安全內建-通過設計保證安全》,提到了安全架構設計、輕量級威脅建模和安全測試金字塔三個方面。
其他更多內容不在一一列舉,關于設計階段的安全保障大家都有自己獨有的特色,下面我們主要是圍繞安全架構設計保證安全落地有法可依,進行威脅建模讓安全落地有跡可循、做好隱私和敏感數據保護讓安全落地在每一個細節和實處這幾個方面進行闡述。
安全架構設計
在DevSecOps中,安全設計從應用程序擴展到容器和基礎設施,應用程序代碼和基礎設施代碼是抵御惡意行為者的多重威脅的重要防線。將良好的設計原則集成到產品的架構和開發中是編寫安全代碼的基本要求。當架構與安全控制直接相關時,確保工程師遵守良好的設計原則是非常重要的。安全控制存在于端到端交付的整個價值流中,從開發階段內置于應用程序中的控制到運行時保存應用程序的控制。這些措施包括保護源代碼或者保護應用程序運行時,還擴展到客戶與應用程序的交互,如身份驗證和授權過程。
在安全架構設計中,可以以安全三元組和安全設計原則為基準。機密性(Confidentiality)、完整性(Integrity)、可用性(Availability),簡稱為CIA三元組,是安全的基本原則。機密性指只有授權用戶可以獲取信息,不可被任何未授權的用戶獲取。完整性指信息在輸入和傳輸的過程中,不被非法授權修改和破壞,保證數據的一致性。可用性指保證合法用戶對信息和資源的使用不會被不正當地拒絕。
業界通用的安全設計原則,主要體現在限制性、簡單性和設計性三個方面:
限制性原則
失敗-默認安全原則(Fail-Safe Defaults),要有當功能失效后的應急安全機制,還有默認的產品配置就應該是安全狀態,不存在安全漏洞。
完全仲裁原則(Complete Mediation),安全檢查要覆蓋任何一個訪問操作。安全機制有能力標識每一個訪問操作請求的所有源頭。
特權分離原則(Separation of Privilege),將特權進行細分,分配給多個主體,避免一個主體擁有的特權非常多。比如設置系統管理員,配置管理員,安全管理員等不同角色,對應不同特權。
最小權限原則(Least Privilege),每個對象只擁有完成工作所需特權的最小集合,限制由意外或錯誤所引起的破壞。
簡單性原則
經濟適用原則(Economy of Mechanism),安全設計盡可能短小精悍,在使用的時候更容易處理。
最少公共機制原則(Least Common Mechanism),公共資源的共享對象應該設置為最少的數量,避免多個對象共享同一個資源的場景。
設計性原則
開放設計原則(Open Design),不要自行設計安全機制,不要自研算法,開發設計更重要。可以通過密鑰、口令等來增強系統的安全性,這樣有利于安全機制接受廣泛的審查。
心理可承受原則(Psychological Acceptability),在心理可承受的前提下,為安全機制設置良好交互性,安全機制可能會為用戶增加額外的負擔,但是這種負擔必須是合理的,用戶可承受的。比如多次登錄失敗后才需要輸入驗證碼。
業界經過多年的發展和總結,又發展引申出其他一些安全原則,例如縱深防御、不要輕信、保護最薄弱環節、提升隱私原則等。
威脅建模
威脅建模是分析應用程序安全性的一種結構化方法,用來識別,量化和解決與應用程序相關的安全風險,通過識別目標和漏洞來優化系統安全,然后定義防范或減輕系統威脅的對策的過程。在設計新產品或者現有產品中功能的時候,工程師需要熟悉攻擊者搜索的安全漏洞類型,以便他們能夠減輕被利用的風險;需要了解設計中固有的風險,以便在交付生命周期的早期消除或者減輕這些風險。綜上所述,威脅建模就是工程師評估產品或功能的設計以識別威脅并確定如何構建針對他們的保護的過程。
威脅建模的過程可以參考微軟提供的方法:預設場景->圖表化場景/過程->識別威脅->提供給每個威脅的環節措施->驗證所有威脅和緩解措施。
一些IT互聯網公司,在大量的實踐經驗基礎上,構建了自己的安全威脅庫和安全需求庫,實現了輕量級威脅建模過程,通過安全評估調查問卷,從系統結構和使用場景去識別將要構建的應用類型,然后匹配對應的威脅庫和需求庫,確定安全需求基線,最終得出安全設計方案。
業界有許多的威脅建模的方法已經開發出來,如微軟的STRIDE、攻擊模擬和威脅分析流程PASTA、LINDDUN、通用漏洞評分系統CVSS、攻擊樹、Persona non Grata、安全卡、VAST建模等方法,可以將它們組合起來以創建更強大、更全面的潛在威脅視圖。并不是所有的方法都是全面的,有些是抽象的,有些以人為中心,還有些方法是專門針對風險或者隱私問題,組織應該根據項目的特定需求選擇哪種方法。
安全隱私和數據保護
安全隱私需求分析與設計是服務應用研發運營整個生命周期的源頭,在設計階段應仔細考慮安全和隱私問題,在項目初期確定好安全需求,盡可能避免安全引起的需求變更。
DevSecOps研發運營安全解決方案關注痛點安全問題,如安全要求、合規要求以及目前熱點的個人數據和隱私保護等問題,使用安全解決方案可以更好的避免此類安全問題的發生,提升軟件應用服務的安全性。
安全隱私需求主要來自于客戶安全需求,業界最佳實踐如OWASP TOP10、OWASP ASVS,公司安全策略《xxx信息技術管理規范》《xxx數據管理規范》,行業監管要求,以及法律法規《網絡安全法》、《個人信息保護規范》、《數據安全法》等。建立明確的安全需求管理流程,能夠對安全需求的分析、評審、決策等環節進行有效管理,讓需求分解分配可追溯。
華為云安全設計實踐
華為有20年研發安全積累,華為的研發安全能力是伴隨業務中不斷出現的問題逐步形成的。華為將已經開放的運維安全能力,和即將開放的研發安全能力與華為云DevCloud深度融合,為企業帶來DevSecOps平臺,讓企業便捷的落地DevSecOps理念,在軟件開發過程中就內置了安全保護,讓軟件“天生安全,健康成長”,成為企業的競爭力。
安全架構設計
華為在安全設計原則方面,基于業界的規范,構建了自己的基礎安全技術與工程能力,形成了安全標準與規范,其中包括安全/隱私需求基線,基礎安全設計規范落地,安全編碼規范,采購安全要求,開源及第三方軟件安全管理策略。
華為云在參考信息技術安全評價通用專責CC的安全功能項、NIST控制集,總結成產品安全架構設計8維度24子項。8維度安全架構設計包括以下幾個方面:
以此指導架構設計人員系統、全面地進行安全架構設計,避免架構級安全設計遺漏。
威脅建模
華為有自己的威脅建模工具 SecDesign,在產品設計期就進行威脅建模,識別并消減風險
從痛點問題入手去思考:在系統需求分析和設計階段,怎樣才能使產品更安全?在什么樣的子系統、模塊、數據流之間考慮安全風險?識別了風險后,怎么消減幾個方面進行思考?華為云開放的安全設計域,對STRIDE方法論進行升級,用于系統威脅分析,提供分析維度、參考案例,輔助進行安全設計;根據識別到的安全風險,智能推薦消減措施及測試用例,輸出分析報告;長期積累的安全風險識別方案、消減方案、設計方案、測試用例、場景樣例與知識,為安全設計提供豐富的華為與業界經驗,極大降低企業安全設計門檻。
安全隱私和數據保護
華為云構建了全生命周期的數據安全和隱私保護設計,實現數據隔離、數據加密和數據冗余。
? 數據隔離:隔離機制可避免客戶間有意或無意的非授權訪問、篡改等行為,降低數據泄露風險。華為云的云硬盤EVS、對象存儲服務OBS、彈性文件服務SFS等服務均將客戶數據隔離作為重要特性。用戶在設計云上業務架構時可利用這些云服務實現數據安全隔離的目標。
? 數據加密:加密可保護靜態和傳輸中的數據。華為云的云硬盤EVS等多個服務均支持與數據加密服務DEW集成,實現密鑰管理和數據加密。華為云還采用加密傳輸通道,保障數據在傳輸過程的機密性和完整性。用戶在設計數據加密功能時,可以充分借鑒華為云已有的實踐和能力。
? 數據冗余:冗余設計可以有效防止數據丟失。華為云采用多副本備份和糾刪碼設計,通過冗余和校驗機制來判斷數據的損壞并快速進行修復,以確保服務的可靠性。用戶在設計云上業務時,可充分利用華為云服務提供的可靠性服務。
? 隱私保護設計:在產品設計過程中考慮隱私,可大幅提高產品的隱私保護能力。華為云在構建云服務時,將隱私保護作為需求落入產品開發設計流程。華為云在個人數據全生命周期貫徹PbD(Privacy by design)的理念,構建具備隱私保護特性的安全云服務。華為云基于PbD原則在設計中考慮隱私,即通過設計來保護個人數據和隱私,將保護個人數據和隱私的理念以技術手段運用到產品和服務的各個環節中。華為云貫徹和落實的七條隱私保護基本原則是合法、正當、透明,目的限制,數據最小化,準確性,存儲期限最小化,完整性與保密性,可歸責。華為云解讀GDPR等法律法規,幫助企業滿足合規要求。華為云開放的隱私合規域,根據對GDPR等的解讀與業務分析,提供工具,生成隱私合規報告、隱私聲明,幫助企業合規設計;根據隱私合規設計方案,自動生成和執行測試用例,最后給出隱私合規驗證報告。
后記
DevOps 的基本訴求之一是要“快”,而安全保障卻具有“快不起來”的特點。因為安全本身需要更為專業的知識背景,分析更復雜的攻擊方式和潛在安全問題。并且,即使使用工具,其技術棧也深于普通的檢查工具,這意味著耗時更長。比如,對源代碼的靜態檢查,如果只是檢查代碼風格,他們可以做到快速掃描;如果需要進行安全編碼的自動化檢查,那么就需要進行流分析,甚至需要一個專門的編譯過程來收集必要信息。未來的路任重道遠,實現DevSecOps還有很長的路要走。
參考附錄
1.《DevSecOps領導者指南》格倫·威爾遜(GLENN WILSON)翻譯:莊飛
2.《研發運營安全白皮書》. 云計算開源產業聯盟.
3.《華為云安全白皮書》.華為技術有限公司
4.《安全內建-通過設計保證安全》DevSecOps敏捷安全大會2021.華泰證券.莊飛
5. “安全需要每個工程師的參與”-DevSecOps理念及思考
6. 小米集團的DevSecOps實踐_安全_
7. 安全開發流程(SDL)
8. 安全設計原則
9. 安全機制設計原則
10. 產品安全設計十大原則
11. 威脅建模基礎
12. 華為可信專業級之—— 可信設計
13. 每天掃描超300億行代碼,DevSecOps在華為的落地與實踐_DevOps
本文由DevSecOps專家服務團隊出品,了解更多專家服務請戳?https://devcloud.huaweicloud.com/expert?utm_source=blog
云測 CloudTest 代碼檢查 CodeCheck 漏洞掃描服務 上云必讀 DevOps
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。