第8章 安全管理_第1頁
第8章 安全管理_第2頁
第8章 安全管理_第3頁
第8章 安全管理_第4頁
第8章 安全管理_第5頁
已閱讀5頁,還剩23頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

Oracle11g+ASP.NET數(shù)據(jù)庫系統(tǒng)開發(fā)案例教程Oracle的安全性用戶管理權(quán)限管理角色管理用戶與角色信息查詢“電子題庫系統(tǒng)”的用戶管理安全管理

第8章8.1

Oracle的安全性O(shè)racle安全模型是基于最小特權(quán)的原則,此原則認(rèn)為用戶只應(yīng)該具有完成其任務(wù)所必需的特權(quán),而不應(yīng)該擁有更多的特權(quán)。Oracle數(shù)據(jù)庫的安全性體系可以分為如下2類系統(tǒng)安全性:系統(tǒng)安全性是指在系統(tǒng)級(jí)控制數(shù)據(jù)庫的存取和使用的機(jī)制。數(shù)據(jù)安全性是指在實(shí)體級(jí)控制數(shù)據(jù)庫存取和使用的機(jī)制,包括用戶可以存取的方案對(duì)象和在該方案對(duì)象上可以進(jìn)行哪些操作等。8.1

Oracle的安全性系統(tǒng)安全性有效的用戶標(biāo)識(shí)/口令:為用戶創(chuàng)建用戶標(biāo)識(shí)并設(shè)置口令,將口令進(jìn)行加密存儲(chǔ)。一個(gè)用戶是否被授權(quán)可連接數(shù)據(jù)庫。用戶對(duì)象可用的磁盤空間的數(shù)量。用戶可執(zhí)行哪些系統(tǒng)操作。8.1

Oracle的安全性O(shè)racle利用下列機(jī)制管理數(shù)據(jù)安全性數(shù)據(jù)庫用戶和模式:在Oracle中,數(shù)據(jù)庫用戶和模式是安全的最基本單元。數(shù)據(jù)庫用戶就是數(shù)據(jù)庫的合法操作者,他是一組數(shù)據(jù)庫對(duì)象的所有者。數(shù)據(jù)庫模式就是數(shù)據(jù)庫對(duì)象的集合,包括表、視圖、索引、觸發(fā)器、存儲(chǔ)過程、PL/SQL程序包、函數(shù)等,數(shù)據(jù)庫模式都?xì)wOracle數(shù)據(jù)庫中的某一個(gè)用戶所有,模式的名稱就是擁有或控制這些數(shù)據(jù)庫對(duì)象集合的用戶名稱。權(quán)限:通常指用戶對(duì)數(shù)據(jù)庫對(duì)象具有哪些操作、使用的權(quán)力。角色:將具有相同操作權(quán)力的用戶抽象成用戶類,即角色。存儲(chǔ)設(shè)置和空間份額:用戶對(duì)存儲(chǔ)設(shè)備及表空間的使用份額是可以設(shè)定的。8.1

