熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Oracle >> 正文

ORACLE入門之數據庫安全策略

2022-06-13   來源: Oracle 

  數據庫安全性問題一直是圍繞著數據庫管理員的惡夢數據庫數據的丟失以及數據庫被非法用戶的侵入使得數據庫管理員身心疲憊不堪本文圍繞數據庫的安全性問題提出了一些安全性策略希望對數據庫管理員有所幫助不再夜夜惡夢
  數據庫安全性問題應包括兩個部分
  一數據庫數據的安全
  它應能確保當數據庫系統DownTime時當數據庫數據存儲媒體被破壞時以及當數據庫用戶誤操作時數據庫數據信息不至於丟失
  二數據庫系統不被非法用戶侵入
  它應盡可能地堵住潛在的各種漏洞防止非法用戶利用它們侵入數據庫系統
  對於數據庫數據的安全問題數據庫管理員可以參考有關系統雙機熱備份功能以及數據庫的備份和恢復的資料
  以下就數據庫系統不被非法用戶侵入這個問題作進一步的闡述
  組和安全性
  在操作系統下建立用戶組也是保證數據庫安全性的一種有效方法Oracle程序為了安全性目的一般分為兩類一類所有的用戶都可執行另一類只DBA可執行在Unix環境下組設置的配置文件是/etc/group關於這個文件如何配置請參閱Unix的有關手冊以下是
  保證安全性的幾種方法
  () 在安裝Oracle Server前創建數據庫管理員組(DBA)而且分配root和Oracle軟件擁有者的用戶ID給這個組DBA能執行的程序只有權限在安裝過程中SQL*DBA系統權限命令被自動分配給DBA組
  () 允許一部分Unix用戶有限制地訪問Oracle服務器系統增加一個由授權用戶組成的Oracle組確保給Oracle服務器實用例程Oracle組ID公用的可執行程序比如SQL*PlusSQL*Forms等應該可被這組執行然後該這個實用例程的權限為它將允許同組的用戶執行而其他用戶不能
  () 改那些不會影響數據庫安全性的程序的權限為
  注在我們的系統中為了安裝和調試的方便Oracle數據庫中的兩個具有DBA權限的用戶Sys和System的缺省密碼是manager為了您數據庫系統的安全我們強烈建議您該掉這兩個用戶的密碼具體操作如下
  在SQL*DBA下鍵入
  alter user sys indentified by password;
  alter user system indentified by password;
  其中password為您為用戶設置的密碼
  Oracle服務器實用例程的安全性
  以下是保護Oracle服務器不被非法用戶使用的幾條建議
  () 確保$ORACLE_HOME/bin目錄下的所有程序的擁有權歸Oracle軟件擁有者所有
  () 給所有用戶實用便程(sqiplussqiformsexpimp等)權限使服務器上所有的用戶都可訪問Oracle服務器
  () 給所有的DBA實用例程(比如SQL*DBA)權限
  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::jimnarryscott
  ora_test_osdba_a:NONE::pat
  ora_test_role:NONE::bobjanetommaryjim
  bin:
  NONE::rootoracledba
  root:NONE::root
  詞組ora_test_osoper_d表示組的名字詞組NONE表示這個組的密碼數字表示這個組的ID接下來的是這個組的成員前兩行是Oracle服務器角色的例子使用test作為sidosoper和osdba作為Oracle服務器角色的名字osoper是分配給用戶的缺省角色osdba帶有WITH ADMIN選項為了使這些數據庫角色起作用您必須shutdown您的數據庫系統設置Oracle數據庫參數文件initORACLE_SIDora中os_roles參數為True然後重新啟動您的數據庫如果您想讓這些角色有connect internal權限運行orapwd為這些角色設置密碼當您
  嘗試connect internal時您鍵入的密碼表示了角色所對應的權限
  SQL*DBA命令的安全性
  如果您沒有SQL*PLUS應用程序您也可以使用SQL*DBA作SQL查權限相關的命令只能分配給Oracle軟件擁有者和DBA組的用戶因為這些命令被授予了特殊的系統權限
  () startup
  () shutdown
  () connect internal
  數據庫文件的安全性
  Oracle軟件的擁有者應該這些數據庫文件($ORACLE_HOME/dbs/*dbf)
  設置這些文件的使用權限為文件的擁有者可讀可寫同組的和其他組的用戶沒有寫的權限
  Oracle軟件的擁有者應該擁有包含數據庫文件的目錄為了增加安全性建議收回同組和其他組用戶對這些文件的可讀權限
  網絡安全性
  當處理網絡安全性時以下是額外要考慮的幾個問題
  () 在網絡上使用密碼
  在網上的遠端用戶可以通過加密或不加密方式鍵入密碼當您用不加密方式鍵入密碼時您的密碼很有可能被非法用戶截獲導致破壞了系統的安全性
  () 網絡上的DBA權限控制
  您可以通過下列兩種方式對網絡上的DBA權限進行控制
  A 設置成拒絕遠程DBA訪問
  B 通過orapwd給DBA設置特殊的密碼
  建立安全性策略
  系統安全性策略
  () 管理數據庫用戶
  數據庫用戶是訪問Oracle數據庫信息的途徑因此應該很好地維護管理數據庫用戶的安全性按照數據庫系統的大小和管理數據庫用戶所需的工作量數據庫安全性管理者可能只是擁有createalter或drop數據庫用戶的一個特殊用戶或者是擁有
  這些權限的一組用戶應注意的是只有那些值得信任的個人才應該有管理數據庫用戶的權限
  () 用戶身份確認
  數據庫用戶可以通過操作系統網絡服務或數據庫進行身份確認通過主機操作系統進行用戶身份認證的優點有
  A 用戶能更快更方便地聯入數據庫
  B 通過操作系統對用戶身份確認進行集中控制如果操作系統與數據庫用戶信息一致那麼Oracle無須存儲和管理用戶名以及密碼
  C 用戶進入數據庫和操作系統審計信息一致
  () 操作系統安全性
  A 數據庫管理員必須有create和delete文件的操作系統權限
  B 一般數據庫用戶不應該有create或delete與數據庫相關文件的操作系統權限
  C 如果操作系統能為數據庫用戶分配角色那麼安全性管理者必須有修改操作系統帳戶安全性區域的操作系統權限
  數據的安全性策略
  數據的生考慮應基於數據的重要性如果數據不是很重要那麼數據的安全性策略可以稍稍放松一些然而如果數據很重要那麼應該有一謹慎的安全性策略用它來維護對數據對象訪問的有效控制
  用戶安全性策略
  () 一般用戶的安全性
  A 密碼的安全性
  如果用戶是通過數據庫進行用戶身份的確認那麼建議使用密碼加密的方式與數據庫進行連接這種方式的設置方法如下
  在客戶端的oracleini文件中設置ora_encrypt_login數為true
  在服務器端的initORACLE_SIDora文件中設置dbling_encypt_login參數為true
  B 權限管理
  對於那些用戶很多應用程序和數據對象很豐富的數據庫應充分利用角色這個機制所帶的方便性對權限進行有效管理對於復雜的系統環境角色能大大地簡化權限的管理
  () 終端用戶的安全性
  您必須針對終端用戶制定安全性策略例如對於一個有很多用戶的大規模數據庫安全性管理者可以決定用戶組分類為這些用戶組創建用戶角色把所需的權限和應用程序角色授予每一個用戶角色以及為用戶分配相應的用戶角色當處理特殊的應
  用要求時安全性管理者也必須明確地把一些特定的權限要求授予給用戶
  您可以使用角色對終端用戶進行權限管理
  數據庫管理者安全性策略
  () 保護作為sys和system用戶的連接
  當數據庫創建好以後立即更改有管理權限的sys和system用戶的密碼防止非法用戶訪問數據庫當作為sys和system用戶連入數據庫後用戶有強大的權限用各種方式對數據庫進行改動改動sys和system用戶的密碼的方法可參看前面的相關部分
  () 保護管理者與數據庫的連接
  應該只有數據庫管理者能用管理權限連入數據庫當以sysdba或startupshutdown和recover或數據庫對象(例如createdrop和delete等)進行沒有任何限制的操作
  () 使用角色對管理者權限進行管理
  應用程序開發者的安全性策略
  () 應用程序開發者和他們的權限
  數據庫應用程序開發者是唯一一類需要特殊權限組完成自己工作的數據庫用戶開發者需要諸如create tablecreate procedure等系統權限然而為了限制開發者對數據庫的操作只應該把一些特定的系統權限授予開發者
  () 應用程序開發者的環境
  A 程序開發者不應與終端用戶競爭數據庫資源
  B 用程序開發者不能損害數據庫其他應用產品
  () free和controlled應用程序開發
  應用程序開發者有一下兩種權限
  A free development
  應用程序開發者允許創建新的模式對象包括tableindexprocedurepackage等它允許應用程序開發者開發獨立於其他對象的應用程序
  B controlled development
  應用程序開發者不允許創建新的模式對象所有需要tableindes procedure等都由數據庫管理者創建它保證了數據庫管理者能完全控制數據空間的使用以及訪問數據庫信息的途徑
  但有時應用程序開發者也需這兩種權限的混和
  () 應用程序開發者的角色和權限

From:http://tw.wingwit.com/Article/program/Oracle/201311/16746.html
    推薦文章
    Copyright © 2005-2022 電腦知識網 Computer Knowledge   All rights reserved.