`
pitt_wang
  • 浏览: 11822 次
  • 性别: Icon_minigender_1
  • 来自: 上海
最近访客 更多访客>>
社区版块
存档分类
最新评论

Oracle Database 10g SQL开发指南9章 数据库安全 摘录

阅读更多
第九章  数据库安全
9.1.1创建用户
CREATE   USER   user_name    IDENTIFIED   BY  password
[DEFAULT  TABLESPACE   def_tabspace]
[TEMPROARY  TABLESPACE   temp_tabspace]
一个用户要想连接到数据库上,就必须向该用户授予”创建会话”的权限,也就是CREATE   SESSION系统特权
GRANT    CREATE   SESSION  TO  Tom
9.1.2修改用户密码
ALTER   USER   TOM   IDENTIFIED   BY  NEW_password;
PASSWORD 命令可以用来修改当前登录的用户密码,在输入password命令之后,SQL*Plus就会提示先输入原来的密码 ,再输入两次新的密码就可以了
9.1.3删除用户
Drop   user    tom;
注意:如果要删除的用户模式中包含对象(例如表等),就必须在DROP   USER 语句中的要删除的用户名后面加上关键字CASCADE。
常用的系统特权:
CREATE     SYNONYM  创建同名对象。同名对象用于引用其他模式中的表
CREATE    ANY  TABLE在任何模式中创建表
Grant   系统特权名称    to   用户名    WITH  ADMIN   OPTION;
这样所授权的用户就可以 把这种特权再授予其他用户。
将一种特权授予PUBLIC ,可以将该特权授予所有用户。
9.2.2检查授予用户的系统特权
通过查询user_sys_privs可以检查某个用户具有哪些系统特权。
撤销用户的系统特权
可以使用REVOKE语句撤销某个用户的系统特权。
CONNECT    system/manager
REVOKE   CREATE  TABLE   FROM  steve;

9.3对象特权
对象特权允许用户对数据库对象执行特定的操作,比如对表执行DML语句。
以tom用户身份连接到数据库上,并向steve用户授予特权:
CONNECT    tom/tom_password
GRANT    SELECT,INSERT,UPDATE   ON  store.products   TO  steve;
GRANT  UPDATE (last_name,salary)  ON    store.employees    TO  steve;
此处也可以使用GRANT选项,这样所授权的用户就可以把这种特权再授予其他用户。
GRANT    SELECT    ON    store.customers   TO     steve  WITH    GRANT   OPTION;
注意:当希望所授权的用户可以将对象特权授予其他用户时,使用GRANT 选项;当希望所授权用户将系统特权授予其他用户时,使用ADMIN选项。
检查已授予的对象特权
通过查询user_tab_privs_made可以检查某个用户对哪些表向其他用户开放了哪些对象特权。
通过查询user_col_privs_made可以检查某个用户对哪些列对象向其他用户开放了哪些对象特权。
检查已接受的对象特权
通过查询user_tab_privs_recd可以检查某个用户被授予了哪些表上的哪些对象特权。
通过查询user_col_privs_recd可以检查某个用户被授予了哪些列的对象特权。
同名对象
CONNECT    system/manager
GRANT    CREATE   SYNONYM     TO    tom
然后,
Connect    tom/tom_password
Create  synonym    customers   for    store.customers
公用同名对象
可以为表创建公用同名对象。在创建公用同名对象之后,所有的用户都可以看到这个同名对象。
CONNECT    system/manager
GRANT    CREATE   SYNONYM     TO    tom
然后,
Connect    tom/tom_password
Create  public  synonym   products  for   store.products;
撤销steve用户对customers表的select特权
Revoke   select  on  store.customers  from  steve;
在撤销steve用户的select  on  store.customers 特权时----steve已经将这种特权又授予了gail-----gail也同时失去了这种特权。
然而,在撤销用户steve用户的EXECUTE   ANY   PROCEDURE  特权时-----steve已经将这种特权又授予了gail----gail仍然会保留这种特权。(系统特权不删除关联)
角色就是一组特权,它可以分配一个用户或其他角色。
在增加或删除一个角色的某种特权时,被授予该角色的所有用户和角色都会自动获得新加的特权或自动失去这种特权。
通过查询user_role_privs可以检查已经授予一个用户哪些角色。
检查授予角色的系统特权
通过查询role_sys_privs 可以检查已经授予一个角色哪些系统特权。
通过查询role_tab_privs可以检查已经授予一个角色哪些对象特权。
默认情况下,在将角色授予用户时,就为该用户启用了这个角色。这就是说,在用户连接到数据库上时,就可以自动使用这个角色了。
ALTER    ROLE  语句可以用来对角色进行修改,使其变为非默认角色。
CONNECT  SYSTEM/MANAGER
ALTER     USER    steve     default   role   all except   overall_manager;
当以steve用户的身份连接到数据库上时,就需要使用SET   ROLE 语句启用   overall_manager角色
CONNECT     steve/button
SET  ROLE  overall_manager      identified    by manager_password;
使用下面的语句就可以清空角色的设置:
Set  role   none;
从角色中撤销特权:
REVOKE    ALL  ON   products   FROM   product_manager;
删除角色:DROP   ROLE  角色名

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics