隨筆-7  評論-24  文章-102  trackbacks-0


          一、創(chuàng)建用戶
          二、用戶授權(quán)
          三、角色機(jī)制
          四、配置模版及資源限制
          附錄


              數(shù)據(jù)庫安全的作用是控制用戶是否能夠?qū)?shù)據(jù)庫及其中的對象執(zhí)行操作。要連接到 Oracle 數(shù)據(jù)庫,就需要創(chuàng)建一個用戶帳戶,該用戶可以根據(jù)需要授予不同的操作權(quán)限。


          一、創(chuàng)建用戶    CREATE/ALTER/DROP USER xxxx    [幫助文檔]

          CREATE USER prod4
            IDENTIFIED BY ssss
            DEFAULT TABLESPACE users
            TEMPORARY TABLESPACE temp;

              刪除一個用戶時,會刪除該用戶所擁有的模式對象。DROP USER prod4 CASCADE;



          二、用戶授權(quán)        GRANT/REVOKE        [幫助文檔]
              權(quán)限(privilege)即執(zhí)行特定類型 SQL 語句的權(quán)利,若無任何權(quán)限,新創(chuàng)建用戶將無法登陸 Oracle 數(shù)據(jù)庫。

          1、系統(tǒng)權(quán)限
              系統(tǒng)權(quán)限(system privilege)允許用戶執(zhí)行某些數(shù)據(jù)庫操作。

              GRANT CONNECT,RESOURCE,DBA TO prod4
                [WITH ADMIN OPTION];

              CONNECT,RESOURCE,DBA 三個預(yù)定義的角色封裝了大部分系統(tǒng)權(quán)限;
              WITH ADMIN OPTION 選項使 被授權(quán)的用戶 也可以把該權(quán)限賦予其他用戶。(級聯(lián)授權(quán),A->B、B->C)

          ps.更多的系統(tǒng)權(quán)限,請參考幫助文檔 GRANT - Table 18-1 System Privileges。


          2、模式對象權(quán)限
              模式對象權(quán)限(schema object privilege)允許用戶對某一特定對象執(zhí)行特定操作。要授予對象權(quán)限,用戶必須滿足以下條件之一:
              ● 用戶擁有指定對象;
              ● 或者用戶已經(jīng)擁有 GRANT OPTION (級聯(lián)授權(quán))的能力。

          sys:
              GRANT SELECT ON sys.test TO prod
                [WITH GRANT OPTION];
          prod:
              SELECT * FROM sys.test;

          ps.更多的模式對象權(quán)限,請參考幫助文檔 GRANT - Table 18-3 Object Privileges Available for Particular Objects。



          三、角色機(jī)制    CREATE/ALTER/DROP ROLE xxx        [幫助文檔]
              角色(role)類似于操作系統(tǒng)中的用戶組,它封裝了多個權(quán)限。用戶可以通過角色繼承權(quán)限,從而簡化權(quán)限的管理與控制。推薦使用基于角色授權(quán),通過角色控制用戶。

              角色的使用注意:
              ● 角色不屬于任何模式(schema)。因此,創(chuàng)建角色的用戶可以被移除而不會對角色有所影響。
              ● 角色可以被授予其他角色。但是角色不能授予其自身,角色間也不能形成閉環(huán)。例如,當(dāng)角色 B 已經(jīng)被授予角色 A 時,角色 A 就不能再授予角色 B。

              -- 創(chuàng)建角色 myrole 并賦予權(quán)限,然后將該角色賦予用戶 prod(繼承該角色) --
              CREATE ROLE myrole;
              GRANT SELECT ON sys.test TO myrole;
              GRANT SELECT ON sys.test4 TO myrole;
              GRANT myrole TO prod;



          四、配置模版及資源限制    CREATE/ALTER/DROP PROFILE xxx
              每個用戶都對應(yīng)一套配置模版(profile),其中描述了用戶使用多種系統(tǒng)資源時的限制,具體包括:

              ● 用戶能夠建立的并發(fā)會話(concurrent session)數(shù)
              ● 用戶會話及 SQL 語句對 Oracle 進(jìn)行一次調(diào)用時可用的 CPU 處理時間
              ● 用戶會話及 SQL 語句對 Oracle 進(jìn)行一次調(diào)用時可用的邏輯 I/O(logical I/O)量
              ● 用戶會話的最大空閑時間(idle time)
              ● 用戶會話的最大連接時間(connect time)
              ● 密碼限制規(guī)則:
                  多次嘗試登錄均失敗時對帳戶加鎖
                  密碼過期時間(expiration period)及寬限期(grace period)
                  密碼重用(reuse)及復(fù)雜度(complexity)限制規(guī)則



          附錄
          1、模式(schema):模式是指用戶與其擁有對象的邏輯集合。

          2、[轉(zhuǎn)] Oracle 查看用戶權(quán)限
          ORACLE中數(shù)據(jù)字典視圖分為3大類,用前綴區(qū)別,分別為:USER,ALL 和 DBA,許多數(shù)據(jù)字典視圖包含相似的信息。

              ● USER_*:有關(guān)用戶所擁有的對象信息,即用戶自己創(chuàng)建的對象信息
              ● ALL_*:有關(guān)用戶可以訪問的對象的信息,即用戶自己創(chuàng)建的對象的信息加上其他用戶創(chuàng)建的對象但該用戶有權(quán)訪問的信息
              ● DBA_*:有關(guān)整個數(shù)據(jù)庫中對象的信息

          (這里的*可以為TABLES, INDEXES, OBJECTS, USERS等)

          1.查看所有用戶:
          select * from dba_user;
          select * from all_users;
          select * from user_users;

          2.查看用戶系統(tǒng)權(quán)限:
          select * from dba_sys_privs;
          select * from all_sys_privs;
          select * from user_sys_privs;

          3.查看用戶對象權(quán)限:
          select * from dba_tab_privs;
          select * from all_tab_privs;
          select * from user_tab_privs;

          4.查看所有角色:
          select * from dba_roles;

          5.查看用戶所擁有的角色:
          select * from dba_role_privs;
          select * from user_role_privs;

          6.查看當(dāng)前用戶的缺省表空間
          select username,default_tablespace from user_users;

          7.查看某個角色的具體權(quán)限,如grant connect,resource,create session,create view to TEST;
            查看RESOURCE具有那些權(quán)限,用SELECT * FROM DBA_SYS_PRIVS WHERE GRANTEE='RESOURCE';


          3、[轉(zhuǎn)] 對象權(quán)限

          模式對象/權(quán)限 ALTER DELETE EXECUTE INDEX INSERT READ REFERENCE SELECT UPDATE
           Directory            √      
           function      √            
           procedure      √            
           package      √            
           DB Object      √            
           Libary      √            
           Operation      √            
           Sequence  √                
           Table  √  √    √  √    √  √
           Type      √            
           View    √      √      √  √

              對象由不止一個權(quán)限,特殊權(quán)限ALL可以被授予或撤銷。如TABLE的ALL權(quán)限就包括:
              SELECT,INSERT,UPDATE和DELETE,還有INDEX,ALTER,和REFERENCE。


          4、[轉(zhuǎn)] Oracle 9i預(yù)定義的角色

           角色名稱  說明
           CONNECT
           數(shù)據(jù)庫連接角色,用于連接數(shù)據(jù)庫,具有創(chuàng)建簇、數(shù)據(jù)庫鏈接、序列、同義詞、表和視圖,以及修改會話的權(quán)利
           DBA
           數(shù)據(jù)庫管理員角色,具有所有使用ADMIN選項創(chuàng)建的系統(tǒng)權(quán)限,可以將系統(tǒng)權(quán)限授予其他用戶或角色
           DELETE_CATALOG_ROLE
           刪除目錄角色,可以刪除或重建數(shù)據(jù)字典
           EXECUTE_CATALOG_ROLE
           執(zhí)行目錄角色,能夠執(zhí)行所有系統(tǒng)包
           EXP_FULL_DATABASE
           能夠使用導(dǎo)出程序執(zhí)行數(shù)據(jù)庫的完全和增量導(dǎo)出
           IMP_FULL_DATABASE
           能夠使用導(dǎo)入程序執(zhí)行數(shù)據(jù)庫的完全導(dǎo)入
           RESOURCE
           可以創(chuàng)建簇、表、序列以及PL/SQL編程用方案對象,包括過程、程序包、觸發(fā)器等
           SELECT_CATALOG_ROLE
           查詢數(shù)據(jù)字典表或視圖


          參考文章:
          Oracle Concepts 中文版 (10g R2) -- 第 20 章,數(shù)據(jù)庫安全


          posted on 2008-10-13 20:03 黃小二 閱讀(2237) 評論(0)  編輯  收藏 所屬分類: [DB].Oracle
          主站蜘蛛池模板: 塔城市| 凯里市| 图们市| 枞阳县| 襄城县| 东山县| 临夏市| 仁化县| 廊坊市| 蕲春县| 大英县| 肥城市| 桂林市| 延长县| 和硕县| 朔州市| 顺义区| 承德市| 兰坪| 策勒县| 西充县| 杂多县| 营山县| 郁南县| 南京市| 藁城市| 亚东县| 城固县| 庆云县| 阿合奇县| 沈丘县| 丽水市| 皮山县| 天台县| 加查县| 绥德县| 临漳县| 常山县| 县级市| 盐源县| 东城区|