oracle資料庫安全
㈠ 如何保證oracle資料庫的安全性
資料庫安全性問題一直是圍繞著資料庫管理員的惡夢,資料庫數據的丟失
以及資料庫被非法用戶的侵入使得資料庫管理員身心疲憊不堪。本文圍繞數據
庫的安全性問題提出了一些安全性策略,希望對資料庫管理員有所幫助,不再
夜夜惡夢。資料庫安全性問題應包括兩個部分:
一、資料庫數據的安全
它應能確保當資料庫系統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
procere等系統許可權,然而,為了限制開發者對資料庫的操作,
只應該把一些特定的系統許可權授予開發者。
(2) 應用程序開發者的環境
A 程序開發者不應與終端用戶競爭資料庫資源;
B 用程序開發者不能損害資料庫其他應用產品。
(3) free和controlled應用程序開發
應用程序開發者有一下兩種許可權:
A free development
應用程序開發者允許創建新的模式對象,包括table,index,
procere,package等,它允許應用程序開發者開發獨立於其
他對象的應用程序。
B controlled development
應用程序開發者不允許創建新的模式對象。所有需要table,
indes procere等都由資料庫管理者創建,它保證了數據
庫管理者能完全控制數據空間的使用以及訪問資料庫信息的
途徑。但有時應用程序開發者也需這兩種許可權的混和。
(4) 應用程序開發者的角色和許可權
資料庫安全性管理者能創建角色來管理典型的應用程序開
發者的許可權要求。
A create系統許可權常常授予給應用程序開發者,以到於
他們能創建他的數據對象。
B 數據對象角色幾乎不會授予給應用程序開發者使用的
角色。
(5) 加強應用程序開發者的空間限制
作為資料庫安全性管理者,您應該特別地為每個應用程
序開發者設置以下的一些限制:
A 開發者可以創建table或index的表空間;
B 在每一個表空間中,開發者所擁有的空間份額。應用程
序管理者的安全在有許多資料庫應用程序的資料庫系統
中,您可能需要一應用程序管理者,應用程序管理者應
負責以下的任務:
C 為每一個應用程序創建角色以及管理每一個應用程序
的角色;
D 創建和管理資料庫應用程序使用的數據對象;
E 需要的話,維護和更新應用程序代碼和Oracle的存儲
過程和程序包。
㈡ Oracle資料庫提供的安全性措施有哪些
Oracle的安全措施主要有三個方面,一是用戶標識和鑒定;二是授權和檢查機制;三是審計技術(是否使用審計技術可由用戶靈活選擇);除此之外,Oracle還允許用戶通過觸發器靈活定義自己的安全性措施。
一、用戶標識和鑒定
在Oracle中,最外層的安全性措施是讓用戶標識自己的名字,然後由系統進行核實。Oracle允許用戶重復標識三次,如果三次未通過,系統自動退出。
二、授權與檢查機制
Oracle的許可權包括系統許可權和資料庫對象的許可權兩類,採用非集中的授權機制,即DBA負責授予與回收系統許可權,每個用戶授予與回收自己創建的資料庫對象的許可權。
Oracle允許重復授權,即可將某一許可權多次授予同一用戶,系統不會出錯。Oracle也允許無效回收,即用戶沒有某種許可權,但回收此許可權的操作仍算成功。
1. 系統許可權
Oracle提供了80多種系統許可權,如創建會話、創建表、創建視圖、創建用戶等。DBA在創建一個用戶時需要將其中的一些許可權授予該用戶。
Oracle支持角色的概念。所謂角色就是一組系統許可權的集合,目的在於簡化許可權管理。Oracle除允許DBA定義角色外,還提供了預定義的角色,如CONNECT,RESOURCE和DBA。
具有CONNECT角色的用戶可以登錄資料庫,執行數據查詢和操縱。即可以執行ALTER TABLE,CREATE VIEW,CREATE INDEX,DROP TABLE,DROP VIEW,DROP INDEX,GRANT,REVOKE,INSERT,SELECT,UPDATE,DELETE,AUDIT,NOAUDIT等操作。
RESOURCE角色可以創建表,即執行CREATE TABLE操作。創建表的用戶將擁有對該表的所有許可權。
DBA角色可以執行某些授權命令,創建表,對任何錶的數據進行操縱。它涵蓋了前兩種角色,此外還可以執行一些管理操作,DBA角色擁有最高級別的許可權。
例如DBA建立一用戶U1後,欲將ALTER TABLE,CREATE VIEW,CREATE INDEX,DROP TABLE,DROP VIEW,DROP INDEX,GRANT,REVOKE,INSERT,SELECT,UPDATE,DELETE,AUDIT,NOAUDIT等系統許可權授予U1,則可以只簡單地將CONNECT角色授予U1即可:
GRANT CONNECT TO U1;
這樣就可以省略十幾條GRANT語句。
2. 資料庫對象的許可權
在Oracle中,可以授權的資料庫對象包括基本表、視圖、序列、同義詞、存儲過程、函數等,其中最重要的是基本表。
對於基本表Oracle支持三個級別的安全性:表級、行級和列級。
(1)表級安全性
表的創建者或者DBA可以把表級許可權授予其他用戶,表級許可權包括:
ALTER:修改表定義
DELETE:刪除表記錄
INDEX:在表上建索引
INSERT:向表中插入數據記錄
SELECT:查找表中記錄
UPDATE:修改表中的數據
ALL:上述所有許可權
表級授權使用GRANT和REVOKE語句。
(2)行級安全性
Oracle行級安全性由視圖實現。用視圖定義表的水平子集,限定用戶在視圖上的操作,就為表的行級提供了保護。視圖上的授權與回收與表級完全相同。
例如,只允許用戶U2查看Student表中信息系學生的數據,則首先創建信息系學生的視圖S_IS,然後將該視圖的SELECT許可權授予U2用戶。
㈢ 如何消除Oracle資料庫的安全隱患
但由於計算機軟、硬體故障、口令泄密、黑客攻擊等等因素,都可導致資料庫系統不能正常運轉,造成大量數據信息丟失,數據被惡意篡改,甚至使資料庫系統崩潰。忽視Oracle資料庫的安全問題,必將給用戶帶來巨大的損失。如何保證資料庫的安全運行是資料庫管理員日常工作中的首要問題。下面提出幾條防範措施供大家參考:一、用戶角色的管理與口令保密 這是保護資料庫系統安全的重要手段之一。它通過建立不同的用戶組和用戶口令驗證,可以有效地防止非法的Oracle用戶進入資料庫系統,造成不必要的麻煩和損壞;另外在Oracle資料庫中,可以通過授權來對Oracle用戶的操作進行限制,即允許一些用戶可以對Oracle伺服器進行訪問,也就是說對整個資料庫具有讀寫的權利,而大多數用戶只能在同組內進行讀寫或對整個資料庫只具有讀的權利。在此,特別強調對SYS和SYSTEM兩個特殊賬戶的保密管理。Oracle的資料庫管理員都知道,資料庫系統典型安裝後,一般sys和system以及internal這三個用戶具有默認的口令,資料庫安裝成功後,系統管理員作的第一件工作就是修改這些用戶的口令,保證資料庫的安全性。 為了加強資料庫在網路中的安全性,對於遠程用戶,應使用加密方式通過密碼來訪問資料庫,加強網路上的DBA許可權控制,如拒絕遠程的DBA訪問等。
二、數據保護 資料庫的數據保護主要是資料庫的備份,當計算機的軟硬體發生故障時,利用備份進行資料庫恢復,以恢復破壞的資料庫文件或控制文件或其他文件。
㈣ 如何對Oracle資料庫進行安全管理
對於Oracle資料庫管理: Oracle自帶的套件里有pl/sql plus,基於命令行的;企業管理器,基於GUI/WEB UI(在11g中)的。 第三方工具有pl/sql Developer,容易上手,但不能完成一些非常底層的管理功能;Toad for oracle,功能比前者強大些,使用起來...
㈤ oracle資料庫的安全控制機制有哪些
Oracle資料庫的安全機制有:用戶管理、許可權管理、角色管理、概要文件管理、審計、表空間設置和配額管理、用戶資源限制等
㈥ Oracle資料庫安全性中的問題有哪些
網站資料庫的安全問題主要是由哪些因素引起的呢?這一個問題其實和資料庫存的安全問題差不多, 據CVE的數據安全漏洞統計,Oracle、SQL Server、MySQL等主流資料庫的漏洞逐年上升,以Oracle為例,當前漏洞總數已經超過了1200多個。
㈦ 如何搭建一個穩定可靠,安全的Oracle資料庫體系
Oracle資料庫的體系結構 Oracle資料庫包括Oracle資料庫伺服器和客戶端。 Oracle資料庫伺服器: Oracle Server是一個對象一關系資料庫管理系統。它提供開放的、全面的、和集成的信息管理方法。每個Server由一個 Oracle DB和一個 Oracle Server實...
㈧ Oracle資料庫安全性設計大家給點建議
Oracle資料庫本身的安全性建設
從總體上而言,Oracle資料庫是業界安全性方面最完備的資料庫產品。在資料庫安全性的國際標准中,Oracle通過了14項標準的測試,是所有資料庫產品中通過安全性標准最多、最全面的產品。Oracle在C2級的操作系統上(如商用UNIX,VMS操作系統),不僅滿足NCSC C2級安全標准,而且已經正式通過了NCSC C2標準的測試。在B1級的操作系統上不僅滿足NCSC B1級安全標准,而且已經通過了NCSC B1級標準的測試。
Oracle提供的主要安全性措施如下:
�8�9 身份認證功能(Authentication):識別訪問個體的身份
�8�9 數據訪問的機密性(Confidentialty):保證敏感數據訪問的機密性。
�8�9 數據完整性(Integrity):保證數據不被篡改。
�8�9 授權能力(Authorization):保證被授權用戶對數據的查詢和修改能力。
�8�9 訪問控制(Access Control):確定對指定數據的訪問能力。
�8�9 審計能力(Auditing):提供監測用戶行為的能力。
�8�9 私有性(Privacy):提供對敏感數據訪問的私密性。
�8�9 高可用性(Availability):保證數據和系統提供不間斷服務的能力。
�8�9 代理管理能力(Delegated Administration):提供對用戶帳號的集中管理功能。
下面將就應用系統本身對於Oracle提供的安全性措施作更深入的探討。
$PageTitle= Oracle的安全性領域}
三、 Oracle的安全性領域
�8�5 Profile控制
Oracle利用profile機制來管理會話資源佔用,同時也管理用戶密碼的安全策略。
通過profile我們可以實現:
某個特定用戶最多隻能佔用系統百分之幾的CPU時間?
某個特定用戶連接到資料庫之後能存活多長時間?
某個特定用戶連接到資料庫之後多長時間處於非活躍狀態就將被系統中斷連接?
用戶登錄密碼輸入錯誤多少次之後就將自動鎖定用戶?
用戶密碼的長度和包含的字元必須符合什麼樣的規則?
用戶密碼在多少天後將自動失效並要求設定新密碼?
�8�5 用戶許可權控制 (Privilage)
Oracle通過角色(Role),許可權(Privilage)等的一系列授予(Grant)和回收(Revoke)操作可以有效的進行用戶的許可權控制。
通過許可權控制我們可以實現:
某個特定用戶只能讀取而不能修改另一個用戶的表數據。
某個特定用戶只能運行Oracle資料庫系統的幾個存儲過程或者函數。
某個特定用戶自己能夠擁有修改某些數據的權力,但是卻無法給其它不擁有這個許可權的用戶授予修改該數據的權力。
某個特定用戶可以讀取數據但是無法創建新的表空間。
�8�5 虛擬專用資料庫(VPD)
虛擬專用資料庫 (VPD) 也稱為細粒度訪問控制,它提供強大的行級安全功能。它是在 Oracle8i 中推出的,已經受到廣泛的歡迎。
VPD 的工作方法是,通過透明地更改對數據的請求,基於一系列定義的標准向用戶提供表的局部視圖。在運行時,所有查詢都附加了謂詞,以便篩選出准許用戶看到的行。
也就是通過VPD的設置,我們可以做到行級安全性控制,特定的用戶即使對一張表有讀取許可權,那麼也只能看到符合自身許可權的記錄。
注意,在Oracle10g版本中,VPD得到增強,已經可以實現欄位級的安全性控制了。
實例及搭建步驟參看:利用VPD細粒度訪問策略實現行級安全性 Step By Step
�8�5 Orace Label Security
基於對由客戶提交的行級安全性的嚴格要求,Oracle Label Security(Oracle 資料庫企業版的選件之一)利用多級安全性概念解決了世界上政府和商業用戶在實際中遇到的數據安全和隱私問題。
OLS 通過利用數據敏感度標簽(例如「敏感」和「公司機密」)與用戶標簽授權,提供了完善的行級安全性控制。
OLS 使用政策概念來存儲標簽定義和授權。該政策可直接在資料庫中進行管理,或在 Oracle 身份管理中進行集中管理。
�8�5 Oracle Database Valut
通常資料庫管理員如果具有了DBA許可權,那麼就很難防止這樣的管理員查看應用程序數據。而Oracle Database Valut則解決了必須保護涉及合作夥伴、員工和顧客的敏感業務信息或隱私數據的客戶最為擔心的問題。
Oracle Database Vault 可防止高許可權的應用程序 DBA 訪問其他的應用程序、執行其許可權之外的任務。Oracle Database Vault 可在不影響應用程序功能的前提下快速而高效地保護現有程序。
Oracle Database Vault 可通過下列方法解決一些最為常見的安全問題和內部威脅:
1. 限制 DBA 和其他授權用戶訪問應用程序數據。
2. 防止DBA 操縱資料庫和訪問其他應用程序。Oracle Database Vault 提供了強大的職責劃分控制功能,可防止擅自更改資料庫。比如說如果一個用戶具有 CREATE USER 許可權,但不具備正確的用戶管理許可權,則 Oracle Database Vault 將阻止該 DBA 創建新用戶。
3. 更好的控制何人、何時、何地可以訪問應用程序。如日期時間、資料庫客戶端在網路上的位置之類的因素。
Oracle Database Valut是新的Oracle Database 10g企業版的選件。目前已經有Linux X86以及Solaris SPARC 64bit的版本可以下載使用了。
�8�5 用戶訪問審計
審計是Oracle安全性的另一個重要領域,我們還必須小心地計劃審計方案。有幾種方式可在Oracle中進行審計:
1. SQL審計命令(標准審計)
通過AUDIT語句我們可以對成功或者不成功的特定對象的讀取,更新操作進行審計。
標准審計只會記錄較少的跟蹤信息,比如發出該語句的用戶、時間、終端標識號等等。
該審計對於系統性能的影響更多地取決於對象的繁忙程度。
2. 用對象觸發器進行審計(也就是DML審計)
此類審計通常由客戶自行開發放置於特定資料庫對象上的觸發器,由於是自行開發,所以相對於標准審計則能夠更自由地記錄更多感興趣的跟蹤信息。比如更新操作將某個欄位從什麼原始值更新到了什麼新值。
該審計對於系統性能的影響更多地取決於對象的繁忙程度和觸發器的編寫水平。
3. 用系統級觸發器進行審計(記錄用戶登錄和退出)
當用戶登錄資料庫或者離開資料庫時,都可以通過自定義的觸發器來記錄用戶名稱,操作時間,終端標識號等信息。
由於觸發器觸發幾率小,所以該審計對於系統性能影響並不大。
4. 用LogMiner進行審計(也就是DML和DDL)
Oracle資料庫將所有的更新操作都記錄在重作日誌中,而Oracle提供了LogMiner工具用於挖掘重作日誌中的所有操作,相比起上述的各種審計方法來說,該種審計可能是信息最為完善,對於應用系統性能影響最小的方法。
此處稍微延展開來說一下,LogMiner是雙刃劍,既然可以用來審計,也就能夠被惡意使用作為數據竊取的工具。所以在數據本身的加密方面,Oracle同樣提供了多種解決方案,比如DBMS_OBFUSCATION_TOOLKIT,DBMS_CRYPTO和最新的透明數據加密,甚至在數據備份方面 Oracle也推出了Secure Backup來應對磁帶數據的加密,但是要注意到數據加密不應用作訪問控制的替代項,存儲加密的數據並不會在存儲介質本身提供額外的保護層,只是有助於在發生介質遭竊時保護諸如信用卡號之類的敏感數據。本文不再作更多的介紹。
5. 細精度審計(FGA)
細粒度審計 (FGA),是在 Oracle 9i 中引入的,能夠記錄 SCN 號和行級的更改以重建舊的數據,但是它們只能用於 select 語句,而不能用於 DML,如 update、insert 和 delete 語句。因此,對於 Oracle 資料庫 10g 之前的版本,使用觸發器雖然對於以行級跟蹤用戶初始的更改是沒有吸引力的選擇,但它也是唯一可靠的方法。
而Oracle10g種FGA功能的增強使其不但能夠支持select操作,同時也支持DML操作。在 Oracle 10g 中,審計已經從一個單純的「操作記錄者」成長為一個「事實記錄機制」,它能以一個非常詳細的級別來捕獲用戶的行為,這可以消除您對手動的、基於觸發器的審計的需要。它還結合了標准審計和 FGA 的跟蹤,這使其更易於跟蹤資料庫訪問,而不用考慮它是如何生成的。
通過細粒度審計我們可以記錄:
在早上九點到下午六點之間或在星期六和星期日對某個表進行了訪問。
使用了公司網路外部的某個 IP 地址。
選定或更新了特定列。
使用了該列的特定值。
㈨ 簡述oracle安全加固從哪幾個方面入手加固
1.安全加固的檢查方向
2.安全加固檢查safeCheck.sh
3.安全加固執行safeExec.sh
1.安全加固的檢查方向
1.1.sysdba用戶遠程登錄限制(查看Oracle登錄認證方式)
檢查:
show parameter remote_login_passwordfile
整改:
alter system set remote_login_passwordfile = NONE scope=spfile;
註:需要重啟庫生效。
1.2.是否開啟了資源限制
show parameter resource_limit
alter system set resource_limit = true;
1.3.登錄失敗的帳號鎖定策略
select * from dba_profiles order by 1;
關注FAILED_LOGIN_ATTEMPTS的設定值
1.4.資料庫用戶帳號檢查
檢查:
select username,profile from dba_users where account_status='OPEN';
整改:
鎖定用戶:alter user <用戶名> lock;
刪除用戶:drop user <用戶名> cascade;
1.5.範例資料庫帳號
是否存在默認的範例資料庫賬號scott等,可以考慮刪除scott賬號
1.6.dba許可權賬戶檢查
select username,profile from dba_users where account_status='OPEN';
1.7.資料庫賬戶口令加密存儲
11g數據裡面的賬戶口令本來就是加密存儲的。
1.8.資料庫密碼安全性校驗函數
select limit from dba_profiles where profile='DEFAULT' and resource_name='PASSWORD_VERIFY_FUNCTION';
1.9.設定信任IP集
只需在伺服器上的文件$ORACLE_HOME/network/admin/sqlnet.ora中設置以下行:
tcp.validnode_checking = yes
tcp.invited_nodes = (ip1,ip2…)
1.10.超時的空閑遠程連接是否自動斷開
根據實際需要設置合適的數值。
在$ORACLE_HOME/network/admin/sqlnet.ora中設置下面參數:
SQLNET.EXPIRE_TIME=10
2.安全加固檢查safeCheck.sh
#!/bin/bash
#name:safeCheck.sh
#function:to create a safe check report.
#usage: oracle用戶登錄,執行 sh safeCheck.sh > /tmp/safeCheck.log
#logon database
sqlplus -S / as sysdba <<EOF
--format
prompt ============================
prompt == format
prompt ============================
prompt
set linesize 140 pagesize 50
col username for a30
col profile for a30
col resource_name for a30
col limit for a30
--check
prompt ============================
prompt == 1.sysdba用戶遠程登錄限制
prompt ============================
prompt
show parameter remote_login_passwordfile
prompt 結果應為none.
prompt ======================
prompt == 2.resource_limit
prompt ======================
prompt
show parameter resource_limit
prompt 結果應為true.
prompt ===========================
prompt == 3.登錄失敗的帳號鎖定策略
prompt ===========================
prompt
select * from dba_profiles order by 1;
prompt 關注FAILED_LOGIN_ATTEMPTS參數
prompt ===========================
prompt == 4.資料庫用戶帳號檢查
prompt ===========================
prompt
select username,profile from dba_users where account_status='OPEN';
prompt 正常使用的用戶列表
prompt ==========================
prompt == 5.範例資料庫帳號
prompt ==========================
prompt
select * from all_users order by created;
prompt 關注有無示例賬戶scott
prompt ===========================
prompt == 6.dba許可權賬戶檢查
prompt ===========================
prompt
prompt ===========================
prompt == 7.資料庫賬戶口令加密存儲
prompt ===========================
prompt
prompt =============================
prompt == 8.資料庫密碼安全性校驗函數
prompt =============================
prompt
select limit from dba_profiles where profile='DEFAULT' and resource_name='PASSWORD_VERIFY_FUNCTION';
prompt 結果應該不為null
--logoff database
EOF
# check the files
echo ===================
echo == 9.設定信任IP集
echo ===================
echo
more $ORACLE_HOME/network/admin/sqlnet.ora
#添加如下
#tcp.validnode_checking = yes
#tcp.invited_nodes = (ip1,ip2…)
echo ===================================
echo == 10.超時的空閑遠程連接是否自動斷開
echo ===================================
echo
#根據實際需要設置合適的數值。
more $ORACLE_HOME/network/admin/sqlnet.ora
#添加如下一行
#SQLNET.EXPIRE_TIME=10
3.安全加固執行safeExec.sh
#!/bin/bash
#name:safeExec.sh
#function:to execute the script for safe.
#usage: oracle用戶登錄,執行 sh safeExec.sh > /tmp/safeExec.log
#logon database
sqlplus -S / as sysdba <<EOF
--format
prompt ============================
prompt == format
prompt ============================
set linesize 140 pagesize 50
col username for a30
col profile for a30
col resource_name for a30
col limit for a30
--execute
prompt ============================
prompt == 1.sysdba用戶遠程登錄限制
prompt ============================
alter system set remote_login_passwordfile=none scope=spfile;
prompt ======================
prompt == 2.resource_limit
prompt ======================
alter system set resource_limit=true;
prompt ===========================
prompt == 3.登錄失敗的帳號鎖定策略
prompt ===========================
alter profile default limit FAILED_LOGIN_ATTEMPTS 10;
prompt ===========================
prompt == 4.資料庫用戶帳號檢查
prompt ===========================
--select username,profile from dba_users where account_status='OPEN';
prompt I think I have nothing to do in this step.
prompt ===========================
prompt == 5.範例資料庫帳號
prompt ===========================
prompt 是否刪除範例scott用戶?
--drop user scott cascade;
prompt ===========================
prompt == 6.dba許可權賬戶檢查
prompt ===========================
prompt I think I have nothing to do in this step.
prompt ===========================
prompt == 7.資料庫賬戶口令加密存儲
prompt ===========================
prompt 11g版本,資料庫層面就是加密的嘛~
prompt =============================
prompt == 8.資料庫密碼安全性校驗函數
prompt =============================
prompt 執行創建安全性校驗函數的腳本
@?/rdbms/admin/utlpwdmg.sql
--logoff database
EOF
# check the files
echo ===================
echo == 9.設定信任IP集
echo ===================
more $ORACLE_HOME/network/admin/sqlnet.ora
#添加如下
#tcp.validnode_checking = yes
#tcp.invited_nodes = (ip1,ip2…)
echo ===================================
echo == 10.超時的空閑遠程連接是否自動斷開
echo ===================================
#根據實際需要設置合適的數值。
more $ORACLE_HOME/network/admin/sqlnet.ora
#添加如下一行
#SQLNET.EXPIRE_TIME=10
針對第9和第10步驟中的sqlnet.ora配置文件示例:
注意如果是ASM實例,sqlnet.ora配置文件是grid用戶下$ORACLE_HOME/network/admin/sqlnet.ora的。
SQLNET.EXPIRE_TIME=10
tcp.validnode_checking = yes
tcp.invited_nodes = (192.168.99.*)