Oracle環境的安全性
2024-08-29 13:38:56
供稿:網友
 
             
  (1)用戶
    如:create user spgroup identified by spgroup
      default tablespace data
      temporary tablespace temp
      quota 20k on system;
      quota unlimited on data;
                                                                                                  grant create session to spgroup;//此用戶可使用,必須被授予create session的系統權限
    創建Oracle用戶時,若不指定缺省的表空間,Oracle就會將system表空間作為其存儲數據對象的缺省位置。
  臨時表空間時新用戶創建臨時段的位置,所有用戶的臨時段應建在一個單獨的表空間中,以避免在其他表空間造成空閑空間碎片。 
    配額可以指定用戶在哪個表空間用有配額。分配給該用戶的存儲空間可存儲任何類型的數據庫對象。用來創建臨時段的表空間不需要配額。
    select * from dba_ts_quotas where username='FLOWER';查看分配給用戶的配額。  
    alter user fowler identified by PRice;//改用戶名
    alter user fowler quota 0 on user_data;//阻止fowler用戶再使用數據庫中的//更多空間。
    drop user bradley1;//若用戶下不包含對象
    drop user bradley cascade;//若用戶下包含對象,必須加cascade,將刪除所有用戶下對象,//但不會刪除其他模式的對象,如基于刪除用戶模式的對象的同義詞、視圖、存儲過程、函數、包,他們會失效。
  
    (2)權限
    1、系統級權限
    grant create table to permjit; 
    grant create table to permjit with admin option;
    grant create any table to permjit;//any可以使一oracle用戶創建其他任何用戶的表 
    grant create table to public;//public表示數據庫的所有的用戶
    revoke create table from permjit,fowler;
    revoke create table from public;//直接授予的系統權限不受影響
    select * from dba_sys_privs where grantee='SPGROUP';//若系統權限是直接授予用戶的,可從此處查
  //直接授予的系統權限指不是通過role和public授予的,而直接顯示被授予的 
    2、對象級權限
    grant Select on spgroup.STAFF_FUNC to csp_connect ;
    grant Select on spgroup.STAFF_FUNC to role_user ;
    grant execute on spgroup.sosp_addr_i to role_user;
    //使用execute權限,存儲過程在被調用時,該過程在其屬主的用戶內部執行,和其屬主的用戶調用效果一樣,影響并使用表和其他對象,因此不用授予存儲過程使用的相關表的任何權限。
    alter,index,references的權限不常用。
    grant all on spgroup.so to fzbase;//賦所有的對象級權限。
    grant Select on spgroup.STAFF_FUNC to csp_connect with grant option;
    //使被授權的Oracle用戶再將這種對象級權限授予另外的用戶。
    查看對象級權限:
    select * from table_privileges where GRANTEE='CSP_CONNECT';
    **** select * from table_privileges where GRANTEE='PUBLIC';
    //table_privileges顯示用戶擁有的所有的對象級權限列表,column_privileges顯示用戶擁有的所有的列級權限列表。(不論是直接授予還是通過角色授予的)
    一個oracle用戶的權限包括直接授予該用戶的權限,授予public用戶的權限和授予用戶所具有的角色的權限,這些角色必須是答應的。
  
    (3)角色
    授權與回收與權限一致,也可使用public;
    set role;禁止角色。
    set role all;打開所有的角色
    set role all except salesperson;
    set role manager;只打開角色manager
    查看角色:
    select * from dba_roles;//數據庫中的所有角色的名字
    select * from dba_role_privs where grantee='FZBASE';//哪個用戶具有哪個角色
    select * from role_sys_privs;//角色的系統級權限
    角色的對象級的權限不放在role_table_privs而在
    select * from table_privileges where grantee='ROLEUSER';(Oracle 8的變化)
    角色的缺點:
    假如對象的權限是通過角色獲得的,則不能在其上創建過程化對象(過程、函數、包)。