Oracle-11g-R2

在 Oracle 中屏蔽 PII 列

  • June 28, 2019

我在 Linux 上使用 Oracle 11g R2,並且我的數據庫中有多個表,其中包含需要屏蔽的列。

我已經嘗試過 OEM 來屏蔽下面超連結中提到的數據,效果很好。 http://www.oracle.com/webfolder/technetwork/tutorials/obe/em/emgc10205/data_masking/datamask.htm

但我找不到任何部落格提供手動方法來屏蔽 oracle 中的數據,例如通過 SQLPLUS 提示符執行包、函式等。

有人可以建議我如何做到這一點

如果您想屏蔽數據但仍不屏蔽儲存它,並且您不想使用 Oracle 提供的工具(需要額外收費!),那麼您需要開發一個 API 來為您進行屏蔽。

您將數據正常儲存在數據庫中。

客戶不能直接訪問表。當他們請求數據時,使用“GET”呼叫,它將數據屏蔽到您的規範中,當他們插入數據時,他們使用“SET”呼叫。

不過,這一切都依賴於通過此 API 訪問數據,因此您需要仔細設計這方面的事情。這意味著使用一個模式來儲存數據,另一個使用者作為 API 所有者/數據訪問路徑。

這裡有很多事情需要考慮,這不是一項小工作。

VPD

Oracle 中的列屏蔽是通過虛擬專用數據庫 (VPD) 完成的,它是 Oracle 企業版 (EE) 數據庫中包含的 ($0) 特性。

VPD樣

對於非 EE 版本:

  • CREATE CONTEXT

  • CREATE VIEW在基礎表上

    • 用於SYS_CONTEXT()確定是否應顯示該值
  • 創建INSTEAD OF TRIGGER一個VIEW

  • 我會CREATE PACKAGE抓住所有的邏輯。

    • SQL*Developer 可以生成 Table API (TAPI) 包
    • APEX 也可以生成 TAPI
    • 有可以創建 TAPI 的基於模板的程式碼生成器

靜態加密

如果您必須遵守一些法律要求,您可能需要在 PII 處於靜止狀態時對其進行加密。透明數據加密 (TDE) 是推薦的方法。但是,它需要 EE 和 EE 附加組件 ($$)

引用自:https://dba.stackexchange.com/questions/216063