2011-08-23 65 views
3

當我公司以前的開發人員不得不存儲敏感的用戶數據(例如醫療記錄)時,他們做了以下工作。我懷疑它的優點。將數據庫拆分爲合法的安全措施?

  1. 有數據認爲「不敏感」(用戶登錄,個人資料信息)和「敏感」(用戶醫療記錄)。
  2. 有三個數據庫。在A不敏感的數據,在B醫療記錄,並在CAB之間的映射。
  3. 黑客破解,必須全部三個數據庫,以配合用戶(A)病歷(B)。

我們自己的後端代碼調用C扳平AB數據一起顯示給用戶。我認爲這種代碼的無處不在使分割數據庫的好處無效:如果黑客訪問我們的系統,他可以調用我們的邏輯。

我失去了什麼好處上述系統(或者是沒有更好的辦法來保護這些數據)?

+0

只是要注意,雖然我不確定:這可能適合[serverfault.com](http://serverfault.com/)。 –

回答

2

我想說,一旦你的系統已經被破壞,並且攻擊者已經超過了訪問的門檻,那麼數據庫只是一個時間問題。它至少也許會延誤入侵者的意圖 - 但是維護,性能,項目清晰度等方面的成本可能會超過其好處。

我敢肯定會有足夠的信息來確定人的決定,XYZ數據庫鏈接起來 - 除非你模糊處理數據庫名,表名等結構性指標。

理想情況下,您應該期望讓您的系統難以逾越,除此之外的所有其他事情都是緩解措施,忽略問題(您已被利用)的症狀治療,其中必須考慮權衡唯一的情況。

以我的經驗和意見,分裂這樣的數據庫是一個奇怪的做作的安全方法,我覺得是巧妙傻。

2

針對一般的問題「是分裂數據庫合法的安全措施」,隔離的確是實現安全性衆所周知的,有用的工具。它的好處是否超過它的缺點(通常是額外的複雜性)是非常具體的情況,我不知道你係統中的答案。

假設某人想要在數據之上構建分析應用程序。將映射數據完全排除在畫面之外將是非常有用的。如果分析應用程序被違反,映射信息就沒有風險。

應對下面的一些意見,甚至在你的系統中的特定情況下,它不是一個定局「違反制度」達一次違反所有數據庫。假設攻擊者在您的應用程序中利用SQL注入漏洞。如果映射數據是獨立的並且硬化的(對訪問映射的代碼進行額外控制,比方說),那麼隔離可以是暴露未關聯數據和關聯數據之間的區別。

不認爲它是一個適合您系統的優秀設計。只是試圖解釋可以進入這一點的不同種類的基本原理。

我在類似的情況下使用相同的隔離策略。在我的情況下,「數據庫」是配置庫。所有的preprod配置都在一個倉庫中,生產配置在一個單獨的倉庫中。所有開發人員都可以訪問preprod repo,但只有發佈工程師才能訪問prod repo。理由是我希望深入防禦:雖然我可以對單個回購文件夾實施訪問控制,但我寧願讓生產配置對所有未經授權的員工都是網絡無法訪問的。

+0

但是,如果你的系統被破壞,那麼_all_數據庫處於危險之中。由於_app_會(可能)仍然需要與多個數據庫進行協商,因此仍然有機會(如操作系統注意到的),他們不需要中斷服務器,只是利用控制系統的_app_。 –

+0

在分析示例中,我假設分析應用程序是獨特的應用程序。如果違反,只有一個數據庫可能存在風險。映射數據不是,因爲分析應用根本沒有訪問它。跨越所有三個數據庫的應用程序可能會導致系統違規等於一般DB損害。一個控件不必涵蓋每個可能的漏洞(事實上沒有控制)就具有價值。 –

+1

然後,這與OP的情況無關;據說應用程序的代碼將這些數據拉到一起用於顯示目的,這表明所有數據庫都可以通過相同的矢量訪問。在你的情況下,似乎有關係變得更抽象的獨特組件。 –

0

在最嚴重的DBMS系統上,您可以控制表中的訪問(有時甚至是行級別)。

因此,將敏感數據存儲在不同的表中是限制訪問機密數據的有效方法。

雖然沒有什麼能夠保護你免受黑客的侵害(正如其他海報所指出的那樣)。但是這種策略可以保護您免受系統中未經授權的用戶訪問,並延伸到獲得用戶名和密碼的黑客。欺騙低級別員工提供密碼細節仍然是最常見的「攻擊」之一,這非常值得。

大「如果」是你真的可以將用戶分爲「有權限訪問」和「有限訪問權限」組嗎?

2

是的,將數據拆分成獨立的存儲可以幫助安全。正如詹姆斯安德森寫道,大多數數據庫系統允許您在單個表上授予不同的權限。

但是,大多數安全分析都是尋找最薄弱的環節;我懷疑你的最薄弱的環節是否是你的數據庫被拆分出來的方式。所以,除非你已經確定了其他一些東西 - 密碼管理是一個明顯的例子,SQL注入攻擊另一個 - 至多,數據庫設計是毫無意義的;最糟糕的是,這會增加導致錯誤的應用程序的複雜性;大多數安全漏洞都來自錯誤。它也可能導致錯誤的安全感 - 「我們受安全保護,我們分割我們的數據庫」,或對確保「非敏感」數據採取騎士態度。

呵呵,如果您決定用戶的登錄憑據是「不敏感」的,那麼您基本上只會讓攻擊者冒充系統的合法用戶來竊取您的數據,一旦他們侵入了您的「敏感「的數據存儲。