SQL*Plus安全(二)

realkid4發表於2011-02-09

那麼,如果我們使用與sqlplus最接近的產品sqlplusw呢?這種配置專案還有作用嗎?

 

 

SQL*Plus: Release 10.2.0.1.0 - Production on 星期三 2月 9 20:36:01 2011

 

Copyright (c) 1982, 2005, Oracle.  All rights reserved.

 

SQL> conn hr/hr@orcl;

已連線。

SQL> select count(*) from jobs;

 

  COUNT(*)

----------

        19

 

SQL> delete jobs;

SP2-0544: 在產品使用者概要檔案中禁用命令 "delete"

 

 

看來,SQLPLUSW也是同樣有效。原因可能就在於登入sqlplusw的時候,同樣報出“SQL*Plus: Release 10.2.0.1.0 - Production on 星期三 2月 9 20:36:01 2011”。可以看出從Oracle角度看,兩者是一樣的。那麼,其他產品,如pl/sql developer如何呢?

 

Connected to Oracle Database 10g Enterprise Edition Release 10.2.0.1.0

Connected as hr

 

SQL> select count(*) from job_history;

 

  COUNT(*)

----------

        10

 

SQL> delete job_history;

 

10 rows deleted

 

 

plsql developer下,刪除就成功了。相當於這個規則沒有應用到其上。這恐怕也就是Oracle所推薦的product-level security吧。

 

如果要取消這種限制,只需要將規則資料行刪除就可以了。

 

SQL> conn ; //預先登入

已連線。

SQL> host calc

SP2-0544: 在產品使用者概要檔案中禁用命令 "host" //配置起效

SQL>

 

 

此時接觸安全配置。

 

SQL> delete product_user_profile where userid='SCOTT';

 

1 row deleted

 

SQL> commit;

 

Commit complete

 

 

SQL> select product,userid,attribute,char_value from product_user_profile;

 

PRODUCT    USERID     ATTRIBUTE  CHAR_VALUE

---------- ---------- ---------- ----------

SQL*PLUS   %          INSERT     DISABLED

SQL*PLUS   %          UPDATE     DISABLED

SQL*PLUS   %          DELETE     DISABLED

 

 

此時,我們在scott上實驗。但注意:我們沒有重新登入!

 

SQL> host calc

SP2-0544: 在產品使用者概要檔案中禁用命令 "host"  //在沒有重新登入的情況下,規則變化是不能反映的!!

SQL>

 

SQL> conn scott/tiger@orcl;

已連線。

SQL> host calc //重新登入後,生效!

 

 

 

限制型別

我們談談pup可以限制的型別。上面的例子中,我們使用了兩種型別的限制:SQL語句和SQL*PLUS命令。對PUP,此外還支援pl/sql程式碼。

 

SQL語句就是我們使用的DML、DDL和事務語句。基本就是SQL語言系中的關鍵字和關鍵操作。

 

SQL*PLUS命令就是在SQL*PLUS中常用的一些命令語句。如show、col和set等等。

 

pl/sql語句主要是begin和declare兩個關鍵詞命令。

 

具體限制可以參閱相關官方文件。

 

 

PUP細節

 

下面就幾個零散的知識點進行說明。

 

超級使用者設定

 

這裡的超級使用者是sys和system使用者,以及具有sysdba或者sysoper角色的使用者,是不受到PUP安全的限制的。

 

 

SQL> select product,userid,attribute,char_value from product_user_profile;

 

PRODUCT    USERID     ATTRIBUTE  CHAR_VALUE

---------- ---------- ---------- ----------

SQL*PLUS   %          INSERT     DISABLED

SQL*PLUS   %          UPDATE     DISABLED

SQL*PLUS   %          DELETE     DISABLED

 

 

SQL> conn sys/sys@orcl as sysdba;

已連線。

SQL> select count(*) from scott.emp;

 

  COUNT(*)

----------

        14

 

SQL> delete scott.emp; //在有限制的情況下,使用者sys依然可以實現刪除資料!

 

已刪除14行。

 

 

 

local database侷限

 

PUP的另一個限制就是隻侷限在本地資料庫。比如說,我在例項A上設定規則,說scott使用者不能對資料表進行insert操作。那麼這個資料表只是例項A的資料表。如果當前存在DBLink,使scott可以訪問到其他資料庫(Remote Databaes)的資料表,那麼這個insert禁用的限制是不存在的。

 

 

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/17203031/viewspace-686924/,如需轉載,請註明出處,否則將追究法律責任。

相關文章