資安的重要性,這道課相信大家心裡都知道很重要,可是我們常常會貪圖方便,或是操作上嫌麻煩而做出一些潛在問題行為。有時可以看到工程師監守自盜,在正式環境做非法行為賺取利益。或是機密外洩是因為在轉換升級或是移轉機器時,人員的操作不當造成公司的利益受損。
以工程師常見的大概就是在程式碼管理平台,不能對 master 分支進行操作,只能用提交異動審核的方式進行。避免工程師操作不當,或是不小心做異動造成不可挽回的局面。開發角度相信工程師們都不陌生,那在 CI/CD 機制來說,在 Jenkins 做舉例,若每個人都設置成最大權限,每個人可以做異動跟刪除,哪一天若遇到忿忿不平的工程師想要讓團隊運作暫停就可以隨時進去後台操作了。除了程式碼管理設置權限,自動化工具也是需要。權限的條件可以依工作角色、職物還有觸發條件去做切割,讓每個人可以掌握的事情有限卻也不會影響到既有工作。
而在 Android 專案上檔案,也可以考慮是不是要跟著專案打包進去。像是包版使用的金鑰、針對第三方服務所使用的設定檔,或是有些在建置中或可不缺,但是在卻又不想要讓開發者有權力去做異動等等。每一個專案需要的面向都不同,檔案的配置都不盡相同。但包版使用的金鑰即使 Google Play 官方已經提供方式,若遺失金鑰還有補救的措施。雖有補救措施,但盡可能還避免不要發生。通常這種機密性的資料,不放在專案當中,那要放在哪裡?大概就是分兩種:放在本地端靠手動處理,或是另開一個 repository 去存放這些機密資料。
不管選擇哪一種,都是在做風險分散,以及權限控管,伴隨著就是使用的易用性會降低。希望大家在建置機制的同時,也思考如何在易用性跟資訊安全上達成平衡。