從系統調用實例看數據安全治理
《中華人民共和國數據安全法》于2021年9月1日正式實施,在國家強化數據安全監管的大形勢下,所有企事業單位將面臨著數據安全如何合規合法這一問題。本文試圖站在操作系統角度初步提出數據安全中基于元數據重構的數據標簽解決途徑。
01.從open函數看文件操作與系統調用的關系
通常我們在系統中對一個文件的使用有打開、讀、寫、執行、鏈接等多種操作,以gnu open函數為例,從user_space看,編碼只要寫到int open(const char * pathname, int flags, mode_t mode)的調用就結束了。如果我們深究一下,這個open函數操作系統又是如何最終執行的呢?下面,以linux kernel4.19.188為基礎,從兩個維度簡要討論一下這個問題:
1、系統調用層面
在io/fcntl.h中有對open函數的定義,它對應的就是在user_space的open函數,即:externint open (__const char *__file, int __oflag, ...) __nonnull ((1)),其宏定義在intl/loadmsgcat.c中,即:# define open(name,flags) open_not_cancel_2 (name, flags)sysdeps/unix/sysv/linux/not-cancel.h #define open_not_cancel_2(name, flags) \ INLINE_SYSCALL(open, 2, (const char *) (name), (flags))
往后繼續跟蹤,會發現內核通過swi軟中斷進行用戶模式切換,對應的解釋程序位于arch/…/kernel/entry.s中,至此從user_space的實現及編譯的過程就將應用層open操作與kernel_space的sys_open聯系上了,其中的調用編號對應于sys_call_table調用參數。
2、數據流轉層面
如前所述,open函數中的const char *pathname對應于具體文件的路徑名稱,通過系統調用,逐步跟蹤,大致流程經過(struct file -struct dentry – struct inode)實現元數據映射,具體可查閱include/linux/fs.h。至此,我們知道,inode定義了各個文件系統對“文件”客體的格式定義與要求,這里面需要注意兩個細節:
不同的文件系統對于內存inode的定義各不相同,例如windows系統常用的fat32/64、ntfs和Linux類系統的ext4對于文件的定義決定了不同類型文件解析的涵蓋度,這也就是往往使用IOS系統拿到的數據在一些windows系統中經常出現數據丟失或被破壞的主要原因。
內存inode和磁盤inode的數據結構是不同的,從數據安全治理角度看,治本還是應考慮如何利用磁盤inode的數據結構重定義來解決,目前大部分的數據安全考慮往往出于兼容性或復雜度的考慮,而更多地利用內存inode數據結構重定義進行實現。

02.數據安全治理實現系統級解決的思考
參照2021年6月10日第十三屆全國人民代表大會常務委員會第二十九次會議通過的《中華人民共和國數據安全法》中對“數據安全治理體系”提出的明確要求,結合業界眾多專家提倡的“本質安全”與“內生安全”的理念,我們認為立足于信息系統安全體系考慮,應考慮如何從數據源頭上解決安全治理問題。從軟件系統平臺來看,操作系統是作用于硬件/固件平臺的第一道軟件層,它是銜接應用與物理硬件的“必經之道”,對于數據的操作最終往往是定位到其inode定義中。因此,要實現系統級解決方案,可以考慮基于內核級元數據重定義來實現訪問控制與數據安全保護機制,我們通過過往工程實踐總結一下這里面需要關注的兩個方面:
1、基于訪問控制等安全手段來解決用戶/進程/服務對數據的操作能力。《GB/T20272-2019 信息安全技術 操作系統安全技術要求》中對不同安全等級操作系統提出了明確的規范要求。從工程實現案例看,其核心的安全模型建模往往就是對現有文件系統進行改造和利用,例如通過VFS(如Ecryptfs)等應用級虛擬文件系統重定義安全標簽(sec_label)來實現訪問控制,尤其是在保障系統兼容性和穩定性的高要求下,可以很好地實現可用與安全的平衡。對于安全強度要求較高的場景,則應考慮直接在磁盤inode結構中加入安全旗標(FLAG),通過定制專用化系統來實現從元數據級進行權限的定義與分配規則。
2、基于數據標簽(data_label)體系來規范約束數據在流動過程中的安全保障,數據流動主要分為在本機流動和網絡流動兩類,正是因為數據的流動才使得數據會產生不同的價值,所以應根據數據的敏感度來確定使用數據安全治理的強度。數據標簽是對數據流動過程中具備唯一性的安全媒介,圍繞數據標簽進行設計可以很好地實現數據治理平臺安全底座。例如,針對特殊應用場景下的專用型數據平臺系統,可以在磁盤inode中加入數據標簽結構,結合數據完整性標簽制定數據安全傳輸策略,在專用業務系統平臺中只有在符合數據安全傳輸策略規則的前提下才允許該數據的傳輸。更進一步,結合整體安全策略模型,用戶和該用戶可操作的數據均帶有唯一性標簽,一方面數據標簽伴隨著該數據的全生命周期,另一方面,通過將數據標簽與用戶進行對應性綁定,可以從根源上實現用戶責任與數據流動的掛鉤,尤其是敏感數據泄露的溯源問題具有不可抵賴性。
結語
2021年1月13日,工業和信息化部印發《開展工業互聯網企業網絡安全分類分級管理試點工作的通知》中對于工業控制信息系統中的數據安全部分提出了要求。同年6月發布的《中華人民共和國數據安全法》中第三章第21條,明確提出“……根據數據在經濟社會發展中的重要程度,以及一旦遭到篡改、破壞、泄露或者非法獲取、非法利用,對國家安全、公共利益或者個人、組織合法權益造成的危害程度,對數據實行分類分級保護”。以此可見,重大行業的數據安全治理工作是刻不容緩的。 從具體工程實踐來看,在建設信息系統整體安全體系中應加強對數據安全的保障,一方面從信息化手段,考慮結合軟硬件一體化的方式(如“可信芯片+安全內核”)來確保安全底座,另一方面也應同步加強安全制度的規范化標準化,例如很多在信息系統安全體系設計中引入的“三權分立”思想在現實中往往歸于同一個具體人員,使得“分立”遇到很大的挑戰。又比如,在很多具體的業務信息系統場景中,無法通過信息安全手段避免值班業務人員手動抄寫敏感文件帶來的數據泄露問題等。