Oracle Label Securit簡介 Oracle Label Security是內置於資料庫引擎中的過程與約束條件集,該數據引擎實施對在單個表或整個模式上的"行"級訪問控制。要利用Oracle Label Security,需要創建一個或多個安全策略,其中每一個安全策略都包含一組標簽。你可... ...
Oracle Label Securit簡介
Oracle Label Security是內置於資料庫引擎中的過程與約束條件集,該數據引擎實施對在單個表或整個模式上的"行"級訪問控制。要利用Oracle Label Security,需要創建一個或多個安全策略,其中每一個安全策略都包含一組標簽。你可以用這些標簽來標明哪些用戶能夠訪問什麼類型數據。在創建了一個策略之後,將該策略應用於需要保護的表,並將這些標簽授予你的用戶,這樣,你就完成了整個過程。Oracle Label Security對查詢的修改是透明的,並且在即時計算訪問級別,以執行你的新策略。Oracle Label Security 讓企業和政府機構能夠將具有不同訪問要求的數據(包括政府機密數據)整合到同一個資料庫中。它根據數據分類和應用用戶的訪問標簽實施多級訪問控制。藉助這一強大功能,用戶可以在 Oracle Database 中按需訪問與研發項目、非公共財務信息或者醫療保健信息相關的敏感數據。
Oracle Label Security安裝
首先使用下麵腳本檢查資料庫實例是否安裝了Oracle Label Security組件
col comp_name for a36;
col version for a30;
select comp_id, comp_name, version, status
from dba_registry
where comp_name='Oracle Label Security';
如果沒有安裝Oracle Label Security組件,那麼可以使用catols.sql腳本創建Oracle Label Security所需要用戶LBACSYS及資料庫對象
@?/rdbms/admin/catols.sql
執行腳本過程可能會遇到“ORA-01432: public synonym to be dropped does not exist”錯誤,這個是刪除的同義詞不存在,不必糾結。可以忽略。 另外,需要註意的是:腳本執行完成後會執行shutdown immediate關閉數據實例。
Oracle Label Security對象和有效性檢查
可以使用下麵腳本檢查Oracle Label Security對象和對象有效性,如下所示:
select object_type,object_name
from dba_objects
where owner='LBACSYS' and status='INVALID';
select object_type,count(*)
from dba_objects
where owner='LBACSYS' group by object_type;
卸載Oracle Label Security
卸載Oracle Label Security也僅需執行一個catnools.sql腳本即可。如下所示:
SQL> @?/rdbms/admin/catnools.sql
PL/SQL procedure successfully completed.
PL/SQL procedure successfully completed.
Trigger dropped.
Trigger dropped.
Trigger dropped.
PL/SQL procedure successfully completed.
PL/SQL procedure successfully completed.
User dropped.
2 rows deleted.
Commit complete.
SQL>