操作系統/虛擬化安全知識域:操作系統 、 虛擬機管理程序
?操作系統 、 虛擬機管理程序
我們在操作系統和虛擬機管理程序級別遇到的問題在其他系統領域重新出現,解決方案有時是相似的。在本節中,我們將簡要討論數據庫,作為操作系統安全原則,問題和解決方案如何應用于其他領域的一個例子[77]。數據庫系統的安全性遵循與操作系統中類似的原則,主要關注的是身份驗證、特權、訪問控制等。訪問控制也是如此,其中許多數據庫默認提供自由訪問控制,以及基于角色的強制訪問控制,以便對更敏感的數據進行更嚴格的控制。
將每個用戶表示為一個安全域,我們需要 回答的問題涉及,例如,用戶的權限、應記錄以進行審核的操作以及磁盤配額、CPU 等資源限制處理時間等用戶的權限包括連接到數據庫、創建表、在表中插入行或從其他用戶的表中檢索信息的權限,等等。請注意,有時,除非通過特定的SQL查詢,否則無法訪問數據庫的用戶可能會在所謂的SQL注入攻擊中制作惡意輸入以提升其權限。
雖然數據庫級 訪問控制限制誰可以訪問數據庫的哪些元素,但它不會阻止在操作系統級別訪問磁盤上的數據。因此,許多數據庫支持對磁盤上的敏感表列進行透明數據加密,通常將加密密鑰存儲在數據庫外部的模塊中。在極端情況下,數據庫中的數據可能會被加密,而只有客戶端持有密鑰。
查詢此類加密數據并非易事。雖然存在復雜的加密解決方案(例如同態加密),但它們非常昂貴且通常使用更簡單的解決方案。例如,有時存儲信用卡號 的哈希值而不是實際號碼就足夠了,然后在數據庫中查詢哈希值。當然, 在這種情況下,只能進行完全匹配 — 因為我們無法查詢數據庫中的值是否大于、小于或類似于其他值(平均值或總和等聚合值也是如此)。可能)。查詢加密數據庫 的問題是一個活躍的研究領域,超出了本知識領域的范圍。
雖然 常規數據庫中的安全性和訪問控制已經不平凡,但在外包數據庫(ODB)的情況下,事情變得更加復雜,組織將其數據外包對外部服務提供商的管理。具體而言,數據 所有者在外部數據庫提供程序創建和更新數據,然后處理客戶端的查詢。除了我們之前對機密性和加密的擔憂之外,出現的問題還涉及對提供商的信任程度。數據所有者或查詢客戶端是否可以信任提供程序向查詢提供由原始數據所有者創建的數據(真實性)、未修改(完整性)和新結果?
從概念上講,可以通過簽名來保證完整性和真實性。例如,數據所有者可以對整個表、表中的行/記錄甚至行中的單個屬性進行簽名,具體取決于 所需的粒度和開銷。通常還提倡基于經過身份驗證的數據結構的更高級解決方案,例如Merkle哈希樹。在最初用于分發經過身份驗證的公鑰的 Merkle 哈希樹中,樹中的葉節點包含其數據值的哈希(數據庫記錄),每個非葉節點包含 其子節點的哈希,以及根節點的哈希已簽名并發布。驗證葉節點 中的值是否確實是原始簽名哈希樹的一部分所需要的只是中間哈希節點, 客戶端可以使用 與樹大小的對數成比例的哈希數快速驗證。當然,范圍查詢和聚合涉及更多,研究人員提出了比默克爾哈希樹更復雜的方案,但這些都超出了此知識領域的范圍。要傳達的信息是,通過一些努力,我們可以保證真實性、完整性和新鮮度,即使在 ODB 中也是如此。