圖片來源: 

iThome

近年來應用系統開發的流程,可說是大幅變化,訴求整併開發與維運的DevOps,已經是大勢所趨,但在此同時,企業也面臨嚴峻的資安環境,因此,將資訊安全納入這樣的開發流程,相形變得更加重要。

如今,企業不光只是保護系統免於資安威脅,而是要將資安擴及DevOps的所有環節,從底層開始做起。在2019臺灣資安大會上,中國文化大學推廣教育部資訊長陳仁偉認為,企業在落實DevOps的過程中,資訊安全不只是要從系統層避免出錯(DevOpsSec),還要進一步透過程式碼編寫的過程就做好防範(DevSecOps),甚至更終極的目標,則是要由架構層面進行防呆(SecDevOps),讓資安深入到研發環境的底層。

因此,他表示,DevOps的資訊安全總共有3種層面,首先是強調要落實管理,其次則是近期廣泛受到討論的程式碼安全;而如今,更進一步強調,資安要貫徹整體開發的策略。乍看之下,兼顧資安考量的DevOps通盤開發流程,企業不只要將系統開發與維運部門統整,建立團隊合作的文化,還要做到各式的資安檢測,並且培養所有相關人員的資安意識,使得工作量大幅增加,但隨著將資安提升到開發策略的層級,陳仁偉說,企業從政策層面著手後,能使得前述管理和程式碼安全檢測的工作量,大幅減少,使得企業DevOps資安越做越輕鬆。因此,整體而言,要達到這樣的目標,其實是「知難行易」。

隨著Sec與DevOps排列的不同,代表資安層面上的差異。在DevOps之後直接加上Sec,意指系統安全驗證,若Sec介於Dev和Ops之間,為程式碼安全,至於將Sec放在DevOps之前,則是代表架構層級的資訊安全。

過往看待DevOps的角度上,企業大都是著眼於管理上的難題,也就是要求開發部門與維運部門合作,在兼顧產出的軟體品質的前題下,改善應用程式的開發流程,使得企業可能會認為「知易行難」,光是兩個部門之間如何併肩作戰,就傷透了腦筋,更不要說還要納入資安工作。導入DevOps確實存在相當程度的門檻,然而如今企業應用系統的開發,已經面臨許多挑戰,陳仁偉認為,透過DevOps改善現況有其必要性。

尋求外部單位監督,是落實開發安全的積極作為

對於如何落實應用程式的資安防護,陳仁偉舉出自身曾經擔任過大學入學考試中心處長的經驗為例說明,重點在於監管機制。他說,承辦考試的業務與確保資安有許多的共通之處,包含了涉及利害關係人眾多,且面臨各界近乎苛刻要求,主事者必須推動一套可行的作業程序,達到零缺失。因此,想要達成上述的目標,陳仁偉甚至認為,最好應該像國家安全會議諮詢委員李德財所提倡的方式,由獨立外部單位執行監管和驗證(Independent Verification and Validation,IV&V)。

在DevOps納入資訊安全後,合作模式便有所變化,在既有的開發、維運,以及品保(QA與QC)之外,也要將外部單位監管及驗證(Independent Verification and Validation,IV&V),納入其中。

在所有DevOps資安做法的規畫上,陳仁偉總共拆解成下列3種要素,分別是:規定、做法,以及監管。

首先,制定明文規範,遵循相關法令,這是基本要求的底限,也是較為偏向消極作為的層次;再者,則是具體的運作機制;至於想要做到前述的零缺失,就要從監管著手,這是在管理層面上,較為積極的態度。

陳仁偉也將這樣的概念,放到DevOps資安管理。在基本層面的部分,他認為,原則上依據ISO 27001等標準,而在運作機制的規畫上,則是提出具體管理作為;至於積極面部分,就是由品質保證部門(QA)進一步落實監督。

落實管理是DevOps資安的基礎環節

想要做好DevOps的資訊安全,陳仁偉說,企業要先從系統安全不出錯開始做起,也就是DevOpsSec的部分。針對系統安全運作的管理,他認為,需做好下列工作,例如開發環境的組態管理、程式碼簽章憑證、程式碼的版本控管、人員的職責要確實畫分、事件管理、使用者測試、弱點掃描、應用程式配置管理,以及行動版應用程式的安全管理等。

其中,人員的職責區分,是陳仁偉特強調的部分,舉例來說,系統設計師(SD)要依照操作人員(OP)提出的需求,開發出相關程式,且在獨立測試區通過測試後,由專人上線,操作人員再依照工單執行程式。而且,無論是系統設計師還是操作人員,都不應該直接接觸到公司的機敏資料。

DevOpsSec的另一個重點是事件的管理,陳仁偉提出的例子,是他曾在大考中心建置的iSEC系統(IT Service and Security Enabling Capacity),裡面整合IT服務管理、資訊安全,以及個資保護管理等業務流程,並能追蹤進度和權責分派。

資安事件處理流程也採用IT維修中,常見的事件通報和指派機制,陳仁偉建置的iSEC系統(IT Service and Security Enabling Capacity)裡,就是以這樣的方式列管資安事件,以圖中的個資外洩事件為例,過程之間便有專責人員負責釐清、調查,再交由相關部門後續處置。