Oracle的安全性O(shè)racle在創(chuàng)建數(shù)據(jù)庫時(shí)會(huì)自動(dòng)創(chuàng)建一些數(shù)據(jù)庫用戶,主要包括SYS、SYSTEM、DBSNMP和SYSMAN。SYS:當(dāng)創(chuàng)建一個(gè)數(shù)據(jù)庫時(shí),SYS用戶將被默認(rèn)創(chuàng)建并授予DBA角色,所有數(shù)據(jù)庫數(shù)據(jù)字典中的基本表和視圖都存儲(chǔ)在名為SYS的方案中,這些基本表和視圖對(duì)于Oracle數(shù)據(jù)庫的操作是非常重要的。為了維護(hù)數(shù)據(jù)字典的真實(shí)性,SYS方案中的表只能由系統(tǒng)來維護(hù),它們不能被任何用戶或數(shù)據(jù)庫管理員修改,而且任何用戶都不能在SYS方案中創(chuàng)建表。SYSTEM:與SYS一樣,在創(chuàng)建Oracle數(shù)據(jù)庫時(shí),SYSTEM用戶被默認(rèn)創(chuàng)建并被授予DBA角色,用于創(chuàng)建顯示管理信息的表或視圖,以及被各種Oracle數(shù)據(jù)庫應(yīng)用和工具使用的內(nèi)容表或視圖。DBSNMP:是Oracle數(shù)據(jù)庫中用于智能代理(IntelligentAgent),以及監(jiān)控和管理數(shù)據(jù)庫相關(guān)性能的用戶,如果停止該用戶,則無法提取相關(guān)的數(shù)據(jù)信息。SYSMAN:是Oracle數(shù)據(jù)庫中用于EM管理的用戶,如果你不用該用戶,也可以刪除。8.2用戶管理創(chuàng)建用戶CREATEUSERuserIDENTIFIEDBYpassword[DEFAULTTABLESPACEtablespace|TEMPORARYTABLESPACEtablespace|QUOTA{integer[K|M]|UNLIMITED}ONtablespace[QUOTA{integer[K|M]|UNLIMITED}ONtablespace]...|PROFILEprofile|PASSWORDEXPIRE|ACCOUNT{LOCK|UNLOCK}];語法說明:BYpassword:password表示口令。DEFAULTTABLESPACEtablespace:為用戶指定默認(rèn)表空間,用戶在創(chuàng)建數(shù)據(jù)庫對(duì)象時(shí)如果不專門指定表空間,對(duì)象數(shù)據(jù)就存放在此默認(rèn)表空間中。TEMPORARYTABLESPACEtablespace:為用戶指定默認(rèn)臨時(shí)表空間,用戶在執(zhí)行查詢語句需要排序、連接等操作時(shí)使用此臨時(shí)表空間,如果不指定默認(rèn)臨時(shí)表空間則與其他用戶共享Oracle自動(dòng)創(chuàng)建的TEMP臨時(shí)表空間。QUOTA{integer[K|M]|UNLIMITED}ONtablespace:設(shè)置用戶可以使用表空間的限額。可以為用戶設(shè)定多個(gè)表空間的使用限額。在Oracle11g中如果不專門設(shè)定使用配額,則系統(tǒng)默認(rèn)用戶沒有任何表空間的使用額度。另外,該選項(xiàng)不能在臨時(shí)表空間中使用。8.2用戶管理語法說明:PROFILEprofile:在創(chuàng)建用戶時(shí)為用戶指定專門的資源文件,該文件中有設(shè)置的該用戶可以使用的磁盤、CPU、內(nèi)存等資源的配給信息。PASSWORDEXPIRE:讓用戶的密碼過期,在用戶正常登錄前需要用戶或DBA修改密碼。ACCOUNT{LOCK|UNLOCK}:是否需要鎖定用戶賬號(hào),LOCK為鎖定,UNLOCK為解鎖。8.2用戶管理【例8.1】創(chuàng)建用戶user01,密碼為User0108,默認(rèn)表空間為test01_data,默認(rèn)臨時(shí)表空間為test01_temp。CREATEUSERuser01IDENTIFIEDBYUser0108DEFAULTTABLESPACEtest01_dataTEMPORARYTABLESPACEtest01_tempQUOTAUNLIMITEDONtest01_data;【例8.2】創(chuàng)建用戶user02,密碼為User0108,默認(rèn)表空間為test02_data,默認(rèn)臨時(shí)表空間為test01_temp,同時(shí)設(shè)定該用戶使用test03_data表空間的限額,也就是說此用戶可以在test03_data表空間中創(chuàng)建數(shù)據(jù)庫對(duì)象,但空間使用受限為5MB。CREATEUSERuser02IDENTIFIEDBYUser0108DEFAULTTABLESPACEtest02_dataQUOTAUNLIMITEDONtest02_dataQUOTA5MONtest03_dataTEMPORARYTABLESPACEtest01_temp;修改用戶ALTERUSERuserIDENTIFIEDBYpassword[DEFAULTTABLESPACEtablespace|TEMPORARYTABLESPACEtablespace|QUOTA{integer[K|M]|UNLIMITED}ONtablespace[QUOTA{integer[K|M]|UNLIMITED}ONtablespace]...|PROFILEprofile|DEFAULTROLE{role[,

role]...|ALL[EXCEPTrole[,

role]...]}|NONE}|PASSWORDEXPIRE|ACCOUNT{LOCK|UNLOCK}];語法說明:DEFAULTROLE{role[,role]...|ALL[EXCEPTrole[,role]...]}:為用戶指定登錄時(shí)的默認(rèn)角色,DEFAULTROLErole[,role]...表示為用戶指定多個(gè)默認(rèn)角色,DEFAULTROLEALL[EXCEPTrole[,role]...]表示為用戶指定全部角色為默認(rèn)角色,除特別指定的之外。提示:這里的角色一定是已經(jīng)授權(quán)給該用戶的角色。有關(guān)角色的詳情參見后面的章節(jié)。8.2用戶管理8.2用戶管理【例8.3】修改用戶密碼,將用戶user02的密碼由User0108修改成User0108。ALTERUSERuser02IDENTIFIEDBYUser0208;【例8.4】鎖定/解鎖用戶,將用戶user01鎖定。ALTERUSERuser01ACCOUNTLOCK;【例8.5】凍結(jié)用戶密碼,將用戶user02的密碼凍結(jié)。ALTERUSERuser02PASSWORDEXPIRE;【例8.6】為用戶設(shè)定資源使用限額,將用戶user02使用test03_data表空間的限額由5MB提高到10MB。ALTERUSERuser02QUOTA10MONtest03_data;刪除用戶DROPUSERuser[CASCADE];語法說明:CASCADE:表示刪除用戶的同時(shí)將用戶方案中所有對(duì)象全部刪除。提示:如果用戶方案中包含數(shù)據(jù)庫對(duì)象則在刪除該用戶時(shí)必須選擇此選項(xiàng)。8.2用戶管理【例8.7】刪除用戶user01、user02。DROPUSERuser01CASCADE;

