iT邦幫忙

2019 iT 邦幫忙鐵人賽

0
Security

資安動手做系列 第 31

軟體開發安全

本人不是專職開發,有錯誤還麻煩告知....(怕錯很大

軟體開發

這幾年講到軟體開發首先會想到DevOps、Scrum敏捷式開發

DevOps

DevOps是一種重視「軟體開發人員」和「IT運維技術人員」之間溝通合作的文化、運動或慣例。透過自動化「軟體交付」和「架構變更」的流程,來使得構建、測試、發布軟體能夠更加地快捷、頻繁和可靠。

什麼是 DevOps ?
https://ithelp.ithome.com.tw/articles/10184557

情境
R&D開發完後把檔案放到版本控制(SVN),使用自動佈署(Jenkins),在測試環境發佈,QA(Selenium)和資安(OWASP zap)測試完後等離峰時間發佈到正式環境,先至將第一台設備從服務負載(F5)下線,上版時一併加上log監控(ELK)、效能監控(Zabbix)、防火牆規則,R&D、QA、IT各自檢查功能、效能。整個流程彼此緊密相互合作,因此會搭配敏捷式開發,時刻追蹤進度

敏捷軟體開發

更強調程式設計師團隊與業務專家之間的緊密共同作業、面對面的溝通、頻繁交付新的軟體版本、緊湊而自我組織型的團隊

DB安全

  1. DB帳號驗證及稽核 (只允許用某台做側錄操作的機器當跳板連線,管控該跳板機帳號、允許登入時間、登入IP)
  2. TLS加密傳輸
  3. DB內容加密 (雲端一定要做)
    可以參考安總裁的軟體開發安全 (Database Security Technique)
    https://ithelp.ithome.com.tw/articles/10196976

網頁伺服器安全

網頁簡易的方式就是避免OWASP,但還是會遇到不能改程式的情況,這時候只能乖乖用WAF,Apache + mod_security,nginx-waf

版本控制系統(CM)

軟體開發的過程中,確保由不同人所編輯的同一程式檔案都得到同步。SVN,github,gitlab...
很容易出包的一塊,QA測試過A版本,結果CM沒同步好上版時弄成B版本,因此隨時同步資訊是很重要的 (像是在Jira上標註更改了什麼,目前與那些功能介接測試正常...

相依元件

像java、dotnet、lib函式庫、python套件...,缺少了程式就無法運行,常遇到就是R&D加了一個新的py檔,執行就醫直出現缺少相依套件,然後防火牆又鎖住不能更新,就準備退版了。
因為這些問題非常多(有時安全性更新也會影響,所以很多廠商打死不升級...怕停擺),所以 Docker開始熱門,把相依環境跟程式包再一起發布,檔案小啟動速度快,沒有VM肥大的問題,也一併處理耦合性問題。

耦合性

跟相依元件一樣原理,不想要一個程式通通包再一起,開發困難(大家一起修改同一份文件,綁手綁腳),維護困難(幾萬行在一個文件,交接的人要找問題要花很長的時間看)。

解耦後就變成A造輪子,B造引擎,C造方向盤,大家都用API互相串接,方便開發及找問題,這架構會比較浪費資源,用docker可以減輕副作用,產生了微服務的概念。

圖片取至https://www.hexiao-o.com/2017/01/11/%E5%89%8D%E7%AB%AF%E5%BC%80%E5%8F%91%E6%B5%81%E7%A8%8B/
https://ithelp.ithome.com.tw/upload/images/20181106/20077752qRd7mQpZPv.png
可以參考今年邦友寫的.Net微服務輕旅行
https://ithelp.ithome.com.tw/articles/10193884


上一篇
滲透測試4
下一篇
Security Onion -Alienvault
系列文
資安動手做34

尚未有邦友留言

立即登入留言