簡體   English   中英

用於安全性的 Oracle 增量校驗和加密

[英]Oracle Incremental Checksum Crypto for Security

我有一個獨特的問題要解決。 我有一個連接到 Oracle RDBMS 的舊 Java 應用程序。 應用程序中散布着各種查詢和 DML - 插入、更新、刪除,當然還有選擇。 它使用 JBC( Preparedstatement ),盡管最近添加的一個 lodule 使用 JPA。

我需要向應用程序/數據庫添加保護層/邏輯,如果任何用戶(甚至可能是 DBA 或操作系統 root 用戶)試圖繞過應用程序修改數據(更新、插入或刪除),我們能夠將操作識別為審計的一部分。

審計跟蹤似乎是這里要做的事情,除了我們甚至不能信任操作系統 root 用戶,因此擁有 DBA 和 root 訪問權限的人可以輕松修改數據並刪除審計跟蹤中的數據。

我正在考慮在敏感表上實現一種循環加密算法,以便在應用程序執行的每個 DML 上,引入加密/散列並且它是增量的,以便通過使用應用程序進行審計可以輕松捕獲任何更改。

從理論上講,這似乎是可行的,只是它可能會變得棘手,因為在每個 DML 之后,我們可能需要重新計算許多后續記錄的哈希/校驗和,這可能會使應用程序/數據庫負擔過重。

這是一個可行的解決方案嗎?

你是對的,計算每個更新的數據行的哈希值會給系統帶來負擔。 您是否還要在將更改提交到數據庫之前驗證該哈希值,以確保應用程序之外沒有任何更改? 這甚至是更多的開銷,並且為您的應用程序提供了更多的自定義代碼。 它也無法幫助您確定誰修改了數據,或者何時修改了數據,只能確定它是在應用程序之外更新的。 使用數據庫觸發器是行不通的,因為它們很容易被禁用,並且無法修改調用它們的同一個表(您需要一個單獨的哈希表,其中每個表中的每一行數據都有一個條目)監視器)。 審計仍然是您最好的方式,因為它不需要對您的應用程序或數據架構進行任何修改。

您有幾個關於審計的選項,具體取決於您使用的 Oracle 版本。 如果您使用的是 12c 或更高版本,您可以使用統一審計,它有自己的一組權限和角色來允許職責分離(即普通 DBA 與安全管理員)。 即使在舊版本中,您也可以對實際的審計跟蹤表進行更新/刪除審計,這樣任何修改數據的嘗試都會留下指紋。

最后,您可以使用 Splunk、Elastic Search、syslog 或 Oracle 的 Database Audit Vault 或其他一些文件監控解決方案等工具將您的審計記錄集中到另一個系統,因為它們是由數據庫創建的 - 使 DBA 或本地無法訪問它們系統管理員。 這首先需要您的 DBA 和/或系統管理員進行一些配置工作,但對保護您的審計數據大有幫助。

說了這么多,遲早你將不得不信任兩個人:在系統管理員和DBA。 如果你不能信任他們,那么你就陷入了深深的麻煩之中。

Oracle 20c 有區塊鏈表 版本 20c 目前僅在 Oracle 的雲中可用,但它可能會在幾個月內在本地可用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM