




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、安全性管理概述1本章概述 安全性是衡量數(shù)據(jù)庫產(chǎn)品性能的重要指標(biāo)。本章介紹Oracle 11g數(shù)據(jù)庫的安全管理機(jī)制,內(nèi)容包括用戶管理,權(quán)限管理,角色管理,數(shù)據(jù)庫審計等。2 本章的學(xué)習(xí)目標(biāo): 了解用戶、權(quán)限、角色的概念及作用 學(xué)會創(chuàng)建、修改、刪除用戶 學(xué)會將系統(tǒng)權(quán)限和對象權(quán)限授予用戶,以及回收權(quán)限 學(xué)會使用系統(tǒng)預(yù)定義角色,學(xué)會創(chuàng)建自定義角色,以及角色權(quán)限的授予和回收 了解數(shù)據(jù)庫審計的概念及作用3主要內(nèi)容13.1 概述13.2 用戶管理13.3 權(quán)限管理13.4 角色管理13.5數(shù)據(jù)庫審計13.6小結(jié)13.7習(xí)題4 安全性在數(shù)據(jù)庫管理中占據(jù)重要的位置,沒有完善的安全機(jī)制的保護(hù),可能會導(dǎo)致數(shù)據(jù)的泄露、
2、損壞或丟失,因此安全性一直是數(shù)據(jù)庫產(chǎn)品性能的重要衡量指標(biāo)之一。Oracle數(shù)據(jù)庫的安全管理是從用戶登錄數(shù)據(jù)庫就開始的。數(shù)據(jù)庫訪問的安全性主要包括兩個方面的含義:一是阻止未授權(quán)用戶訪問數(shù)據(jù)庫;二是每個數(shù)據(jù)庫用戶都有不同的操作權(quán)限,用戶在數(shù)據(jù)庫中的操作將被限制在其權(quán)限范圍內(nèi)。 在Oracle數(shù)據(jù)庫中,用戶的身份通常被劃分為數(shù)據(jù)庫管理員和開發(fā)人員,其中數(shù)據(jù)庫管理員承擔(dān)管理數(shù)據(jù)庫的責(zé)任,包括安全性管理、調(diào)優(yōu)、備份策略的制定、數(shù)據(jù)庫出現(xiàn)故障時的數(shù)據(jù)恢復(fù)、保證數(shù)據(jù)庫的可用性等。軟件系統(tǒng)的開發(fā)人員作為數(shù)據(jù)庫管理員之外的一類使用者,承擔(dān)軟件開發(fā)的職責(zé),對數(shù)據(jù)庫的訪問要求及技能掌握要求比數(shù)據(jù)庫管理員低,他們需要
3、熟練掌握的SQL及PL/SQL的操作技能,能夠快速及高效率地完成對數(shù)據(jù)庫的操作需求,對調(diào)優(yōu)和備份恢復(fù)等操作通常不參與。所以,數(shù)據(jù)庫的安全管理通常屬于數(shù)據(jù)庫管理員的職責(zé),DBA可以通過管理用戶、角色以及權(quán)限來控制數(shù)據(jù)庫的安全。但對于軟件開發(fā)人員來說,掌握一些安全機(jī)制及處理方式也是有必要的。5主要內(nèi)容13.1 概述13.2 用戶管理13.3 權(quán)限管理13.4 角色管理13.5數(shù)據(jù)庫審計13.6小結(jié)13.7習(xí)題613.2 用戶管理 用戶是數(shù)據(jù)庫的使用者和管理者,用戶管理是Oracle數(shù)據(jù)庫安全管理的核心和基礎(chǔ)。每個連接到數(shù)據(jù)庫的用戶都必須是系統(tǒng)的合法用戶,用戶要想使用Oracle的系統(tǒng)資源(查詢數(shù)據(jù)
4、、創(chuàng)建表等),就必須要擁有相應(yīng)的權(quán)限。Oracle數(shù)據(jù)庫的用戶管理包括創(chuàng)建用戶、修改用戶的安全參數(shù)、刪除用戶和查詢用戶信息等。713.2.1 初始用戶 在創(chuàng)建Oracle數(shù)據(jù)庫時會自動創(chuàng)建一些用戶,例如SYS、SYSTEM、SCOTT等,除了SYS、SYSTEM這兩個初始合法的管理員,其余用戶在創(chuàng)建后處于鎖定狀態(tài),需要在安裝時或者安裝后對其解鎖并重新設(shè)定口令。這些初始用戶有其自身的職責(zé)和特點(diǎn),軟件項(xiàng)目一般不建議使用這些初始用戶。即針對不同的項(xiàng)目,應(yīng)該由管理員分配不同的用戶,在開發(fā)過程中,SCOTT用戶可以用來測試數(shù)據(jù)庫的可用性。 l SYS:是數(shù)據(jù)庫中具有最高權(quán)限的數(shù)據(jù)庫管理員,可以啟動、修改
5、和關(guān)閉數(shù)據(jù)庫,擁有數(shù)據(jù)字典。 l SYSTEM:是輔助數(shù)據(jù)庫管理員,不能啟動和關(guān)閉數(shù)據(jù)庫,可以進(jìn)行一些其他的管理工作,例如創(chuàng)建用戶、刪除用戶等。 l SCOTT:數(shù)據(jù)庫的測試用戶,默認(rèn)口令為tiger。在該用戶下已經(jīng)創(chuàng)建了一些數(shù)據(jù)表,用于用戶學(xué)習(xí)及測試網(wǎng)絡(luò)連接,包括:EMP表、DEPT表等。813.2.2 相關(guān)屬性和用戶相關(guān)的屬性包括以下幾種。(1)用戶身份認(rèn)證方式在用戶連接數(shù)據(jù)庫時,必須經(jīng)過身份認(rèn)證。Oracle數(shù)據(jù)庫用戶有3種身份認(rèn)證。數(shù)據(jù)庫身份認(rèn)證:這種方式即用戶名/口令方式,用戶口令以加密方式保存在數(shù)據(jù)庫內(nèi)部,用戶連接數(shù)據(jù)庫時必須輸入用戶名和口令,通過數(shù)據(jù)庫認(rèn)證后才能登錄數(shù)據(jù)庫。這是默
6、認(rèn)的認(rèn)證方式。外部身份認(rèn)證:用戶賬戶由Oracle數(shù)據(jù)庫管理,但口令管理和身份驗(yàn)證由外部服務(wù)完成,外部服務(wù)可以是操作系統(tǒng)或網(wǎng)絡(luò)服務(wù)。當(dāng)用戶試圖建立與數(shù)據(jù)庫的連接時,數(shù)據(jù)庫不會要求用戶輸入用戶名和口令,而從外部服務(wù)中獲取當(dāng)前用戶的登錄信息。這種方式比較適合在局域網(wǎng)環(huán)境下,連接簡單,不需要提供用戶名和口令,但是需要在創(chuàng)建用戶時做一些相應(yīng)的配置。9全局身份認(rèn)證:當(dāng)用戶試圖建立與數(shù)據(jù)庫的連接時,Oracle使用網(wǎng)絡(luò)中的安全管理服務(wù)器(Oracle Enterprise Security Manager)對用戶進(jìn)行身份認(rèn)證。和外部身份認(rèn)證相同,用戶賬戶由數(shù)據(jù)庫管理,但Oracle不保存口令,當(dāng)用戶登錄時
7、,需要通過網(wǎng)絡(luò)服務(wù)驗(yàn)證。Oracle的安全管理服務(wù)器可以提供全局范圍內(nèi)管理數(shù)據(jù)庫用戶的功能。(2)表空間配額表空間配額限制用戶在永久表空間中可用的存儲空間大小,默認(rèn)情況下,新用戶在任何表空間中都沒有任何配額。用戶在臨時表空間中不需要配額。 (3)默認(rèn)表空間用戶在創(chuàng)建數(shù)據(jù)庫對象時,如果沒有顯示指明該對象在哪個空間,那么系統(tǒng)會將該對象自動存儲在用戶的默認(rèn)表空間中,即SYSTEM表空間。一般不建議將用戶的對象建立在SYSTEM表空間中,所以默認(rèn)表空間應(yīng)指定。10 (4) 臨時表空間 如果用戶執(zhí)行一些操作例如排序、匯總和表間連接等,系統(tǒng)會首先使用內(nèi)存中的排序區(qū)SORT_AREA_SIZE,如果這塊排序
8、區(qū)大小不夠,則將使用用戶的臨時表空間。一般使用系統(tǒng)默認(rèn)臨時表空間TEMP作為用戶的默認(rèn)臨時表空間。 (5)賬戶狀態(tài) 在創(chuàng)建用戶時,可以設(shè)定用戶的初始狀態(tài),包括用戶口令是否過期、用戶賬戶是否鎖定等。已鎖定的用戶不能訪問數(shù)據(jù)庫,必須由管理員進(jìn)行解鎖后才允許訪問。數(shù)據(jù)庫管理員可以隨時鎖定賬戶或解除鎖定。 (6)資源配置 每個用戶都有一個資源配置,如果創(chuàng)建用戶時沒有指定,Oracle會為用戶指定默認(rèn)的資源配置。資源配置的作用是對數(shù)據(jù)庫系統(tǒng)資源的使用加以限制,這些資源包括:口令是否過期,口令輸入錯誤幾次后鎖定該用戶,CPU時間,輸入/輸出(I/O)以及用戶打開的會話數(shù)目等。1113.2.3 創(chuàng)建用戶創(chuàng)建
9、數(shù)據(jù)庫用戶的語法如下:CREATE USER userIDENTIFIED BY passwore | EXTERNALLYDEFAULT TABLESPACE tablespace TEMPORARY TABLESPACE tablespaceQUOTA integer K | M | UNLIMITED ON tablespaceQUOTA integer K | M | UNLIMITED ON tablespacePASSWORD EXPIREACCOUNT LOCK | UNLOCKPROFILE profile | DEFAULT12參數(shù)說明:user:要創(chuàng)建的用戶名;BY pas
10、sword:用戶通過數(shù)據(jù)庫驗(yàn)證方式登錄,登錄時需要提供的口令;EXTERNALLY:用戶需要通過操作系統(tǒng)驗(yàn)證;DEFAULT或TEMPORARY TABLESPACE:為用戶指定默認(rèn)或臨時表空間;QUOTA:定義在表空間中允許用戶使用的最大空間,可將限額定義為整數(shù)字節(jié)或千字節(jié)/兆字節(jié)。其中關(guān)鍵字UNLIMITED用戶指定用戶可以使用表空間中全部可用空間;PASSWORD EXPIRE:強(qiáng)制用戶在使用SQL*Plus登錄到數(shù)據(jù)庫時重置口令(該選項(xiàng)僅在用戶通過數(shù)據(jù)庫進(jìn)行驗(yàn)證時有效);ACCOUNT LOCK | UNLOCK:可用于顯示鎖定或解除鎖定用戶賬戶(UNLOCK為缺省設(shè)置);PROFIL
11、E:指定用戶的資源配置。13【例13-1】創(chuàng)建用戶rose,口令為zzuli,默認(rèn)表空間為USERS,在該表空間的配額為50MB??诹钤O(shè)置為過期狀態(tài),即首次連接數(shù)據(jù)庫時需要修改口令。(如果在SQL Plus中創(chuàng)建用戶成功,最后會顯示個 用戶已創(chuàng)建。 之類的,最好寫在例題下面,表示這是運(yùn)行成功的代碼,你實(shí)驗(yàn)一下,看看創(chuàng)建完結(jié)果是什么,寫到下面。后面的例題都是這樣的吧)SQLCREATE USER rose IDENTIFIED BY zzuli2 DEFAULT TABLESPACE USERS3 QUOTA 50M ON USERS4 PASSWORD EXPIRE;用戶已創(chuàng)建。1413.2.
12、4 修改用戶 用戶創(chuàng)建后,可以更改用戶的屬性,如口令、默認(rèn)表空間、臨時表空間、表空間配額、概要文件和用戶狀態(tài)等。但不允許修改用戶的名稱,除非將其刪除。修改數(shù)據(jù)庫用戶使用ALTER USER語句來實(shí)現(xiàn),ALTER USER語句的語法格式為:ALTER USER user_name IDENTIFIEDBY PASSWORD | EXTERNALLY | GOLBALLY AS external_nameDEFAULT TABLESPACE tablespace_nameTEMPORARY TABLESPACE temp_tempspace_nameQUOTA n K | M | UNLIMITE
13、D ON tablespace_namePROFILE profile_nameDEFAULT ROLE role_list | ALL EXCEPT role_list | NONEPASSWORD EXPIREACCOUNT LOCK | UNLOCK;15對其中的參數(shù)說明如下。l role_list:角色列表l ALL:表示所有角色l EXCEPT role_list:表示除了role_list列表中角色以外的其他角色。l NONE:表示沒有默認(rèn)角色。 【例13-2】 修改用戶atea的默認(rèn)表空間為USERS,在該表空間的配額為100MB,在USERS表空間的配額為30MB。命令如下:S
14、QLALTER USER atea2 DEFAULT TABLESPACE USERS3 QUOTA 30M ON USERS;1613.2.5 刪除用戶 當(dāng)一個用戶不再使用時,可以將其刪除。刪除用戶的語法:DROP USER user_name CASCADE執(zhí)行該語句的用戶必須具有DROP USER的系統(tǒng)權(quán)限。刪除用戶時需要注意如下幾點(diǎn):(1)如果用戶方案中包括任何對象,在刪除用戶時,必須加上CASCADE短語,Oracle數(shù)據(jù)庫會先刪除該用戶的所有對象,然后再刪除該用戶。(2)如果用戶當(dāng)前正與Oracle服務(wù)器連接,則不能刪除?!纠?3-3】刪除用戶atea。SQLDROP USER a
15、tea; -如果atea用戶的方案中沒有對象 SQLDROP USER atea CASCADE; -如果atea用戶的方案中有對象1713.2.6 查詢用戶信息 如果要獲取用戶信息,可以通過查詢數(shù)據(jù)字典視圖或動態(tài)性能視圖來實(shí)現(xiàn)。 ALL_USERS:包含數(shù)據(jù)庫所有用戶的用戶名、用戶ID和用戶創(chuàng)建時間。 DBA_USERS:包含數(shù)據(jù)庫所有用戶的詳細(xì)信息。 USER_USERS:包含當(dāng)前用戶的詳細(xì)信息。 DBA_TS_QUOTAS:包含所有用戶的表空間配額信息。 USER_TS_QUOTAS:包含當(dāng)前用戶的表空間配額信息。 V$SESSION:包含用戶會話信息。 V$OPEN_CURSOR:包含
16、用戶執(zhí)行的SQL語句信息。 【例13-4】查找所有用戶的默認(rèn)表空間。(查找的結(jié)果應(yīng)該截圖,顯示在下面)SQLSELECT user_name, default_tablespace 2 FROM dba_users;18主要內(nèi)容13.1 概述13.2 用戶管理13.3 權(quán)限管理13.4 角色管理13.5 數(shù)據(jù)庫審計13.6 小結(jié)13.7 習(xí)題19 在用戶創(chuàng)建完成后,僅僅表示該用戶在Oracle系統(tǒng)中進(jìn)行了注冊而已,這樣的用戶既不能連接到數(shù)據(jù)庫,更談不上進(jìn)行查詢、建表等操作。要使該用戶能夠連接到Oracle系統(tǒng)并能使用Oracle的資源,如查詢表的數(shù)據(jù),創(chuàng)建自己的表結(jié)構(gòu)等,必須由具有DBA角色的
17、用戶對該用戶進(jìn)行授權(quán)。2013.3.1 權(quán)限概述 權(quán)限是指執(zhí)行特定類型的SQL語句或訪問另一個用戶的對象的權(quán)利,例如:連接到數(shù)據(jù)庫,創(chuàng)建表,查詢其他用戶的表,調(diào)用其他用戶的存儲過程等。Oracle數(shù)據(jù)庫使用權(quán)限來控制用戶對數(shù)據(jù)的訪問和用戶所能執(zhí)行的操作。用戶在數(shù)據(jù)庫中可以執(zhí)行什么樣的操作,以及可以對哪些對象進(jìn)行操作,完全取決于該用戶所擁有的權(quán)限。 根據(jù)系統(tǒng)管理方式的不同,在Oracle數(shù)據(jù)庫中將權(quán)限分為兩大類,系統(tǒng)權(quán)限和對象權(quán)限。 系統(tǒng)權(quán)限指數(shù)據(jù)庫級別執(zhí)行某些操作的權(quán)限,即用戶執(zhí)行某一特定的數(shù)據(jù)庫操作或某類數(shù)據(jù)庫操作等的權(quán)限,例如創(chuàng)建表空間,創(chuàng)建會話等。21 對象權(quán)限是指對數(shù)據(jù)庫中的特定對象(
18、例如表、視圖、序列、過程、函數(shù)或程序包)的訪問控制,以及用戶可以在這些數(shù)據(jù)庫對象上執(zhí)行哪些操作。例如插入表記錄,增加約束條件等。 無論系統(tǒng)權(quán)限還是對象權(quán)限,在Oracle數(shù)據(jù)庫中,將權(quán)限授予用戶的方式有直接授權(quán)和間接授權(quán)兩種。所謂直接授權(quán)就是利用GRANT命令直接為用戶授權(quán),間接授權(quán)就是先將權(quán)限授予角色,再將角色授予用戶。另外,已經(jīng)獲得某種權(quán)限的用戶可以將他們的權(quán)限或其中一部分權(quán)限再授予其他用戶。2213.3.2 系統(tǒng)權(quán)限管理 在Orcale 11g 中含有200多種系統(tǒng)權(quán)限,每種系統(tǒng)權(quán)限都為用戶提供了執(zhí)行某一種或某一類數(shù)據(jù)庫操作的能力,可以將系統(tǒng)權(quán)限授予用戶和角色。由于系統(tǒng)權(quán)限可能影響到整個
19、數(shù)據(jù)庫,所有授予系統(tǒng)權(quán)限給用戶時需要慎重。1授予系統(tǒng)權(quán)限 系統(tǒng)管理員給用戶授權(quán)時,應(yīng)該考慮到不同用戶的身份。例如數(shù)據(jù)庫管理員用戶應(yīng)該具有創(chuàng)建用戶、修改用戶權(quán)限、創(chuàng)建表空間以及可以對數(shù)據(jù)庫任何模式中的對象進(jìn)行管理的權(quán)限,而數(shù)據(jù)庫開發(fā)人員應(yīng)該具有在自己的方案中創(chuàng)建表、視圖、過程等的權(quán)限。另外一些普通用戶應(yīng)該只賦予CREATE SESSION的權(quán)限。23授予系統(tǒng)權(quán)限的語法:GRANT system_privilege | role,system_privilege | roleTO user | role | PUBLIC, user | role | PUBLIC WITH ADMIN OPTIO
20、N參數(shù)說明:l system_privilege:要授予的系統(tǒng)權(quán)限l user:被授予權(quán)限的用戶l role:被授予的角色名l PUBLIC:將系統(tǒng)權(quán)限授予所有用戶l WITH ADMIN OPTION:允許被授予者進(jìn)一步為其他用戶或角色授予權(quán)限或角色。當(dāng)授權(quán)時帶有這個子句時,用戶才可以將獲得的系統(tǒng)權(quán)限再授予其他用戶,即系統(tǒng)權(quán)限的傳遞性。24【例13-5】數(shù)據(jù)庫管理員授予CREATE SESSION權(quán)限給用戶atea。SQLGRANT CREATE SESSION TO atea;2.系統(tǒng)權(quán)限收回 一般用戶被授予過高的權(quán)限可能會給Oracle系統(tǒng)帶來安全隱患。作為Oracle系統(tǒng)管理員,應(yīng)該會
21、查詢當(dāng)前Oracle系統(tǒng)中各個用戶的權(quán)限,并且能夠使用REVOKE命令撤銷用戶的某些不必要的系統(tǒng)權(quán)限。可以使用REVOKE語句撤銷系統(tǒng)權(quán)限。REVOKE system_privilege | role ,system_privilege | roleFROM user | role | PUBLIC, user | role | PUBLIC REVOKE語句中的參數(shù)和GRANT語句中相同。25 【例13-6】收回用戶atea的CREATE SESSION權(quán)限SQLREVOKE CREATE SESSION FROM atea; 需要說明的是,如果數(shù)據(jù)庫管理員使用了GRANT語句給用戶A授予系
22、統(tǒng)權(quán)限時帶有WITH ADMIN OPTION選項(xiàng),則該用戶A有權(quán)將系統(tǒng)權(quán)限再次授予其他的用戶B。在這種情況下,如果數(shù)據(jù)庫管理員使用REVOKE命令撤銷A用戶的系統(tǒng)權(quán)限時,用戶B的系統(tǒng)授權(quán)仍然有效。13.3.3 對象權(quán)限管理 對象權(quán)限是一種對于特定對象(表、視圖、序列、過程、函數(shù)或程序包等)執(zhí)行特定操作的一種權(quán)限。數(shù)據(jù)庫用戶擁有對自己的對象的所有對象權(quán)限,所以對象權(quán)限的管理實(shí)際上即是對象所有者對其他用戶操作該對象的權(quán)限管理。261. 授予對象權(quán)限授予對象權(quán)限的語法:GRANT object_privilege (column_list),object_privilege (column_lis
23、t)| ALL PRIVILEGESON schema. objectTO user | role | PUBLIC , user | role | PUBLIC WITH GRANT OPTION其中參數(shù)說明如下:l object_privilege:表示要授予的對象權(quán)限;l column_list:指定表或視圖列;l ALL:將所有權(quán)限授予那些已被授予WITH GRANT OPTION的對象;l ON object:object表示將要被授予權(quán)限的目標(biāo)對象;l Role:角色名;l User:被授予的用戶名;l WITH GRANT OPTION:表示被授予者可再將對象權(quán)限授予其他用戶。2
24、7【例13-7】 將SELECT、INSERT、DELETE授權(quán)給atea用戶。SQLGRANT SELECT, INSERT,DELETE ON emp TO atea;2. 對象權(quán)限回收 要從用戶或者角色中撤銷對象權(quán)限,仍然要使用REVOKE命令來完成。要撤銷對象權(quán)限,撤銷者必須是將被撤銷的對象權(quán)限的原始授予者。撤銷對象權(quán)限的語法:REVOKE object_privilege, object_privilege| ALL PRIVILEGESON schema. objectFROM user | role | PUBLIC, user | role | PUBLIC CASCADE C
25、ONSTRAINTS28其中參數(shù)說明如下:l object_privilege:指定將撤銷的對象權(quán)限;l ALL:撤銷已授予用戶的所有對象權(quán)限;l ON:標(biāo)識將撤銷其對象權(quán)限的對象;l FROM:標(biāo)識將撤銷其對象權(quán)限的用戶或角色;l CASCADE CONSTRAINTS:刪除撤銷使用REFERENCES或ALL權(quán)限定義的任何引用完整性約束限制; 【例13-8】從atea用戶撤銷emp對象的所有權(quán)限。SQLREVOKE ALL ON emp FROM atea; 需要注意的是,如果數(shù)據(jù)庫管理員使用GRANT命令給用戶A授予對象權(quán)限時帶有WITH ADMIN OPTION選項(xiàng),則該用戶A有權(quán)將權(quán)
26、限再次授予其他的用戶B。在這種情況下,如果數(shù)據(jù)庫管理員使用REVOKE命令撤銷A用戶的對象權(quán)限時,用戶B的對象權(quán)限也被撤銷。需要注意,在進(jìn)行系統(tǒng)權(quán)限回收和進(jìn)行對象權(quán)限回收時,效果是不一樣的。2913.3.4 權(quán)限查詢 用戶被授予的系統(tǒng)權(quán)限或者對象權(quán)限都被記錄在Oracle的數(shù)據(jù)字典中,了解某個用戶被授予哪些系統(tǒng)權(quán)限和對象權(quán)限是確保應(yīng)用系統(tǒng)安全的重要工作。如表13-1所示為Oracle11g用于存放用戶、系統(tǒng)權(quán)限和對象權(quán)限有關(guān)的數(shù)據(jù)字典?!纠?3-9】查詢所有的對象權(quán)限。(查找的結(jié)果應(yīng)該截圖粘貼在下面)SQLSELECT * FROM dba_tab_privs;30主要內(nèi)容13.1 概述13.
27、2 用戶管理13.3 權(quán)限管理13.4 角色管理13.5數(shù)據(jù)庫審計13.6小結(jié)13.7習(xí)題3113.4 角色管理 Oracle 中的權(quán)限分類很多,設(shè)置十分復(fù)雜,就系統(tǒng)權(quán)限而言,在Oracle11g中就超過了200種,為數(shù)據(jù)庫管理員正確有效地管理數(shù)據(jù)庫權(quán)限帶來了困難,而角色就是簡化權(quán)限管理的一種數(shù)據(jù)庫對象。13.4.1 角色概述 角色是權(quán)限管理的一種工具,是一系列權(quán)限的集合,角色可以被授予任何用戶,也可以從用戶中收回。使用角色可以簡化權(quán)限的管理,可以僅用一條語句就能從用戶那里授予或者回收許多權(quán)限,而不必對用戶一一授權(quán)。使用角色還可以實(shí)現(xiàn)權(quán)限的動態(tài)管理,比如隨著應(yīng)用的變化可以增加或者減少角色的權(quán)限
28、,這樣通過改變角色權(quán)限,就改變了多個用戶的權(quán)限。32 角色、用戶及權(quán)限是一組有密切關(guān)系的對象,既然角色是一組權(quán)限的集合,那么他被授予某個用戶時才能有意義,可以如圖13-1所示幫助我們理解角色、用戶及權(quán)限的關(guān)系。圖13-1 用戶、角色和權(quán)限的關(guān)系33 在復(fù)雜的大型應(yīng)用系統(tǒng),要求對應(yīng)用系統(tǒng)功能進(jìn)行分類,從而形成角色的雛形,再使用CREATE ROLE語句將它們創(chuàng)建為角色;最后根據(jù)用戶工作的分工,將不同的角色(包括系統(tǒng)預(yù)定義的角色)授予各類用戶。如果應(yīng)用系統(tǒng)的規(guī)模很小,用戶數(shù)也不多,則可以直接將應(yīng)用的權(quán)限授予用戶,即使是這樣,用戶也必須對Oracle系統(tǒng)的預(yù)定義角色有所了解。 角色所對應(yīng)的權(quán)限集合中
29、可以包含系統(tǒng)權(quán)限和對象權(quán)限。角色是可以授予另外一個角色的,需要避免將角色授予它本身,也不能循環(huán)授予。13.4.2 創(chuàng)建角色 如果系統(tǒng)預(yù)定義的角色不符合用戶的需要,數(shù)據(jù)庫管理員還可以創(chuàng)建更多的角色。創(chuàng)建用戶自定義角色使用CREATE ROLE語句來實(shí)現(xiàn)。34創(chuàng)建角色語句的語法格式如下:CREATE ROLE role_name NOT IDENTIFIED IDENTIFIED BY password;對其中的參數(shù)說明如下:l role_name:用于指定自定義角色名稱,該名稱不能與任何用戶名或其他角色相同。l NOT IDENTIFIED:用戶指定該角色由數(shù)據(jù)庫授權(quán),使該角色生效時不需要口令。
30、l IDENTIFIED BY password:用于設(shè)置角色生效時的認(rèn)證口令?!纠?3-10】創(chuàng)建不驗(yàn)證的角色doctor_clerkSQLCREATE ROLE doctor_clerk;【例13-11】創(chuàng)建使用口令驗(yàn)證的角色SQLCREATE ROLE unit_clerk IDENTIFIED BY caption;【例13-12】 創(chuàng)建外部驗(yàn)證的角色SQLCREATE ROLE unit_manager IDENTIFIED EXTERNALLY;3513.4.3 角色授權(quán) 當(dāng)角色被建立后,沒有任何權(quán)限,只有對其授予權(quán)限,才有使用的意義。因此,在創(chuàng)建角色后,通常還需要立即為它授予權(quán)限
31、。可以通過給用戶授權(quán)的GRANT語句給角色授權(quán),并將角色賦予相應(yīng)的數(shù)據(jù)庫用戶。角色權(quán)限的授予與回收和用戶權(quán)限的授予與回收類似,語法也與其相同。 【例13-13】為teller角色授予CREATE SESSION 和CREATE DATABASE LINK權(quán)限 SQLGRANT CREATE SESSION, CREATE DATABASE LINK to teller;對角色授權(quán)后,就可以將角色授予某個用戶。 【例13-14】將teller角色授予用戶wang SQLGRANT teller TO wang;3613.4.4 角色的生效/失效 當(dāng)某角色生效時,屬于角色的用戶可以執(zhí)行該角色所具有
32、的所有權(quán)限操作,而當(dāng)某角色失效時,擁有這個角色的用戶將不能執(zhí)行該角色的任何權(quán)限操作。因此,通過設(shè)置角色的生效或失效,可以動態(tài)改變用戶的權(quán)限。設(shè)置角色生效或失效使用SET ROLE語句,語法格式為:SET ROLE role IDENTIFIED BY password, role IDENTIFIED BY password| ALL EXCEPT role , role| NONE37參數(shù)說明如下:l role:是角色的名稱;l IDENTIFIED BY password:提供角色生效時所需的口令;l ALL:除了EXCEPT子句中列出的角色外,授予當(dāng)前用戶的全部角色生效;l EXCEPT
33、 role:這些角色不生效;l NONE:當(dāng)前會話的全部角色失效(只有直接授予用戶的權(quán)限是可用的)。 角色的生效針對的是會話,在下一個會話中,用戶的活動角色將默認(rèn)為默認(rèn)角色。 如果角色設(shè)置了口令,則SET ROLE命令中必須包含口令才能使角色生效。分配給用戶的默認(rèn)角色不需要口令,這些角色同沒有口令的角色一樣在登錄時生效。38【例13-15】在當(dāng)前會話中使角色doctor_clerk生效。SQLSET ROLE doctor_clerk; 【例13-16】在當(dāng)前會話中使除了unit_manager之外的所有角色生效。SQLSET ROLE ALL EXCEPT unit_manager; 【例1
34、3-17】設(shè)置當(dāng)前用戶所有角色失效。SQLSET ROLE NONE;13.4.5 修改角色 修改角色時,只能修改角色生效或失效時的認(rèn)證方式,也就是說,是否必須經(jīng)過Oracle確認(rèn)才允許對角色進(jìn)行修改。而且,當(dāng)前用戶的角色必須通過ADMIN選項(xiàng)進(jìn)行授予,或者當(dāng)前用戶必須具有ALTER ANY ROLE系統(tǒng)權(quán)限。修改角色的語法:ALTER ROLE role NOT IDENTIFIED | IDENTIFIEDBY password | USING package | EXTERNALLY | GLOBALLY;39參數(shù)說明如下: l role:角色名稱;l NOT IDENTIFIED:表明
35、該角色生效時,不需要進(jìn)行驗(yàn)證;l IDENTIFIED:表明該角色生效時,需要進(jìn)行驗(yàn)證;l BY password:提供角色生效時所使用的口令;l EXTERNALLY:表明該角色生效之前,用戶必須由外部服務(wù)(例如操作系統(tǒng)或網(wǎng)絡(luò)服務(wù))授權(quán);l GLOBALLY:表明通過SET ROLE語句使角色生效之前或登錄時,必須由企業(yè)目錄服務(wù)授權(quán)用戶使用該角色。40【例13-18】修改角色unit_clerk由外部驗(yàn)證。 SQLALTER ROLE unit_clerk IDENTIFIED EXTERNALLY; 【例13-19】修改角色unit_manager不驗(yàn)證。SQLALTER ROLE unit_manager NOT IDENTIFIED; 【例13
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 技術(shù)服務(wù)轉(zhuǎn)讓協(xié)議
- 高速邊坡植草施工方案
- 建筑勞務(wù)擴(kuò)大分包合同
- 珠海自建房庭院施工方案
- 2025年文言文高中試題及答案
- 2025年業(yè)務(wù)運(yùn)營類面試題及答案
- 2025年微積分上冊考試題及答案
- 基坑回填專項(xiàng)施工方案
- 平房墻體翻新施工方案
- 2025年特種線纜材料合作協(xié)議書
- qc小組活動記錄
- Book Unit Learning Chinese Style的實(shí)用學(xué)習(xí)課件
- 益盟軟件使用說明書
- GB/T 778.1-2007封閉滿管道中水流量的測量飲用冷水水表和熱水水表第1部分:規(guī)范
- GB/T 34754-2017家庭牧場草地放牧強(qiáng)度分級
- GB/T 28572-2012大中型水輪機(jī)進(jìn)水閥門系列
- GB/T 21287-2021電子特氣三氟化氮
- GB/T 13818-2009壓鑄鋅合金
- CB/T 3780-1997管子吊架
- 2009-2022歷年湖北省選調(diào)生招錄考試《綜合知識和行政職業(yè)能力測驗(yàn)》真題含答案帶詳解2022-2023上岸資料匯編1
- 錫精礦進(jìn)口中英文合同模板
評論
0/150
提交評論