• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
    • 軟件測試技術
    • 軟件測試博客
    • 軟件測試視頻
    • 開源軟件測試技術
    • 軟件測試論壇
    • 軟件測試沙龍
    • 軟件測試資料下載
    • 軟件測試雜志
    • 軟件測試人才招聘
      暫時沒有公告

    字號: | 推薦給好友 上一篇 | 下一篇

    Oracle安全數據系統架構全接觸

    發布: 2008-2-03 16:55 | 作者: 不詳 | 來源: csdn  | 查看: 22次 | 進入軟件測試論壇討論

    領測軟件測試網

    ·在System用戶下,利用Oracle提供的pupbld.sql,建立表Productuserprofile,執行下面這樣的命令,限制在非開發狀態Sql命令的使用,例如

      insert into productuserprofile

      (product,userid,attribute,charvalue) values

      (‘SQL*Plus‘,‘TEST‘,‘CONNECT‘,‘DISABLED‘);

      insert into productuserprofile

      (product,userid,attribute,charvalue) values

      (‘SQL*Plus‘,‘SFYY‘,‘DELETE‘,‘DISABLED‘);這樣,在SQL狀態下,根本無法連接到TEST用戶,而在 sfyy用戶下,delete命令將不能執行。當然,DBA可以改變這些設置。

      當然了,這個僅僅是屬于一種“應用技巧”,但是足可以把那些每天忙于更新系統的管理員舒服好幾天了。但是另一方面,還要加強對源程序的管理,在Client端只存放執行程序。加強審計,發現異,F象,及時處理。這樣才可以做到更高一層的“安全”。

      在下面,我主要是向大家介紹一個REM對GHXXB制立數據庫觸發子,密碼的加密程序。

      REM 對GHXXB制立數據庫觸發子(當INSERT OR UPDATE GHXXB時觸發)

      drop trigger scjmmm;

      create or replace trigger scjmmm

      before insert or update of mm On ghxxb For each Row

      Begin

      :new.mm:=ENCRYPT(:new.mm,:NEW.GH,TO_CHAR(SYSDATE,‘SS‘));

      End;

      /

      ---------------------------密碼的加密程序ENCRYPT----------------------

      Create or Replace

      Function ENCRYPT (Inpass In Varchar2,IN_GH In Varchar2,IN_SS In Varchar2)

      Return Varchar2 Is

      bcs varchar2(20);

      bcs1 number;

      cs number;

      jg number;

      m_gh VARCHAR2(4);

      m_mm VARCHAR2(20);

      Begin

      m_gh:=IN_GH;

      m_mm:=INPASS;

      cs:=TO_NUMBER(IN_SS);

      If cs<=1 then cs:=77 ;end if;

      bcs:=substr(to_char(ascii(substr(m_gh,1,1))),1,2);

      If bcs<‘1‘ then bcs:=‘7‘ ;end if;

      m_gh:=substr(m_gh,2);

      Loop EXIT WHEN nvl(length(m_gh),0)=0 ;

      bcs:=bcs||substr(to_char(ascii(substr(m_gh,1,1))),-1,1);

      m_gh:=substr(m_gh,2);

      End loop;

      Loop EXIT WHEN nvl(length(m_mm),0)=0 ;

      bcs:=bcs||substr(to_char(ascii(substr(m_mm,1,1))),-1,1);

      m_mm:=substr(m_mm,2);

      End loop;

      bcs1:=to_number(bcs);

      jg:=cs*bcs1;

      Loop EXIT WHEN length(to_char(jg))>13;

      jg:=jg*cs ;

      End loop;

      RETURN(IN_SS||substr(to_char(jg),1,14));

      End;

      /

      總結上面的東西,我們僅僅是從自身做起,知道了怎么維護Oracle數據庫安全這個話題的“皮毛”?墒,對于這個似乎永遠也說不完的話題,我們光知道怎么從內部“防御”就夠了嗎?不要忘了,在外面,還有一群虎視耽耽的“hacker”在盯著你的數據庫--因為這里面有他們想要的東西。

      所以,請大家關注好下一個話題:

      §2.不被“hacker”入侵的幾個建議

      我們的目標是:沒有蛀牙!(開個玩笑~!呵呵)其實應該是:它應盡可能地堵住潛在的各種漏洞,防止非法用戶利用它們侵入數據庫系統。對于數據庫數據的安全問題,數據庫管理員可以參考有關系統雙機熱備份功能以及數據庫的備份和恢復的資料。

      以下就數據庫系統不被非法用戶侵入這個問題作進一步的闡述。

      ·組和安全性:在操作系統下建立用戶組也是保證數據庫安全性的一種有效方法。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*forms等,應該可被這組執行,然后該這個實用例程的權限為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 在每一個表空間中,開發者所擁有的空間份額。應用程序管理者的安全在有許多數據庫應用程序的數據庫系統中,您可能需要一應用程序管理者,應用程序管理者應負責起以下的任務:

      a)為每一個應用程序創建角色以及管理每一個應用程序的角色;

      b)創建和管理數據庫應用程序使用的數據對象;

      c)需要的話,維護和更新應用程序代碼和Oracle的存儲過程和程序包。

      我相信有了以上的這些建議,作為一個Oracle的管理者絕對可以做好他本職的工作了?墒,我們再怎么努力,都始終得面對這樣一個現實,那就是Oracle畢竟是其他人開發的,而我們卻在使用。所以,Oracle到底有多少漏洞--我想這個不是你和我所能解決的。不過既然作為一篇討論Oracle數據安全的文章,我認為有必要把漏洞這一塊也寫進去,畢竟這也是“安全”必不可少的一部分。呵呵!

      所以……

      【Oracle漏洞舉例】:

      ·Oracle9iAS Web Cache遠程拒絕服務攻擊漏洞(2002-10-28)

      ·Oracle 8.1.6的oidldapd中的漏洞

      ·Oracle 9iAS OracleJSP 泄漏JSP文件信息漏洞

      ·Linux ORACLE 8.1.5漏洞

      想必我沒有理由再往下舉了,因為讀者肯定已經從其他有效的途徑得到了關于Oracle漏洞的最新情報。我這里就不再贅述了。

      總而言之一句話--“Oracle數據安全是一個博大而又精深的話題;如果你沒有耐心,就永遠不會得到它的精髓之所在!

    文章來源于領測軟件測試網 http://www.kjueaiud.com/

    33/3<123

    關于領測軟件測試網 | 領測軟件測試網合作伙伴 | 廣告服務 | 投稿指南 | 聯系我們 | 網站地圖 | 友情鏈接
    版權所有(C) 2003-2010 TestAge(領測軟件測試網)|領測國際科技(北京)有限公司|軟件測試工程師培訓網 All Rights Reserved
    北京市海淀區中關村南大街9號北京理工科技大廈1402室 京ICP備10010545號-5
    技術支持和業務聯系:info@testage.com.cn 電話:010-51297073

    軟件測試 | 領測國際ISTQBISTQB官網TMMiTMMi認證國際軟件測試工程師認證領測軟件測試網

    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>