DROPUSERuser02CASCADE;系統(tǒng)權(quán)限是指在系統(tǒng)級(jí)控制數(shù)據(jù)庫的存取和使用的機(jī)制。Oracle11g有200多種不同的系統(tǒng)權(quán)限,這些系統(tǒng)權(quán)限可以通過查詢system_privilege_map表得到。詳見表8-1。對(duì)象權(quán)限是在數(shù)據(jù)庫對(duì)象(如指定的表、視圖、序列、過程、函數(shù)或包)上執(zhí)行特殊動(dòng)作的權(quán)利。對(duì)于不同類型的對(duì)象,有不同類型的對(duì)象權(quán)限。Oracle11g有20多種不同的對(duì)象權(quán)限,這些對(duì)象權(quán)限可以通過查詢table_privilege_map表得到。詳見表8-2。特殊的權(quán)限進(jìn)行說明。ALTER:可以修改表、序列的結(jié)構(gòu)。REFERENCES:可以參量主表/主視圖建立外鍵。UNDER:可以基于該視圖建立其他視圖。8.3權(quán)限管理系統(tǒng)權(quán)限管理:實(shí)際上就是給需要權(quán)限的用戶(或者角色)進(jìn)行系統(tǒng)權(quán)限授予,或者從某些用戶(或者角色)已經(jīng)擁有的系統(tǒng)權(quán)限中回收其不應(yīng)該擁有的權(quán)限。系統(tǒng)權(quán)限授權(quán)的命令語法如下所示:8.3權(quán)限管理GRANT{system_privilege|ALLPRIVILEGES}[,

{system_privilege|ALLPRIVILEGES}]...TO{user|PUBLIC}[,

{user|PUBLIC}]...[IDENTIFIEDBYpassword][WITHADMINOPTION]語法說明:system_privilege:系統(tǒng)權(quán)限名。ALLPRIVILEGES:表示所有權(quán)限。user:被授權(quán)的用戶名。PUBLIC:代表所有用戶。IDENTIFIEDBYpassword:如果接收權(quán)限的用戶是不存在的用戶,則新建一個(gè)用戶且密碼為password。這個(gè)選項(xiàng)不能在給角色或所有用戶授權(quán)時(shí)使用。WITHADMINOPTION:允許被授權(quán)者將自己被授予的權(quán)限轉(zhuǎn)授予給其他用戶。【例8.8】給用戶user01、user02授予建立連接的權(quán)限。用戶user01、user02可以連接上Oracle,但還是不能進(jìn)行其他操作,如創(chuàng)建自己的表。GRANTCREATESESSIONtouser01,user02;【例8.9】給用戶user01授予創(chuàng)建表、索引、視圖、觸發(fā)器、序列的權(quán)限。用戶user01可以連接上Oracle,而且可以創(chuàng)建自己的表、索引、視圖、觸發(fā)器、序列。GRANTCREATETABLE,CREATEANYINDEX,CREATEVIEW,CREATETRIGGER,CREATESEQUENCEtouser01;【例8.10】將所有系統(tǒng)權(quán)限授予用戶user02,用戶user02此時(shí)可以為所欲為了,他實(shí)際上已經(jīng)擁有了DBA的所有權(quán)限。GRANTALLPRIVILEGETOuser02;8.3權(quán)限管理系統(tǒng)權(quán)限回收的命令語法如下所示:REVOKE{system_privilege|ALLPRIVILEGES}[,

{system_privilege|ALLPRIVILEGES}]...FROM{user|PUBLIC}[,

{user|PUBLIC}]…8.3權(quán)限管理【例8.11】從用戶user02中回收所有系統(tǒng)權(quán)限。REVOKEALLPRIVILEGEFROMuser02;【例8.12】從用戶user01中回收所有創(chuàng)建觸發(fā)器的系統(tǒng)權(quán)限。REVOKECREATETRIGGERFROMuser01;8.3權(quán)限管理所謂對(duì)象權(quán)限管理通常是由數(shù)據(jù)庫對(duì)象的主人將自己數(shù)據(jù)庫對(duì)象的一些操作權(quán)限授予其他用戶,讓其他用戶能夠共享操作自己的數(shù)據(jù)庫對(duì)象,或者從被授予人手中將已經(jīng)授予出去的權(quán)限收回,不讓其他用戶操作自己的數(shù)據(jù)庫對(duì)象。。對(duì)象權(quán)限授權(quán)的命令語法如下所示:GRANT{object_privilege|ALL[PRIVILEGES]}[(column[,

column]...)][,

{object_privilege|ALL[PRIVILEGES]}[(column[,

column]...)]]...ONschema.objectTO{user|PUBLIC}[,

{user|PUBLIC}]...[WITHGRANTOPTION]語法說明:object_privilege:對(duì)象權(quán)限名。Column:列名。Object:對(duì)象名。user:被授權(quán)的用戶名。8.3權(quán)限管理【例8.13】為了演示對(duì)象權(quán)限的授權(quán),首先利用用戶user01的身份登錄Oracle系統(tǒng),然后創(chuàng)建1張圖書目錄信息表(books),基于books表創(chuàng)建一個(gè)視圖(v_books)。--例8.13創(chuàng)建圖書目錄信息表CREATETABLEbooks(codeVARCHAR2(32)PRIMARYKEY,titleVARCHAR2(80)NOTNULL,authorVARCHAR2(80),publisherVARCHAR2(80),isbnVARCHAR2(32)UNIQUE,priceNUMERIC(8,2));--創(chuàng)建圖書目錄視圖CREATEORREPLACEVIEWv_booksASSELECTtitle,author,publisherFROMbooks;【例8.14】用戶user01將自己的books表的插入、修改權(quán)限授予用戶user02。GRANTINSERT,UPDATEONbooksTOuser02;此時(shí)用戶user02可以登錄進(jìn)Oracle系統(tǒng)對(duì)用戶user01的表books進(jìn)行插入、查詢操作。INSERTINTOuser01.booksVALUES('1001','ORACLE11g權(quán)威指南','谷長勇','電子工業(yè)出版社','7121145803',128);COMMIT;SELECT*FROMuser01.books;對(duì)象權(quán)限回收的命令語法如下所示:REVOKE{object_privilege|ALL[PRIVILEGES]}[,

{object_privilege|ALL[PRIVILEGES]}]...FROM{user|PUBLIC}[,

{user|PUBLIC}]...[CASCADECONSTRAINTS|FORCE]語法說明:CASCADECONSTRAINTS:將所有有關(guān)聯(lián)關(guān)系的權(quán)限回收。只針對(duì)REFERENCES權(quán)限。FORCE:表示將EXECUTE對(duì)象權(quán)限從使用了用戶自定義數(shù)據(jù)類型的表或其他類型中回收。8.3權(quán)限管理【例8.15】用戶user01從用戶user02中回收插入記錄到表books的權(quán)限,此時(shí)用戶執(zhí)行插入語句會(huì)報(bào)錯(cuò)。REVOKEINSERTONbooksFROMuser02;此時(shí)用戶user02執(zhí)行如下插入語句會(huì)報(bào)錯(cuò)。INSERTINTOuser01.booksVALUES('1002','ORACLE9i數(shù)據(jù)庫管理員使用大全','滕永昌','清華大學(xué)出版社','7302079447',68);COMMIT;8.3權(quán)限管理角色就是一組相關(guān)權(quán)限的集合,是對(duì)權(quán)限進(jìn)行集中管理(授予、回收)的一種方法,即將不同權(quán)限集中在一起就形成了角色。使用角色可以大大降低用戶權(quán)限的維護(hù)負(fù)擔(dān)。在創(chuàng)建數(shù)據(jù)庫時(shí),Oracle數(shù)據(jù)庫會(huì)自動(dòng)創(chuàng)建一些常用的角色,即預(yù)定義角色。這些角色已經(jīng)由Oracle數(shù)據(jù)庫授予了相應(yīng)的系統(tǒng)權(quán)限。DBA可以直接將這些預(yù)定義的角色授予用戶,完成簡單的權(quán)限管理工作。詳見表8-3。特殊可以利用預(yù)定義角色對(duì)用戶進(jìn)行授權(quán),此時(shí)角色就相當(dāng)于若干個(gè)權(quán)限的組合。8.4

