ITPub博客

首页 > Linux操作系统 > Linux操作系统 > SQL*Plus安全(二)

SQL*Plus安全(二)

原创 Linux操作系统 作者:realkid4 时间:2011-02-09 21:03:47 0 删除 编辑

那么,如果我们使用与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博客 ” ,链接:http://blog.itpub.net/17203031/viewspace-686924/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
求道~

注册时间:2010-11-30

  • 博文量
    545
  • 访问量
    7745560