Database-Design
使用一對一確保安全
我正在讀一本關於數據庫設計的書,我看到了與
one-to-one
關係相關的資訊:一對一關係有時也用作安全結構的一部分。一個實體可以分解為兩個實體。一個將包含公開可見的內容和第二個私人內容。例如,員工的資訊可能被分成兩個實體。
第一個包含非敏感內容,例如員工姓名、部門、業務電話號碼和職位頭銜。第二個表包含敏感材料,例如員工的社會安全號碼、家庭地址、家庭電話和工資資訊。表之間存在一對一的關係。每個員工在私有表中只有一個相關記錄。
所以,我的問題是:是否建議將這種方法用於安全問題?
是和不是。
如果主要關注的是限制對不同使用者可見的內容,則視圖就足夠了。
create schema sensitive_data; create schema non_sensitive_data; create view non_sensitive_data.employee as select id, name, department, phone, title from hidden.employee; create view sensitive_data.employee as select id, salary, ssn from hidden.employee;
特權使用者將被授予對敏感數據的權限,非特權使用者將被授予對 non_sensitive_data 的權限。在支持可更新視圖的 RDBMS 中,使用者將通過視圖訪問員工表——他們只能選擇、更新或刪除視圖上公開的列。他們根本不需要訪問
hidden
模式,也不能直接訪問基礎表。但是,如果有法律要求,例如“一旦員工辭職就刪除所有敏感的員工記錄”,但您希望保留“中性”員工詳細資訊,因為員工是許多實體中的外鍵,那麼兩個 -表格設計可能有意義。