角色管理【例8.16】創(chuàng)建用戶user03,將角色CONNECT、RESOURCE授予用戶user03,用戶user03可以正常登錄Oracle系統(tǒng)并在自己的方案中創(chuàng)建數(shù)據(jù)庫對(duì)象,進(jìn)行數(shù)據(jù)庫系統(tǒng)項(xiàng)目研發(fā)。CREATEUSERuser03IDENTIFIEDBYuser0308DEFAULTTABLESPACEtest03_dataTEMPORARYTABLESPACEtest01_tempQUOTAUNLIMITEDONtest03_data;GRANTCONNECT,RESOURCETOuser03;【例8.17】從用戶user03中收回RESOURCE角色權(quán)限,此時(shí)用戶user03不能創(chuàng)建存儲(chǔ)過程、觸發(fā)器等。REVOKERESOURCEFROMuser03;8.4

角色管理Oracle允許用戶按實(shí)際需要自定義各種角色,以便將其授予不同類型的用戶,增強(qiáng)權(quán)限管理的靈活性和方便性。創(chuàng)建角色的命令語法如下所示:CREATEROLErole[NOTIDENTIFIED|IDENTIFIED{BYpassword|EXTERNALLY|GLOBALLY}];語法說明:role:角色名。NOTIDENTIFIED:在啟動(dòng)此角色時(shí)不需要密碼驗(yàn)證,而是通過數(shù)據(jù)庫來驗(yàn)證。IDENTIFIEDBYpassword:數(shù)據(jù)庫驗(yàn)證,要求用戶在啟用這個(gè)角色之前先確認(rèn)自己的身份。該角色在默認(rèn)情況下被關(guān)閉,為了打開此角色需要使用如下語句“SETROLEroleIDENTIFIEDBYpassword;”。IDENTIFIEDEXTERNALLY:表示創(chuàng)建外部認(rèn)證的角色。IDENTIFIEDGLOBALLY:表示創(chuàng)建全局認(rèn)證的角色。8.4