最後要注意的是行動版應用程式,也是陳仁偉認為特別需要防範的部分,尤其管理又比PC軟體困難,因此在實務上,他的單位會限制員工只能在內部環境的特定網段使用行動App,或者是透過VPN連線存取,進而掌握員工的使用者流量。

而如何考核上述各種管理工作的成效?監管的部分同樣不可或缺,陳仁偉表示,須定期由外部單位執行使用者測試、弱點掃描,以及滲透測試等。

從程式碼檢核著手強化安全

在做好DevOps管理的環節之後,陳仁偉認為,企業應該邁入DevSecOps的階段,針對程式碼安全進行改良。管理的方向包含了開發環境的管制、程式碼的單元與整合測試,以及上線管理等。而在品保的層面,則是要針對程式碼與有關的元件,進行審核。

首先是開發環境的管理。雖然可區分成連線與離線環境等兩種型態,但管理上的共同點,都是須使用研發部門專屬的AD網域、程式碼的版本管理系統(如GitHub和Git),而且,工作用和開發用的電腦必須有所區隔等。

在程式碼審核流程的部分,陳仁偉引用了《Hands-On Security in DevOps》一書中,所列的各種措施,包含要審查整合式開發環境(IDE)附加元件的程式碼,還有針對系統設計師產出的程式碼,執行靜態審核與最終的目標程式碼審核等。

其中的靜態審核,可區分成4種:靜態應用系統安全測試(SAST)、動態應用系統安全測試(DAST)、互動式應用系統安全測試(IAST),以及執行期間應用系統自我防護(RASP)等。

不只做好還要防呆,從架構層級預防潛在的資安風險

有了程式碼檢測與審核機制之後,陳仁偉認為,接下來,企業就該從架構層面著手,採取保守主義,做到SecDevOps。具體來說,像是程式開發過程中,只採用經過資安驗證的函式庫(Library)和開發模式(Pattern),若是有新的函式庫與開發模式,則要通過雛型(Prototyping)資安驗證,才能納為可使用的模組。再者,則是對於開發人員採用的函式庫及指令樣式庫,也透過監管系統,定期稽核。

陳仁偉強調,SecDevOps如果能夠落實,前述DevSecOps檢核流程裡,程式碼存在的弱點數量也會大幅降低,大部分只會剩下與組合、規則邏輯,以及流程有關的資安問題。

除此之外,安全架構還包含了使用者端的軟硬體規畫,以及應用系統的軟體設計安全檢核,並且進一步納入主動偵防機制等。

例如,在架設電商平臺時,許多網頁開發者偏好採用動態網頁,導致網頁很容易成為駭客攻擊的目標,而為了減少企業資料對外曝露,陳仁偉採用了兩種作法,一是在建置產品清單的網頁時,採取靜態網頁,而網頁的內容則是每天半夜批次更新,雖然靜態網頁的內容容易遭到複製,卻比較不會成為攻擊目標;另一種確保網頁安全的作法,則是在客戶下單之後,針對電商網站交易網頁的部分,僅回傳顧客的ID與產品ID,有心人士較難從中得知交易的明細。而這些都是落實前述的保守策略後,所帶來由減少攻擊面的規畫,形成架構上防禦的優點。

時下許多網頁設計師偏好採用的動態網頁,雖然使得開發更便利,但陳仁偉認為,這種做法在電商網站中,很容易成為駭客下手的目標,而且也會因為在使用者存取產品清單網頁時,即時透過網站伺服器向資料庫查詢,導致執行效率大幅降低。

因此,在DevOps的資安防護上,陳仁偉認為,SecDevOps、DevSecOps,以及DevOpsSec三種防護策略,其實是相輔相成,陳仁偉也指出,為了避免相同的錯誤反覆出現,企業應該針對DevSecOps與DevOpsSec的部分,建立標準作業程序,同時也要納入稽核管理的範圍。

舉例來說,面對經滲透測試後已修改上線的新版應用系統,若是因為沒有標準作業程序可遵循,遭到其他網管人員操作錯誤,以舊版本覆蓋,那麼,這套系統實際上形同沒有修補相關的弱點,因此,從標準作業程序著手,才能防範這種可能會出現的情況。

維護DevOps資安的實用軟體

針對DevOps的資訊安全,陳仁偉提出了11款軟體,其中2款是提供應用系統的組態程式化管理,其餘大部分則是對應程式碼的審查,涵蓋4種檢核方式(SAST、DAST、IAST、RASP)。

應用系統組態程式化管理

01.Puppet
https://puppet.com/

02.Chef
https://www.chef.io/

靜態程式碼檢測(SAST)

03.Find Security Bugs
https://find-sec-bugs.github.io/

04.Fortify Static Code Analyzer
https://www.microfocus.com/products/static-code-analysis-sast/

05.Converity Scan
https://scan.coverity.com

06.Klocwork
https://www.roguewave.com/products-services/klocwork

動態程式碼檢測(DAST)

07.OWASP Zed Attack Proxy(ZAP)
https://www.owasp.org/index.php/OWASP_Zed_Attack_Proxy_Project

08.Burp
https://portswigger.net/burp

互動式程式碼檢測(IAST)

09.Checkmarx
https://www.checkmarx.com/

10.Veracode
https://www.veracode.com/

執行期間自我防護(RASP)

11.Open­source Run­time Ap­pli­ca­tion Self-Pro­tec­tion(OpenRASP)
https://rasp.baidu.com/


Advertisement

更多 iThome相關內容