首页 > Linux操作系统 > Linux操作系统 > SQL*Plus安全(二)
那么,如果我们使用与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 scott/tiger@orcl; //预先登录
已连接。
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博客 ” ,链接:https://blog.itpub.net/17203031/viewspace-686924/ ,如需转载,请注明出处,否则将追究法律责任。