限制DDL操作(四)
出於安全性或避免影響效能的考慮,在產品資料庫中有時候會禁止或者在一定時間段內限制DDL語句的發生。Oracle也提高了很多方法來實現這個功能,這個簡單介紹一下。
這篇介紹VAULT元件的COMMAND RULE功能。
限制DDL操作(一):http://yangtingkun.itpub.net/post/468/479244
限制DDL操作(二):http://yangtingkun.itpub.net/post/468/479277
限制DDL操作(三):http://yangtingkun.itpub.net/post/468/479290
前面介紹的三種方法各有各的有缺點。如果資料庫安裝了VAULT元件,那麼限制DDL語句將是很簡單的功能。
Oracle Vault的COMMAND RULE功能,可以在不同的粒度上控制DDL語句的訪問。
SQL> CONN TEST/TEST
Connected.
SQL> CREATE TABLE T (ID NUMBER);
Table created.
SQL> CREATE TABLE T1 (ID NUMBER);
Table created.
SQL> DROP TABLE T1 PURGE;
Table dropped.
SQL> CONN DVOWNER
Enter password:
Connected.
SQL> SELECT *
2 FROM V$OPTION
3 WHERE PARAMETER = 'Oracle Database Vault';
PARAMETER VALUE
---------------------------------------- ------------------------------
Oracle Database Vault TRUE
SQL> EXEC DBMS_MACADM.CREATE_COMMAND_RULE('DROP TABLE', 'Disabled', 'TEST', '%', 'Y')
PL/SQL procedure successfully completed.
SQL> CONN TEST/TEST
Connected.
SQL> DROP TABLE T;
DROP TABLE T
*
ERROR at line 1:
ORA-00604: error occurred at recursive SQL level 1
ORA-47400: Command Rule violation for drop table on TEST.T
ORA-06512: at "DVSYS.AUTHORIZE_EVENT", line 55
ORA-06512: at line 31
透過建立了一個DROP TABLE的COMMAND RULE,並將這個RULE新增到Disabled這個RULE SET中,就禁止了TEST使用者下對所有物件的DROP TABLE語句。
這個粒度完全可以控制到物件級,比如修改一下COMMAND RULE,將DROP TABLE的限制改變為限制刪除T表,而其他表允許刪除:
SQL> CONN DVOWNER
Enter password:
Connected.
SQL> EXEC DBMS_MACADM.DELETE_COMMAND_RULE('DROP TABLE', 'TEST', '%')
PL/SQL procedure successfully completed.
SQL> EXEC DBMS_MACADM.CREATE_COMMAND_RULE('DROP TABLE', 'Disabled', 'TEST', 'T', 'Y')
PL/SQL procedure successfully completed.
SQL> CONN TEST/TEST
Connected.
SQL> DROP TABLE T PURGE;
DROP TABLE T PURGE
*
ERROR at line 1:
ORA-00604: error occurred at recursive SQL level 1
ORA-47400: Command Rule violation for drop table on TEST.T
ORA-06512: at "DVSYS.AUTHORIZE_EVENT", line 55
ORA-06512: at line 31
SQL> CREATE TABLE T2 (ID NUMBER);
Table created.
SQL> DROP TABLE T2;
Table dropped.
使用這個方法,不僅僅可以限制DDL語句,包括DML、SELECT、ALTER SYSTEM、ALTER SESSION、甚至CONNECT都是可以限制或允許的。
這種方法無疑是最靈活的,而且設定也不困難,一個過程呼叫足以。唯一的缺點是必須VAULT元件的支援。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/4227/viewspace-561551/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 限制DDL操作(三)
- 限制DDL操作(二)
- 限制DDL操作(一)
- Oracle 觸發器 限制DDL操作Oracle觸發器
- Mysql系列第四講 DDL常見操作彙總MySql
- MySQL DDL操作表MySql
- clob欄位對於parallel ddl的限制Parallel
- 配置GoldenGate啟動DDL支援同步DDL操作Go
- DDL操作的自動提交
- oracle追蹤誤操作DDLOracle
- DML操作 DDL觸發器觸發器
- 11.2.0.3.0 comment 操作不再是ddl操作???
- DDL、DML、DCL、DQL相關操作
- Mysql 基礎操作 DDL DML DCLMySql
- 資料庫DDL操作審計資料庫
- 禁止使用者的DDL操作
- 資料庫操作語言DDL資料庫
- MySQL5.7 InnoDB線上DDL操作MySql
- 04 MySQL 表的基本操作-DDLMySql
- 控制DDL許可權及紀錄DDL操作的Trigger
- OGG單向DDL複製操作
- 記錄資料庫所有ddl操作資料庫
- 如果comment不是ddl操作多好
- Oracle高可用環境之DDL操作Oracle
- MySQL的DDL和DML操作語法MySql
- logmnr挖掘中間有DDL的操作示例-對於執行DDL前的操作無法挖掘
- Oracle DBLINK 抽數以及DDL、DML操作Oracle
- 使用Logminer工具分析DML和DDL操作
- 資料庫觸發器,禁止DDL操作資料庫觸發器
- DML, DDL操作的自動提交問題
- 限制訪問表的FOR UPDATE操作
- 記錄一次 Online DDL 操作
- 配置支援DML和DDL操作同步的GoldenGateGo
- DDL,DML,DCL,TCL四種語言的簡介
- 透過觸發器禁止模式物件的DDL操作觸發器模式物件
- DDL,DML操作對結果快取的影響快取
- Oracle12c 新特性 - log記錄DDL操作Oracle
- DB2 DDL操作引起的GoldenGate錯誤DB2Go