角色管理【例8.18】創(chuàng)建一個(gè)角色programmer,密碼設(shè)為happy。CREATEROLEprogrammerIDENTIFIEDBYhappy;8.4

角色管理給角色授權(quán):自定義角色創(chuàng)建后,還需要為其授權(quán),將該角色應(yīng)該擁有的權(quán)限授予它。授權(quán)命令的語法參見用戶授權(quán)命令。【例8.19】給角色programmer授予CREATEPROCEDURE、CREATETRIGGER權(quán)限。

GRANTCREATEPROCEDURE,

CREATETRIGGERTOprogrammer;將自定義角色授予用戶:角色擁有一定的權(quán)限后,我們就可以將角色作為一個(gè)權(quán)限的集合體授予用戶。【例8.20】將角色programmer授予用戶user03,此時(shí)用戶user03就可以在自己的方案中定義存儲(chǔ)過程、觸發(fā)器了。GRANTprogrammerTOuser03;刪除自定義角色:由于角色可以重復(fù)修改和設(shè)置,隨著角色的增多,需要?jiǎng)h除一些不必要的角色。刪除角色可以通過DROP語句來實(shí)現(xiàn),使這個(gè)角色的權(quán)限集合無效,擁有此角色的用戶都不能使用這些權(quán)限。DROPROLErole;8.4

