iT邦幫忙

2022 iThome 鐵人賽

DAY 4
0
Security

建構安全軟體開發系列 第 4

建構安全軟體開發 EP 04

  • 分享至 

  • xImage
  •  

Hello, 各位 iT 邦幫忙 的粉絲們大家好~~~

本篇是 建構安全軟體開發 系列文的 EP04。

先繼續延續前一篇的 EP03 從大眾比較熟知的 macOS 或是 Windows 的作業系統來舉例討論。

聊聊其三: 系統日誌紀錄

在 macOS 就有系統內建的 "系統監視程式"; Windows 就有系統內建的 "事件紀錄器" 的日誌功能。

macOS-系統監視程式

Windows-事件紀錄器 1

當在遇到一般使用者操作電腦遇到問題的時候,可能常常描述的很模糊或者是說不上來。但由於有這個作業系統的 日誌紀錄 ,雖然對一般使用者來說多數是不會看也看不懂的,卻可以透過此系統日誌紀錄的查詢來協助,再根據遇到問題的使用者描述情況,大致上找到問題的癥結點,進而協助解決所遭遇的問題。

例如自己的親友所用的這台 Windows 電腦,常常發現使用一陣子後會檔案讀寫的 I/O 整個卡住不動,Windows 的檔案總管也常常發生無回應現象,然後就 Windows 當機了。

問了半天就只會說電腦會常常突然當機,但實際幫忙測試時都沒操作上的問題,最後透過檢視此台電腦的 Windows 事件紀錄器,發現有常常記錄到磁碟控制器的錯誤。
Windows-事件紀錄器 磁碟錯誤

詢問狀況後,推論問題應是出在外接硬碟的外接盒上,因為此硬碟的外接盒至少用了 4 年以上但硬碟才換新的沒多久。猜測應是外接盒的控制器老化耗損,進而造成硬碟常常讀取/寫入失敗,果然換了一個新的硬碟外接盒之後就不常發生此現象了。

過一陣子再查看,相關的 disk 錯誤都在 7 天之前了:
Windows-事件紀錄器 2

那說到這邊,各位是否能想想看,作業系統就內建的這日誌紀錄的功能,當中有達成 "C.I.A Triad" 或 "3A. 原則" 當中的那些概念?


資訊/開發人員

先以近年來資訊/開發人員比較熟知的 Git 技術來舉例好了。

聊聊 Git 版控 / 共同協作

Git 版控

近年來最受資訊/開發人員主流使用的版控技術應該非 git 莫屬了吧?

甚至網路上都出現了 git 的迷因梗圖:
火災發生時開發人員應該做的事

如果發生緊急災害(迷因梗圖是火災)的時候,趕緊把目前開發的程式碼專案 commit 到 branch 當中,並且 push 到遠端的 repository 當中存放,然後再離開公司所在的大樓去避難。

所以,只要是資訊/開發人員看到這個迷因梗,鐵定都會心一笑...???

而由於可使用 git 進行版控存放的公有雲託管服務太多了,隨便舉就有 GitHubGitLabBitbucketAzure ReposCoding...等,更別說公司自己內部就有建置 git server 來作為程式碼存放的。

使用 Git 版控對現在的資訊/開發人員來說,已經是技能樹 (skilltree) 當中必點之一的技能了。

"甚至是各位正在觀看的這系列文,在撰寫時也都直接用 git 進行版控,並且上到 Github 進行存放。"
(雖然這麼做不一定有其必要性?)

Git 共同協作

由於 git 從被設計出來至今為止,都一直保有著以下幾點優秀的特性(此 git 官網文件說明所列):

  • 快速
  • 簡潔的設計
  • 統合非線性開發的支援(可同時進行上千個分支)
  • 完整的分散式系統
  • 能夠有效地(速度及資料大小)處理巨大規模(Linux 核心程式碼級別)的開發專案

所以,一個程式開發專案無論是由一個開發人員進行開發,或是由成千上百個開發人員同時進行開發,當使用了git 來進行版控與分支處理後,要將這些開發者當中的任何人,其所增改的程式碼進行整合(或稱分支的合併),來產出專案程式的應用交付,不再是難事。

使用 Git 的分支與合併基本用法之圖表 25
取自 使用 Git 的分支與合併基本用法 之圖表 25

而整個開發團隊,有去做好適當的規劃,來進行 git 分支的程式碼管控時,就能對所產出交付的程式碼專案,達到有效率的進程掌控。

使用 Git 的分支進行工作流程之圖表 27
取自 使用 Git 的分支進行工作流程 之圖表 27

說到這邊,各位是否能想想看,當使用 Git 對開發專案程式碼進行版控與共同協作時,當中有達成前述所提到的 "C.I.A Triad" 或 "3A. 原則" 當中的那些概念?

Git 學習資源

Pro Git eBook (Git 官方教學文件):
https://git-scm.com/book/zh-tw/v2

透過 Git 指令撰寫,直接產生圖像化的分支與狀態:
https://learngitbranching.js.org/?locale=zh_TW



上一篇
建構安全軟體開發 EP 03
下一篇
建構安全軟體開發 EP 05
系列文
建構安全軟體開發30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言