Decode360's Blog

          業(yè)精于勤而荒于嬉 QQ:150355677 MSN:decode360@hotmail.com

            BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 ::  :: 管理 ::
            397 隨筆 :: 33 文章 :: 29 評論 :: 0 Trackbacks
          Oracle用戶權(quán)限
          ?
          ?
          ??? 對用戶的管理主要還是進行權(quán)限上的設(shè)置。這部分的安全性問題就比較大了,有很多可以講的。其實可以參看一下Ask Tom中的相關(guān)問題。這里只是簡單的介紹一下設(shè)置的原理,以及一些相關(guān)的數(shù)據(jù)字典。
          ?
          ?
          系統(tǒng)權(quán)限:

          1、使用GRANT語句向用戶賦予系統(tǒng)權(quán)限:
          ??? GRANT system_privilege TO user_name [ WITH ADMIN OPTION ] ;
          ??? 注:使用WITH ADMIN OPTION語句后,使用戶可以將相同權(quán)限賦給其他用戶。
          ?
          2、使用REVOKE語句撤銷系統(tǒng)權(quán)限:
          ??? REVOKE system_privilege FROM user_name ;
          ??? 注:當刪除A用戶的權(quán)限時,通過A賦予B的權(quán)限不會消失。
          ?
          3、任何用戶,都必須有CREATE SESSION權(quán)限,才可以連接到數(shù)據(jù)庫。
          ?
          4、可通過 selectdistinctprivilegefrom dba_sys_privs; 來查詢所有的系統(tǒng)權(quán)限列表
          ??? ANALYZE ANY
          ??? AUDIT SYSTEM
          ??? CREATE TABLE
          ??? DROP PROFILE
          ??? DROP ANY ROLE
          ??? ALTER DATABASE
          ??? DROP ANY INDEX
          ??? DROP ANY TABLE
          ??? LOCK ANY TABLE
          ??? EXECUTE ANY PROCEDURE
          ??? ……
          ??? 基本上都是可以顧名思義的,但是權(quán)限相對比較多,150項左右。
          ?

          對象權(quán)限:
          ?
          1、對象權(quán)限賦予語法:
          ??? GRANT object_privilege ON object_name TO username [ WITH GRANT OPTION ];
          ??? 注:使用WITH GRANT OPTION語句后,使用戶可以將相同權(quán)限賦給其他用戶,與系統(tǒng)權(quán)限相同
          ?
          2、對象權(quán)限撤銷語法:
          ??? REVOKE object_privilege ON object_name FROM username;
          ??? 注:當刪除A用戶的權(quán)限時,通過A賦予B的權(quán)限自動消失,與系統(tǒng)權(quán)限相反
          ?
          3、查看具體的對象權(quán)限:
          ?
          ??? select * from dba_tab_privs where grantee= 'WANGXIAOQI' ; ?
          ??? select * fromTABLE_PRIVILEGESwhere GRANTEE='WANGXIAOQI';?
          ??? 1:兩者均可以查看對象權(quán)限,只是展現(xiàn)形式不同。
          ??? 注2:表名為TABLE_PRIV,但 不光只有table,而是所有object的信息,包括function、procedure、package等。
          ?
          4、object privilege 種類比較少,而且根據(jù)對象類型的不同而不同。
          ?
          ??? 在賦值時可以使用all代替該類型對象的所有權(quán)限類型,如:

          ??? grant select , update , delete , insert on table_name to user_name;

          ??? grant all on table_name to user_name;

          ?
          ??? 注:對于TABLE,all包括:ALTER、DELETE、INDEX、INSERT、SELECT、UPDATE、REFERENCES、ON COMMIT REFRESH、QUERY REWRITE、DEBUG、FLASHBACK
          ?
          ?

          角色管理:
          ?
          1、通過role來簡化賦權(quán)操作,每個role含有若干項系統(tǒng)權(quán)限。role包括系統(tǒng)預定義自定義兩種。
          ?
          ??? select * from dba_roles; --查詢當前所有ROLE列表,包括自定義
          ??? select * from dba_role_privs; --查詢某用戶的ROLE權(quán)限
          ??? select * from ROLE_SYS_PRIVS; --查詢當前用戶的ROLE,及其所包含的系統(tǒng)權(quán)限
          ?
          2、系統(tǒng)預定義角色:
          ?
          ??? CONNECT:
          ??????? CREATE VIEW
          ??????? CREATE TABLE
          ??????? ALTER SESSION
          ??????? CREATE CLUSTER
          ??????? CREATE SESSION
          ??????? CREATE SYNONYM
          ??????? CREATE SEQUENCE
          ??????? CREATE DATABASE LINK
          ??? RESOURCE:
          ??????? CREATE TYPE
          ??????? CREATE TABLE
          ??????? CREATE CLUSTER
          ??????? CREATE TRIGGER
          ??????? CREATE OPERATOR
          ??????? CREATE SEQUENCE
          ??????? CREATE INDEXTYPE
          ??????? CREATE PROCEDURE
          ?
          ??? 另外包括比較重要的ROLE如:DBA、EXP_FULL_DATABASE、IMP_FULL_DATABASE等。
          ?
          ?
          3、自定義角色:
          ???
          ??? 創(chuàng)建ROLE:
          ??? CREATE ROLE role_name
          ??? [ NOT IDENTIFIED | IDENTIFIED BY password]
          ??? 注:IDENTIFIED 表示在修改該ROLE時是否需要提供密碼 <修改,不包括賦權(quán)和取消權(quán)限>
          ?
          ??? 在創(chuàng)建 role 之后,使用 grant 和 revoke 手動設(shè)置 role 對應(yīng)的權(quán)限
          ??? 再使用 grant 和 revoke 將 role 賦給 user
          ??? 注:可以將 role 賦給 role
          ?
          4、啟用和禁用ROLE:
          ?
          ??? SET ROLE [role [identified by password] |,role [identified by password]...]
          ??? | ALL [EXCEPT role[,role]...]
          ??? | NONE ];
          ??? 注:ALL 表示啟用改用戶的所有角色,NONE表示禁用所有角色。
          ?
          ??? 例:
          ??? 禁用所有角色:setrolenone;
          ??? 啟用所有角色:setroleall; --role不能有密碼
          ??? 啟用某個角色:setrole role_test identifiedby test; --有密碼的話
          ??? 禁用某個角色:setroleallexcept role_test;
          ??? 注:setrole命令是覆蓋性質(zhì)的,即不能先啟用一個,再啟用另一個,必須一條命令中全部啟動;
          ?
          5、修改用戶時設(shè)置角色:
          ?
          ??? ALTER USER username
          ??? [default role [role_name[,role_name,...]]
          ??? | all [except role_name[,role_name,...]]
          ??? | none ];
          ?
          ?
          ?
          posted on 2008-10-02 22:36 decode360 閱讀(353) 評論(0)  編輯  收藏 所屬分類: 07.Oracle
          主站蜘蛛池模板: 肃宁县| 萨嘎县| 瑞安市| 达尔| 陆良县| 阿勒泰市| 洛南县| 石台县| 辛集市| 南汇区| 西乌珠穆沁旗| 苍南县| 京山县| 华池县| 安龙县| 沧州市| 乐东| 泽库县| 弋阳县| 昔阳县| 改则县| 射阳县| 千阳县| 宿州市| 波密县| 枣庄市| 丁青县| 长丰县| 重庆市| 七台河市| 北海市| 宣化县| 锡林浩特市| 洛隆县| 佛学| 乌拉特前旗| 萝北县| 长治县| 太仆寺旗| 阜阳市| 辛集市|