角色管理【例8.21】刪除角色programmer,此時(shí)用戶user03將不允許在自己的方案中定義存儲(chǔ)過程、觸發(fā)器了。DROPROLEprogrammer;下表列出了與用戶、角色相關(guān)的表(視圖)名,用戶可以通過查詢這些表來了解用戶、角色、權(quán)限、表空間配額等關(guān)鍵信息。8.5用戶與角色信息查詢表

名說

明操

者DBA_USERS列出所有用戶的所有信息DBAALL_USERS只列出所有用戶的用戶名、ID號(hào)、創(chuàng)建時(shí)間普通用戶DBA_SYS_PRIVS列出所有用戶、角色所擁有的系統(tǒng)權(quán)限D(zhuǎn)BAUSER_SYS_PRIVS列出自己所擁有的系統(tǒng)權(quán)限普通用戶DBA_TAB_PRIVS列出所有用戶、角色所擁有的對(duì)象權(quán)限D(zhuǎn)BAUSER_TAB_PRIVS列出自己所擁有的對(duì)象權(quán)限普通用戶DBA_ROLES列出所有角色信息DBADBA_ROLE_PRIVS列出所有用戶所屬角色信息DBAUSER_ROLE_PRIVS列出自己所屬角色信息普通用戶DBA_TS_QUOTAS列出所有用戶使用表空間的配額信息DBAUSER_TS_QUOTAS列出自己使用表空間的配額信息普通用戶【例8.22】以用戶user03身份登錄進(jìn)Oracle系統(tǒng),執(zhí)行以下語句,查看用戶信息、所屬角色信息、表空間配額信息,如圖8-1、圖8-2所示。SELECT*FROMALL_USERSWHERE

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論