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