[ 永遠的UNIX::UNIX技術資料的寶庫 ]   GB | BIG5

首頁 > 安全技術 > 數據庫 > 正文
oracle數據庫安全性策略
不詳 (2001-05-14 03:28:00)
    數據庫安全性問題一直是圍繞著數據庫管理員的惡夢,數據庫數據的丟失 
以及數據庫被非法用戶的侵入使得數據庫管理員身心疲憊不堪。本文圍繞數據 
庫的安全性問題提出了一些安全性策略,希望對數據庫管理員有所幫助,不再 
夜夜惡夢。數據庫安全性問題應包括兩個部分: 

一、數據庫數據的安全 
它應能確保當數據庫系統DownTime時,當數據庫數據存儲媒體被破 
      壞時以及當數據庫用戶誤操作時,數據庫數據信息不至丟失。 

二、數據庫系統不被非法用戶侵入 
它應盡可能地堵住潛在的各種漏洞,防止非法用戶利用它們侵入數據 
      庫系統。 

          對數據庫數據的安全問題,數據庫管理員可以參考有關系統雙機 
      熱備份功能以及數據庫的備份和恢復的資料。 

以下就數據庫系統不被非法用戶侵入這個問題作進一步的闡述。 
 組和安全性: 
      在操作系統下建立用戶組也是保証數據庫安全性的一種有效方法。 
   Oracle程序為了安全性目的一般分為兩類:一類所有的用戶都可執行, 
   另一類只DBA可執行。在Unix環境下組設置的配置文件是/etc/group, 
   關這個文件如何配置,請參閱Unix的有關手冊,以下是保証安全性的 
   幾種方法: 
(1) 在安裝Oracle Server前,創建數據庫管理員組(DBA)而且 
             分配root和Oracle軟件擁有者的用戶ID給這個組。DBA能執 
             行的程序只有710權限。在安裝過程中SQL*DBA系統權限命令 
             被自動分配給DBA組。 
(2) 允許一部分Unix用戶有限制地訪問Oracle服務器系統,增加 
             一個由授權用戶組的Oracle組,確保給Oracle服務器實用例 
             程Oracle組ID,公用的可執行程序,比如SQL*Plus,SQL*Fo 
             rms等,應該可被這組執行,然該這個實用例程的權限為 
             710,它將允許同組的用戶執行,而其他用戶不能。 
(3) 改那些不會影響數據庫安全性的程序的權限為711。 
       注:在我們的系統中為了安裝和調試的方便,Oracle數據庫中 
             的兩個具有DBA權限的用戶Sys和System的缺省密碼是manager。 
             為了您數據庫系統的安全,我們強烈建議您該掉這兩個用戶的 
             密碼,具體操作如下: 
  在SQL*DBA下鍵入: 
alter user sys indentified by password; 
alter user system indentified by password; 
其中password為您為用戶設置的密碼。 

 Oracle服務器實用例程的安全性: 
以下是保護Oracle服務器不被非法用戶使用的幾條建議: 
(1) 確保$ORACLE_HOME/bin目錄下的所有程序的擁有權歸Oracle 
             軟件擁有者所有; 
(2) 給所有用戶實用便程(sqiplus,sqiforms,exp,imp等)711權 
             限,使服務器上所有的用戶都可訪問Oracle服務器; 
(3) 給所有的DBA實用例程(比如SQL*DBA)700權限。Oracle服務器 
             和Unix組當訪問本地的服務器時,您可以通過在操作系統下把 
             Oracle服務器的角色映射到Unix的組的方式來使用Unix管理服 
             務器的安全性,這種方法適應本地訪問。 
在Unix中指定Oracle服務器角色的格式如下: 
ora_sid_role[_dla] 
其中 
sid               是您Oracle數據庫的oracle_sid; 
role 是Oracle服務器中角色的名字; 
d (可選)表示這個角色是缺省值; 
a (可選)表示這個角色帶有WITH ADMIN選項, 
         您只可以把這個角色授予其他角色,不能是其他用戶。 
以下是在/etc/group文件中設置的例子: 
ora_test_osoper_d:NONE:1:jim,narry,scott 
ora_test_osdba_a:NONE:3:pat 
ora_test_role1:NONE:4:bob,jane,tom,mary,jim 
bin: NONE:5:root,oracle,dba 
root:NONE:7:root 
詞組“ora_test_osoper_d”表示組的名字;詞組“NONE”表示這 
      個組的密碼;數字1表示這個組的ID;接下來的是這個組的成員。前兩 
      行是Oracle服務器角色的例子,使用test作為sid,osoper和osdba作 
      為Oracle服務器角色的名字。osoper是分配給用戶的缺省角色,osdba 
      帶有WITH ADMIN選項。為了使這些數據庫角色起作用,您必須shutdown 
      您的數據庫系統,設置Oracle數據庫參數文件initORACLE_SID.ora中 
      os_roles參數為True,然重新啟動您的數據庫。如果您想讓這些角色 
      有connect internal權限,運行orapwd為這些角色設置密碼。當您嘗 
      試connect internal時,您鍵入的密碼表示了角色所對應的權限。 

 SQL*DBA命令的安全性: 
如果您沒有SQL*PLUS應用程序,您也可以使用SQL*DBA作SQL查權 
      限相關的命令只能分配給Oracle軟件擁有者和DBA組的用戶,因為這些 
      命令被授予了特殊的系統權限。 
(1) startup 
(2) shutdown 
(3) connect internal 

 數據庫文件的安全性: 
 Oracle軟件的擁有者應該這些數據庫文件 
     ($ORACLE_HOME/dbs/*.dbf)設置這些文件的使用權限為0600:文件的 
     擁有者可讀可寫,同組的和其他組的用戶沒有寫的權限。 
Oracle軟件的擁有者應該擁有包含數據庫文件的目錄,為了增加 
     安全性,建議收回同組和其他組用戶對這些文件的可讀權限。 

 網絡安全性: 
當處理網絡安全性時,以下是額外要考慮的幾個問題。 
(1) 在網絡上使用密碼 
         在網上的遠端用戶可以通過加密或不加密方式鍵入密碼, 
              當您用不加密方式鍵入密碼時,您的密碼很有可能被非法用 
              戶截獲,導致破壞了系統的安全性。 
(2) 網絡上的DBA權限控制 
    您可以通過下列兩種方式對網絡上的DBA權限進行控制: 
A 設置成拒絕遠程DBA訪問; 
B 通過orapwd給DBA設置特殊的密碼。 

建立安全性策略: 

  系統安全性策略 
(1) 管理數據庫用戶 
        數據庫用戶是訪問Oracle數據庫信息的途徑,因此, 
             應該很好地維護管理數據庫用戶的安全性。按照數據庫系統 
             的大小和管理數據庫用戶所需的工作量,數據庫安全性管理 
             者可能只是擁有create,alter,或drop數據庫用戶的一個 
             特殊用戶,或者是擁有這些權限的一組用戶,應注意的是,只 
             有那些值得信任的個人才應該有管理數據庫用戶的權限。 
(2) 用戶身份確認 
        數據庫用戶可以通過操作系統,網絡服務,或數據庫進行 
             身份確認,通過主機操作系統進行用戶身份認証的優點有: 
        A 用戶能更快,更方便地聯入數據庫; 
        B 通過操作系統對用戶身份確認進行集中控制:如果操作 
                   系統與數據庫用戶信息一致,那Oracle無須存儲和管 
                   理用戶名以及密碼; 
        C 用戶進入數據庫和操作系統審計信息一致。 
(3) 操作系統安全性 
    A 數據庫管理員必須有create和delete文件的操作系統權限; 
    B 一般數據庫用戶不應該有create或delete與數據庫相關文 
               件的操作系統權限; 
             C 如果操作系統能為數據庫用戶分配角色,那安全性管理者 
               必須有修改操作系統帳戶安全性區域的操作系統權限。 

  數據的安全性策略: 
數據的生考慮應基數據的重要性。如果數據不是很重要,那數 
      據的安全性策略可以稍稍放鬆一些。然而,如果數據很重要,那應該 
      有一謹慎的安全性策略,用它來維護對數據對象訪問的有效控制。 

 用戶安全性策略: 
(1) 一般用戶的安全性 
             A 密碼的安全性 
          如果用戶是通過數據庫進行用戶身份的確認,那建議 
                使用密碼加密的方式與數據庫進行連接。這種方式的設置方 
                法如下: 
             在客戶端的oracle.ini文件中設置 
                         ora_encrypt_login數為true; 
             在服務器端的initORACLE_SID.ora文件中設置 
                          dbling_encypt_login參數為true。 
   B 權限管理 
         對那些用戶很多,應用程序和數據對象很豐富的數據 
               庫,應充分利用“角色”這個機制所帶的方便性對權限進行 
               有效管理。對復雜的系統環境,“角色”能大大地簡化權 
               限的管理。 
        (2) 終端用戶的安全性 
       您必須針對終端用戶制定安全性策略。例如,對一個有 
             很多用戶的大規模數據庫,安全性管理者可以決定用戶組分類, 

             為這些用戶組創建用戶角色,把所需的權限和應用程序角色授 
             予每一個用戶角色,以及為用戶分配相應的用戶角色。當處理 
             特殊的應用要求時,安全性管理者也必須明確地把一些特定的 
             權限要求授予給用戶。您可以使用“角色”對終端用戶進行權 
             限管理。 

 數據庫管理者安全性策略: 
      (1) 保護作為sys和system用戶的連接 
    當數據庫創建好以,立即更改有管理權限的sys和system用 
          戶的密碼,防止非法用戶訪問數據庫。當作為sys和system用戶 
          連入數據庫,用戶有強大的權限用各種方式對數據庫進行改動。 
      (2) 保護管理者與數據庫的連接 
    應該只有數據庫管理者能用管理權限連入數據庫,當以sysdba 
         或startup,shutdown,和recover或數據庫對象(例如create, 
         drop,和delete等)進行沒有任何限制的操作。 
      (3) 使用角色對管理者權限進行管理 

 應用程序開發者的安全性策略: 
      (1) 應用程序開發者和他們的權限 
     數據庫應用程序開發者是唯一一類需要特殊權限組完成自己 
          工作的數據庫用戶。開發者需要諸如create table,create  
          procedure等系統權限,然而,為了限制開發者對數據庫的操作, 
          只應該把一些特定的系統權限授予開發者。 
      (2) 應用程序開發者的環境 
A 程序開發者不應與終端用戶競爭數據庫資源; 
B 用程序開發者不能損害數據庫其他應用產品。 
       (3) free和controlled應用程序開發 
    應用程序開發者有一下兩種權限: 
  A free development 
    應用程序開發者允許創建新的模式對象,包括table,index, 
             procedure,package等,它允許應用程序開發者開發獨立其 
             他對象的應用程序。 
B controlled development 
     應用程序開發者不允許創建新的模式對象。所有需要table, 
              indes procedure等都由數據庫管理者創建,它保証了數據 
              庫管理者能完全控制數據空間的使用以及訪問數據庫信息的 
              途徑。但有時應用程序開發者也需這兩種權限的混和。 
(4) 應用程序開發者的角色和權限 
        數據庫安全性管理者能創建角色來管理典型的應用程序開 
              發者的權限要求。 
A create系統權限常常授予給應用程序開發者,以到 
                    他們能創建他的數據對象。 
B 數據對象角色幾乎不會授予給應用程序開發者使用的 
                    角色。 
(5) 加強應用程序開發者的空間限制 
        作為數據庫安全性管理者,您應該特別地為每個應用程 
              序開發者設置以下的一些限制: 
A 開發者可以創建table或index的表空間; 
B 在每一個表空間中,開發者所擁有的空間份額。應用程 
                    序管理者的安全在有許多數據庫應用程序的數據庫系統 
                    中,您可能需要一應用程序管理者,應用程序管理者應 
                    負責以下的任務: 
C 為每一個應用程序創建角色以及管理每一個應用程序 
                     的角色; 
D 創建和管理數據庫應用程序使用的數據對象; 
E 需要的話,維護和更新應用程序代碼和Oracle的存儲 
                    過程和程序包。 

(http://www.fanqiang.com)
    進入【UNIX論壇

相關文章

======
 

★  樊強制作 歡迎分享  ★