1. 程式人生 > >老焦專欄 | 如何做一個有說服力的方案?

老焦專欄 | 如何做一個有說服力的方案?


轉載本文需註明出處:微信公眾號EAWorld,違者必究。

經常有技術人員收到這樣的反饋:技術精通,但做方案的能力不強。其中一個原因就是:我們的方案通常只是論述瞭如何做,沒有證明做法是正確的。例如,需要應用安全的方案,我們的方案是做安全掃描,而安全掃描只是保證安全的一個做法,並沒有證明為什麼有了安全掃描就安全了(實際上僅僅做了安全掃描,也不意味著應用安全);再如,需要高可用的方案,我們的方案是做雙機熱備,並沒有證明為什麼雙機熱備就可以實現高可用了。沒有自證的方案,不是一個好的方案,這裡我通過應用安全的例子,講一講在方案中如何證明自己。

首先說一個下圖的示例,一個工資管理系統,如何設計這個系統的安全性:

 


安全的設計要從分解系統、進行威脅建模開始:



由於安全的內容比較多,分級威脅和緩和方案我就不具體介紹了,緩和方案就是具體的做法,這個相信大家都能做出一些,這裡主要講推導過程,即如何論證上圖的緩和方案是正確的。

首先是分解系統(應用程式):



下面是上圖的圖例,主要有互動者(外部實體)、資料流、程序、資料儲存、邊界這幾個部分。



分析了系統,下面分析威脅的各個種類,一般來說,系統的威脅分為六個方面,簡稱 STRIDE(假冒、篡改、否認、資訊洩露、拒絕服務、提升授權):



根據系統的分解,系統的每個部分都有可能發生威脅,系統的各個部分包括外部實體、程序、資料儲存、資料流,但不是每個方面都有上述六方面,見下表:



針對威脅,就可以設計解決方案了,例如每個程序都可能因為 SQL 注入漏洞,存在篡改(T)和資訊洩露(I)的威脅,利用安全掃描的方式可以消除因為SQL注入產生的篡改和資訊洩露威脅。再如:



我們可以用下述方法,解決各種威脅:



用了這種幾步分解、系統性描述的論證方式,囊括了系統分解、威脅建模、威脅評估和緩和方案,我認為,就是一個說服力的方案,也就是能夠自我證明的解決方案。


關於作者:焦烈焱,普元資訊CTO,致力於技術創新和金融創新解決方案研究。專注於企業技術架構領域,對分散式環境的企業計算、 企業資訊架構的規劃與實踐有著豐厚經驗,帶領普元技術團隊相繼在雲端計算、大資料及移動開發領域取得多項突破,並主持中國工商銀行、中國建設銀行等多家大型企業技術平臺的規劃與研發。


關於EAWorld:微服務,DevOps,資料治理,移動架構原創技術分享。長