在ORACLE中利用角色增強應用系統安全性(轉)
在ORACLE中利用角色增強應用系統安全性[@more@]----資料安全性是指保護資料以防止非法的使用,避免造成資料有意或無意的丟失、洩露或破壞。由於資料庫系統中集中存放有大量的資料,這些資料又為眾多使用者所共享,所以安全約束是一個極為突出的問題。
----ORACLE資料庫系統在實現資料庫安全性管理方面採取的基本措施有:
透過驗證使用者名稱稱和口令,防止非ORACLE使用者註冊到ORACLE資料庫,對資料庫進行非法存取操作。
授予使用者一定的許可權,例如CONNECT,RESOURCE等,限制使用者操縱資料庫的權力。
授予使用者對資料庫實體(如表、表空間、過程等)的存取執行許可權,阻止使用者訪問非授權資料。
提供資料庫實體存取審計機制,使資料庫管理員可以監視資料庫中資料的存取情況和系統資源的使用情況。
採用檢視機制,限制存取基表的行和列集合。
----在實際應用中,許多系統往往採用假使用者(即非資料庫使用者)身份來管理,而真實使用者的身份和登入口令就隱藏在應用系統中,或經過各種壓縮加密等處理的配置檔案中。但這樣往往留下隱患,只要從分析應用程式入手,最終會分析出系統使用的資料庫使用者和口令,那麼其安全性也就消失了。另一方面,系統程式碼是程式設計師寫出來的,如果程式設計師有破壞意圖,這種模式沒有一絲的安全,因為他透過自己掌握的程式碼不經分析就輕而易舉的獲得登入用的資料庫使用者和口令。
----而採用真實資料庫使用者,存在著許可權分配上的難度,特別是使用者數和應用表數都很多時,這時必然要使用角色來管理應用許可權的分配。當然不能直接將許可權或角色直接分配給使用者,否則使用者可以不同過應用系統,而採用SQL*PLUS等前端工具進入系統,進行一些沒有經過應用系統檢查的操作,產生的結果可能不符合應用邏輯。
----我們在實踐中發現,可以採用另一種方式利用角色功能,來防止上面出現的安全“漏洞”。在這種方式下,使用者採用自己的標識和口令註冊,但在未得到授權的角色前,是沒有操縱資料庫的任何許可權。而授權使用者使用的角色是埋在應用程式中的,只有應用程式才知道角色的名稱和口令,從而啟用角色,使使用者擁有相應的許可權。在應用系統之外,使用者可以連線到ORACLE,但沒有啟用相應的角色,他是不能做任何事情的,而開發人員不知道使用者的標識和口令,他沒有辦法登入到ORACLE,即使他能夠推算出角色的標識和口令。
----下面根據一個例子給出具體的實現過程:
----我們假設使用者xiaoli在工作中能夠對工資表account.paytable(account是表paytable的擁有者)有查詢和更新的許可權,而這些許可權我們不直接授予xiaoli,而是構造一個角色(比如考勤員checkerrole),這個角色恰好適合於xiaoli,再將角色授予xiaoli,但角色在啟用時需要口令,該口令不對xiaoli公開。每個使用者需要一個預設的角色,是使用者連線到ORACLE時的預設角色。這個角色只有CONNECT許可權,我們假為defaultrole。
----下面給出具體的操作SQL:
(1)設定各種角色,及其許可權
CREATE ROLE checkerrole IDENTIFIEDBYxm361001;
CREATE ROLE defaultrole IDENTIFIEDBYdefaultrole;
GRANTSELECT,UPDATEONaccount.paytableTOcheckerrole;
GRANTCONNECTTOdefaultrole;
(2)建立使用者
CREATEUSERxiaoliIDENTIFIEDBYxiaoli;
(3)授權
GRANTcheckerroleTOxiaoli;
GRANTdefaultroleTOxiaoli;
(4)設定使用者預設的角色
ALTERUSERxiaoliDEFAULTROLEdefaultrole;
(5)註冊過程
CONNECTxiaoli/xiaoli@oracle
此時使用者只有其預設角色的許可權。
(6)啟用角色
SETROLEcheckerroleIDENTIFIEDBYxm361001;
----操作成功後,xiaoli擁有checkerrole的許可權。
----這裡的角色和口令是固定的,在應用系統中可以由應用管理人員自行設定則更為方便安全。
----上面給出的是在SQL*PLUS下的操作過程,在實際中還是要與應用系統聯絡在一起。我們不討論使用者和角色的建立怎樣在應用開發語言中的實現過程,在這裡給出使用者登入時的POWERBUILDER程式碼,理解了這個例子,前者的實現也不難。
Transactiongtr_Oracle7
gtr_Oracle7=createTransaction
gtr_Oracle7.DBMS="O73"
gtr_Oracle7.database=""
gtr_Oracle7.UserID=ls_UserID
//透過對話方塊取得的使用者標識
gtr_Oracle7.DBPass=ls_Passwd
//透過對話方塊取得的使用者口令
gtr_Oracle7.LogID=ls_UserID
gtr_Oracle7.LogPass=ls_Passwd
gtr_Oracle7.ServerName="@oracle"
//在SQL*NET中建立的別名
gtr_Oracle7.DBParm=""
ConnectUsinggtr_Oracle7;
ifgtr_Orale7.sqlcode=-1then
MessageBox("錯誤","沒有註冊到資料庫系統!")
return-1
endif
//ls_Role和ls_RolePasswd為從配置檔案中
或透過其它途徑獲得的使用者的角色名和口令
ExecuteImmediate"SETROLE"+ls_Role+
"IDENTIFIEDBY"+ls_RolePasswd
Usinggtr_Oracle7;
Ifgtr_Oracle7.sqlcode<>0then
MessageBox("錯誤","沒有啟用相應的資料庫系統角色!")
DisconnectUsinggtr_Oracle7;
return-1
Endif
Return1//成功註冊並啟用角色!
----ORACLE資料庫系統在實現資料庫安全性管理方面採取的基本措施有:
透過驗證使用者名稱稱和口令,防止非ORACLE使用者註冊到ORACLE資料庫,對資料庫進行非法存取操作。
授予使用者一定的許可權,例如CONNECT,RESOURCE等,限制使用者操縱資料庫的權力。
授予使用者對資料庫實體(如表、表空間、過程等)的存取執行許可權,阻止使用者訪問非授權資料。
提供資料庫實體存取審計機制,使資料庫管理員可以監視資料庫中資料的存取情況和系統資源的使用情況。
採用檢視機制,限制存取基表的行和列集合。
----在實際應用中,許多系統往往採用假使用者(即非資料庫使用者)身份來管理,而真實使用者的身份和登入口令就隱藏在應用系統中,或經過各種壓縮加密等處理的配置檔案中。但這樣往往留下隱患,只要從分析應用程式入手,最終會分析出系統使用的資料庫使用者和口令,那麼其安全性也就消失了。另一方面,系統程式碼是程式設計師寫出來的,如果程式設計師有破壞意圖,這種模式沒有一絲的安全,因為他透過自己掌握的程式碼不經分析就輕而易舉的獲得登入用的資料庫使用者和口令。
----而採用真實資料庫使用者,存在著許可權分配上的難度,特別是使用者數和應用表數都很多時,這時必然要使用角色來管理應用許可權的分配。當然不能直接將許可權或角色直接分配給使用者,否則使用者可以不同過應用系統,而採用SQL*PLUS等前端工具進入系統,進行一些沒有經過應用系統檢查的操作,產生的結果可能不符合應用邏輯。
----我們在實踐中發現,可以採用另一種方式利用角色功能,來防止上面出現的安全“漏洞”。在這種方式下,使用者採用自己的標識和口令註冊,但在未得到授權的角色前,是沒有操縱資料庫的任何許可權。而授權使用者使用的角色是埋在應用程式中的,只有應用程式才知道角色的名稱和口令,從而啟用角色,使使用者擁有相應的許可權。在應用系統之外,使用者可以連線到ORACLE,但沒有啟用相應的角色,他是不能做任何事情的,而開發人員不知道使用者的標識和口令,他沒有辦法登入到ORACLE,即使他能夠推算出角色的標識和口令。
----下面根據一個例子給出具體的實現過程:
----我們假設使用者xiaoli在工作中能夠對工資表account.paytable(account是表paytable的擁有者)有查詢和更新的許可權,而這些許可權我們不直接授予xiaoli,而是構造一個角色(比如考勤員checkerrole),這個角色恰好適合於xiaoli,再將角色授予xiaoli,但角色在啟用時需要口令,該口令不對xiaoli公開。每個使用者需要一個預設的角色,是使用者連線到ORACLE時的預設角色。這個角色只有CONNECT許可權,我們假為defaultrole。
----下面給出具體的操作SQL:
(1)設定各種角色,及其許可權
CREATE ROLE checkerrole IDENTIFIEDBYxm361001;
CREATE ROLE defaultrole IDENTIFIEDBYdefaultrole;
GRANTSELECT,UPDATEONaccount.paytableTOcheckerrole;
GRANTCONNECTTOdefaultrole;
(2)建立使用者
CREATEUSERxiaoliIDENTIFIEDBYxiaoli;
(3)授權
GRANTcheckerroleTOxiaoli;
GRANTdefaultroleTOxiaoli;
(4)設定使用者預設的角色
ALTERUSERxiaoliDEFAULTROLEdefaultrole;
(5)註冊過程
CONNECTxiaoli/xiaoli@oracle
此時使用者只有其預設角色的許可權。
(6)啟用角色
SETROLEcheckerroleIDENTIFIEDBYxm361001;
----操作成功後,xiaoli擁有checkerrole的許可權。
----這裡的角色和口令是固定的,在應用系統中可以由應用管理人員自行設定則更為方便安全。
----上面給出的是在SQL*PLUS下的操作過程,在實際中還是要與應用系統聯絡在一起。我們不討論使用者和角色的建立怎樣在應用開發語言中的實現過程,在這裡給出使用者登入時的POWERBUILDER程式碼,理解了這個例子,前者的實現也不難。
Transactiongtr_Oracle7
gtr_Oracle7=createTransaction
gtr_Oracle7.DBMS="O73"
gtr_Oracle7.database=""
gtr_Oracle7.UserID=ls_UserID
//透過對話方塊取得的使用者標識
gtr_Oracle7.DBPass=ls_Passwd
//透過對話方塊取得的使用者口令
gtr_Oracle7.LogID=ls_UserID
gtr_Oracle7.LogPass=ls_Passwd
gtr_Oracle7.ServerName="@oracle"
//在SQL*NET中建立的別名
gtr_Oracle7.DBParm=""
ConnectUsinggtr_Oracle7;
ifgtr_Orale7.sqlcode=-1then
MessageBox("錯誤","沒有註冊到資料庫系統!")
return-1
endif
//ls_Role和ls_RolePasswd為從配置檔案中
或透過其它途徑獲得的使用者的角色名和口令
ExecuteImmediate"SETROLE"+ls_Role+
"IDENTIFIEDBY"+ls_RolePasswd
Usinggtr_Oracle7;
Ifgtr_Oracle7.sqlcode<>0then
MessageBox("錯誤","沒有啟用相應的資料庫系統角色!")
DisconnectUsinggtr_Oracle7;
return-1
Endif
Return1//成功註冊並啟用角色!
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10796304/viewspace-952539/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 淺談OA系統在應用中安全性
- 增強for迴圈在Map中的應用
- 用LIDS增強Linux系統安全(轉)Linux
- 在 Go 語言中增強 Cookie 的安全性GoCookie
- Oracle PGA自動管理在OLAP系統中的應用Oracle
- 使用Oracle外部身份認證增強安全性Oracle
- DES加密演算法在門禁系統中應用 (轉)加密演算法
- Oracle資料庫系統的安全性(轉)Oracle資料庫
- Oracle 12c中的轉換功能增強Oracle
- Oracle利用Windows的高階特性增強效能OracleWindows
- ERP系統在我國的應用(轉)
- 相應 ADAM 令牌 資料聚合器.增強了 Oracle 網路的安全性。Oracle
- 無線技術在Linux作業系統中的應用(轉)Linux作業系統
- Linux系統在儲存技術中的幾項應用(轉)Linux
- AutoML 在推薦系統中的應用TOML
- Event Sourcing在分散式系統中應用分散式
- 模板與例項在系統中的應用
- HugePage在oracle中的應用Oracle
- AIX 上實用openssh增強安全性_簡單配置方法AI
- 什麼是CRM系統?CRM系統在企業中扮演什麼角色?
- LruCache在美團DSP系統中的應用演進
- 大資料在藍芽系統中的應用大資料藍芽
- Linux 系統中隨機數在 KVM 中的應用Linux隨機
- 索引在ORACLE中的應用分析索引Oracle
- CBO,RBO在ORACLE中的應用Oracle
- Turbolinux 在IDC 中的角色(轉)Linux
- 知識圖譜增強下的智慧推薦系統與應用-於敬
- FMEA原理在HACCP體系中的應用(轉載)
- sqlserver在JAVA中的應用 (轉)SQLServerJava
- AS400 中系統安全性
- 在Linux系統下FTP的配置與應用(轉)LinuxFTP
- 專案管理知識在銀行系統應用(轉)專案管理
- 測量系統分析(MSA)在企業質量管理中的應用(轉載)
- 增強邊緣計算的安全性
- Linux增強系統安全性:防止單使用者模式(single)修改密碼Linux模式密碼
- UNIX系統中Shell的一種新應用(轉)
- Oracle與SQL Server在企業應用中的比較(轉)OracleSQLServer
- [轉載]Oracle資料庫應用系統調優方法Oracle資料庫