數(shù)據(jù)庫sql第10章安全管理_第1頁
數(shù)據(jù)庫sql第10章安全管理_第2頁
數(shù)據(jù)庫sql第10章安全管理_第3頁
數(shù)據(jù)庫sql第10章安全管理_第4頁
數(shù)據(jù)庫sql第10章安全管理_第5頁
已閱讀5頁,還剩36頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、第10章 安全管理10.1 SQL 2008安全管理的結構10.2 服務器安全管理10.3 數(shù)據(jù)庫安全管理10.4 架構安全管理10.5 權限管理的TSQL語句10.1 SQL 2008安全管理的結構安全管理的結構 n用戶必須通過系統(tǒng)對用戶連接賬號和密碼的身份驗證(即登錄名和密碼驗證),才可以連接SQL Server 2008服務器。如果要使用服務器中的資源,如:數(shù)據(jù)庫等,還必須具備相應的操作權限。因此,在SQL Server中對安全性的管理主要包括兩個階段:身份驗證和權限驗證。n在SQL Server 2008中為了便于用戶權限管理,提供了兩類角色:服務器角色和數(shù)據(jù)庫角色。服務器角色預定義了

2、幾種對服務器執(zhí)行操作權限的分組,如創(chuàng)建數(shù)據(jù)庫、設置服務器選項等,通過將連接服務器的登錄名歸入對應的服務器角色,可以使該登錄名具有服務器角色所具有的權限。數(shù)據(jù)庫角色預定義了幾類對數(shù)據(jù)庫執(zhí)行操作權限的分組。n而數(shù)據(jù)庫用戶與服務器登錄名之間則是通過映射來建立對應的關系,即當用戶使用登錄名和密碼連接服務器后,如果數(shù)據(jù)庫中有對應的用戶與登錄名之間存在映射關系,則該用戶可以訪問數(shù)據(jù)庫。 SQL Server安全管理體系結構 10.2 服務器安全管理n在SQL Server中,對服務器的安全管理是SQL Server系統(tǒng)安全性管理的第一層次。SQL Server通過排除非法用戶對SQL Server服務器的

3、連接,來防止外來的非法入侵。n10.2.1 SQL Server身份驗證模式身份驗證模式nSQL Server用于連接服務器的身份驗證主要有兩種模式:Windows身份驗證和SQL Server身份驗證。Windows身份驗證模式。此模式允許用戶使用Windows操作系統(tǒng)的域用戶管理和本地用戶管理模塊來對用戶身份進行驗證。SQL Server身份驗證模式。SQL Server身份驗證模式與Windows驗證模式不同, SQL Server負責把用戶連接服務器的登錄名、密碼與syslogins表的登錄項進行比較,如果能夠在syslogins表中找到匹配的數(shù)據(jù)行,用戶就可以通過驗證,連接服務器。1

4、0.2.2 SQL Server身份驗證模式設置身份驗證模式設置 nSQL Server身份驗證是服務器端執(zhí)行的任務,因此SQL Server身份驗證模式需要在服務器端進行設置。在SQL Server 2008中,系統(tǒng)將上述兩種身份驗證模式組合成為兩項模式供用戶選擇:Windows身份驗證模式、SQL Server和Windows身份驗證模式。其中第二項驗證模式是混合型的驗證模式,即服務器可以使用兩種模式對用戶連接進行身份驗證。 10.2.3 SQL Server登錄名管理登錄名管理 n登錄名是客戶端連接服務器時,向服務器提交的用于身份驗證的憑據(jù),也是SQL Server服務器安全性管理中的基

5、本構件。n根據(jù)身份驗證模式的不同,在SQL Server中登錄名有兩種:Windows登錄名登錄名和SQL Server標準登錄名標準登錄名。Windows登錄名是指由Windows操作系統(tǒng)的用戶賬號對應到SQL Server的登錄名,此類登錄名主要用于Windows身份驗證模式;SQL Server標準登錄名是由SQL Server獨立維護并用于SQL Server身份驗證模式的登錄名。 10.2.3 SQL Server登錄名管理登錄名管理n1、創(chuàng)建SQL Server標準登錄名 1、在SQL Server Management Studio的“對象資源管理器對象資源管理器”窗口中,展開服

6、務器、安全性節(jié)點。2、右擊“登錄名登錄名”,在右鍵菜單中選擇“新建登錄名新建登錄名”。 3、在 “登錄名登錄名新建新建”對話框中,輸入登錄名的名稱為“Sale”,選擇身份驗證模式為“SQL Server身份驗證”;設置密碼為“password1”,選中“強制實施密碼策略”、“強制密碼過期”和“用戶在下次登錄時必須更改密碼”等項。指定默認數(shù)據(jù)庫為“master”,最后單擊“確定確定”,完成登錄名創(chuàng)建。n 1、創(chuàng)建SQL Server標準登錄名 n創(chuàng)建登錄名的操作同樣可以使用TSQL語句來完成,所用的TSQL語句為“CREATE LOGIN”,其語法如下:CREATE LOGIN loginNam

7、e WITH | FROM := PASSWORD = password | hashed_password HASHED MUST_CHANGE , ,. := SID = sid | DEFAULT_DATABASE = database | DEFAULT_LANGUAGE = language | CHECK_EXPIRATION = ON | OFF | CHECK_POLICY = ON | OFF | CREDENTIAL = credential_name := WINDOWS WITH ,. | CERTIFICATE certname | ASYMMETRIC KEY as

8、ym_key_name := DEFAULT_DATABASE = database | DEFAULT_LANGUAGE = languagen主要參數(shù)的含義如下:loginName,新建的登錄名的名稱。PASSWORD,新登錄名的密碼,用于SQL Server標準登錄名中,不能用于Windows登錄名的創(chuàng)建。MUST_CHANGE,此項對應“用戶在下次登錄時必須更改密碼”的選項,適用于SQL Server標準登錄名。DEFAULT_DATABASE,指定登錄名連接時默認打開的數(shù)據(jù)庫。DEFAULT_LANGUAGE,登錄名默認使用的語言。CHECK_EXPIRATION,對應于“強制密碼過

9、期”選項,用于指定SQL Server標準登錄名是否使用強制密碼過期策略,可以選擇ON|OFF兩項,ON表示實施強制密碼過期策略,OFF表示不實施。n例如以下代碼創(chuàng)建了一個新登錄名“Sales1”,密碼為“password1”,并且“強制實施密碼策略”和“強制密碼過期”。指定默認數(shù)據(jù)庫為“NetSales”數(shù)據(jù)庫。CREATE LOGIN Sale1WITH PASSWORD=password1,CHECK_EXPIRATION=ON, CHECK_POLICY=ON,DEFAULT_DATABASE = NetSales10.2.3 SQL Server登錄名管理登錄名管理n2、創(chuàng)建Wind

10、ows登錄名nWindows登錄名可以與單個Windows賬號對應,也可以與Windows用戶組和內置安全主體對應。nDEMO CREATE LOGIN DATASERVERCustomer_service_team FROM WINDOWS WITH DEFAULT_DATABASE=master10.2.3 SQL Server登錄名管理登錄名管理n3、系統(tǒng)登錄名 n在SQL Server安裝完畢后,會默認提供多個系統(tǒng)登錄名。這些登錄名可用于用戶連接SQL Server系統(tǒng),主要包括:sa、域或本機名稱Administrator、BUILTINAdministrator、NT AUTHOR

11、ITYNETWORK SERVICE、NT AUTHORITYSYSTEM等等。sa。sa是SQL Server內置的系統(tǒng)管理員登錄名,該登錄名擁有對SQL Server服務器執(zhí)行各項操作的權限。域或本機名稱Administrator,BUILTINAdministrator。Windows域或本機管理員的用戶賬號及用戶組會在SQL Server安裝過程中被加入到SQL Server登錄名中,且都是系統(tǒng)管理員角色的成員,擁有系統(tǒng)管理員的權限。NT AUTHORITYNETWORK SERVICE、NT AUTHORITYSYSTEM。這些登錄名是在SQL Server安裝過程中設置用于啟動SQ

12、L Server代理服務、分析服務和報表服務的登錄名。10.2.3 SQL Server登錄名管理登錄名管理n4、登錄名的修改和刪除n在SQL Server Management Studio中修改登錄名的操作過程如下:1、在SQL Server Management Studio的“對象資源對象資源管理器管理器”窗口中,展開服務器、安全性、登錄名節(jié)點。2、在“登錄名登錄名”節(jié)點中,雙擊要修改的登錄名,可以在“登錄名屬性登錄名屬性”對話框中,對選定的登錄名進行修改。n修改登錄名的TSQL語句為“ALTER LOGIN”,例如以下代碼修改登錄名“Sale”的密碼為“password2”。ALTE

13、R LOGIN Sale WITH PASSWORD=password210.2.3 SQL Server登錄名管理登錄名管理n4、登錄名的修改和刪除n在SQL Server Management Studio中刪除登錄名的過程如下:1、在SQL Server Management Studio的“對象資源管理器對象資源管理器”窗口中,展開服務器、安全性、登錄名節(jié)點。2、在“登錄名登錄名”節(jié)點中,右擊要刪除的登錄名,在右鍵菜單中選擇“刪除刪除”,然后在“刪除對象刪除對象”對話框中“確定確定”刪除,即可完成登錄名的刪除。n刪除登錄名的TSQL語句為“DROP LOGIN”,語法規(guī)則如下:DROP

14、 LOGIN login_namen例如以下代碼可以刪除了登錄名“Sale_N”。DROP LOGIN Sale_Nn但是,必須注意的是有些登錄名是不能刪除的,包括:現(xiàn)為某個數(shù)據(jù)庫的擁有者。在msdb數(shù)據(jù)庫中某項作業(yè)(job)的所有者。目前正在連接的用戶。sa登錄名也不能刪除。10.2.3 SQL Server登錄名管理登錄名管理n5、登錄名的禁用和啟用n對于暫時不用,但不想刪除的登錄名,可以設置登錄名的狀態(tài),將登錄名禁用。在需要使用時,也可以通過啟用,使登錄名恢復使用。上述操作都可以在“登錄名屬性登錄名屬性”對話框中完成。操作過程如下:1、在SQL Server Management Stu

15、dio的“對象資源對象資源管理器管理器”窗口中,展開服務器、安全性節(jié)點。2、選擇“安全性安全性”節(jié)點的某個登錄名,雙擊該登錄名,進入“登錄名屬性登錄名屬性”對話框。3、選擇左側的“狀態(tài)狀態(tài)”選項,可以設置“是否允許連是否允許連接到數(shù)據(jù)庫引擎接到數(shù)據(jù)庫引擎”和“登錄登錄”狀態(tài)。10.2.4 服務器角色服務器角色 n系統(tǒng)默認提供了9類固定服務器角色,這些固定服務器角色的含義如下:bulkadmin。屬于該服務器角色的成員可以執(zhí)行大數(shù)據(jù)量的操作,如 BULK INSERT。dbcreator。屬于該服務器角色的成員可以創(chuàng)建、更改、刪除和還原數(shù)據(jù)庫。diskadmin。屬于該服務器角色的成員可以管理磁

16、盤文件。processadmin。屬于該服務器角色的成員可以結束在數(shù)據(jù)庫引擎實例中執(zhí)行的進程。securityadmin。屬于該服務器角色的成員可以管理登錄名及其屬性,可以執(zhí)行GRANT、DENY和REVOKE來管理登錄名在服務器和數(shù)據(jù)庫級別中的權限,以及重新設置登錄名的密碼。serveradmin。屬于該服務器角色的成員是服務器的管理員,可以配置服務器的選項或關閉服務器。setupadmin。屬于該服務器角色的成員可以添加和刪除鏈接服務器,并可以執(zhí)行某些系統(tǒng)存儲過程。sysadmin。屬于該服務器角色的成員是系統(tǒng)管理員,可以在數(shù)據(jù)庫引擎中執(zhí)行任何操作。如對服務器中的對象執(zhí)行創(chuàng)建、修改或刪除,

17、更改各項設置等。public。public服務器角色是一個比較特殊的角色,任何登錄名都屬于public角色,但這個角色的權限較小,一般只具有連接服務器的權限。10.2.5 登錄名授權登錄名授權 n如果固定服務器角色無法滿足對登錄名進行授權的要求,可以通過對登錄名進行權限設置,把服務器級安全對象的訪問權限授予登錄名。n在SQL server2008中,安全對象是指可以由系統(tǒng)進行權限控制,并可供用戶訪問的系統(tǒng)資源、進程以及對象等。服務器級的安全對象包括:端點端點、登錄名登錄名和數(shù)據(jù)庫數(shù)據(jù)庫。將服務器級安全對象的訪問權限授予登錄名,則登錄名連接服務器后,就可以執(zhí)行權限賦予的操作。n權限的授予有三種方

18、式:授予授予、具有授予具有授予和拒絕拒絕。 授予授予:表示給予登錄名選中的權限。不選中,則表示取消登錄名的該項權限。但是如果登錄名從其他途徑(如從固定服務器角色中繼承)獲得了此項權限,則登錄名還是可以執(zhí)行此項權限。具有授予權限具有授予權限:表示當前登錄名擁有將選中的權限授予其他登錄名的權限。拒絕拒絕:表示明確否決登錄名使用選中的權限。這表明,雖然此登錄名還可能會從其他途徑,如服務器角色繼承等方式獲得此項權限,但明確拒絕后,此登錄名將無法使用從其他途徑獲得的此項權限。 10.3 數(shù)據(jù)庫安全管理數(shù)據(jù)庫安全管理 n在SQL Server 2008中,對于數(shù)據(jù)庫的安全管理是通過數(shù)據(jù)庫用戶權限管理來實現(xiàn)

19、的。登錄名連接服務器后,如果需要訪問數(shù)據(jù)庫,必須將登錄名與數(shù)據(jù)庫中的用戶之間建立映射,建立映射后,該登錄名在此數(shù)據(jù)庫的權限是:登錄名本身具有的對數(shù)據(jù)庫進行操作的權限和被映射的數(shù)據(jù)庫用戶權限的并集。 10.3.1 數(shù)據(jù)庫用戶數(shù)據(jù)庫用戶 n數(shù)據(jù)庫用戶是數(shù)據(jù)庫級的安全主體,是對數(shù)據(jù)庫進行操作的對象。要使數(shù)據(jù)庫能被用戶訪問,數(shù)據(jù)庫中必須建有用戶。系統(tǒng)為每個數(shù)據(jù)庫自動創(chuàng)建了:INFORMATION_SCHEMA、sys、dbo和guest。dbo:是數(shù)據(jù)庫所有者用戶。顧名思義,dbo用戶對數(shù)據(jù)庫擁有所有權限,并可以將這些權限授予其他用戶。在SQL Server 2008中,創(chuàng)建數(shù)據(jù)庫的用戶默認就是數(shù)據(jù)庫

20、的所有者,從屬于服務器角色“sysadmin”的登錄名會自動被映射為dbo用戶,因此“sysadmin”角色的成員就具有對數(shù)據(jù)庫執(zhí)行任何操作的權限。guest:是數(shù)據(jù)庫客人的用戶。當數(shù)據(jù)庫中存在guest用戶,則所有登錄名,不管是否具有訪問數(shù)據(jù)庫的權限,都可以訪問guest用戶所在的數(shù)據(jù)庫。因此,guest用戶的存在會降低系統(tǒng)的安全性。但是,在用戶數(shù)據(jù)庫中guest用戶默認處于關閉狀態(tài),而在master和tempdb數(shù)據(jù)庫中出于系統(tǒng)運行需要,guest用戶是開啟的。sys和INFORMATION_SCHEMA:此兩類用戶是為使用sys和INFORMATION_SCHEMA架構的視圖而創(chuàng)建的用戶

21、。10.3.1 數(shù)據(jù)庫用戶數(shù)據(jù)庫用戶n1、創(chuàng)建數(shù)據(jù)庫用戶n在SQL Server Management Studio創(chuàng)建數(shù)據(jù)庫用戶的過程如下:1、在SQL Server Management Studio的“對象資源對象資源管理器管理器”窗口中,展開服務器、數(shù)據(jù)庫、安全性、用戶節(jié)點,可以查看當前數(shù)據(jù)庫中的用戶。2、右擊“用戶用戶”節(jié)點,在右鍵菜單中選擇“新建用新建用戶戶”。3、在“數(shù)據(jù)庫用戶數(shù)據(jù)庫用戶新建新建”對話框中,輸入“用戶名稱”,在“登錄名”項中,可以輸入要建立映射的登錄名,也可以通過單擊其后的按鈕,在“選擇登錄名選擇登錄名”對話框中進行選擇。在“默認架構”中可以輸入或者選擇架構的名稱

22、,如果此項不輸入,用戶的默認架構就是dbo。在中間的“此用戶擁有的架構”列表中列出了當前數(shù)據(jù)庫中所有的架構,可以根據(jù)需要進行選擇。10.3.1 數(shù)據(jù)庫用戶數(shù)據(jù)庫用戶n創(chuàng)建用戶的TSQL語句是“CREATE USER”,語法規(guī)則如下:CREATE USER user_name FOR | FROM LOGIN login_name WITH DEFAULT_SCHEMA = schema_name n各主要參數(shù)的含義如下:user_name,數(shù)據(jù)庫用戶的名稱。login_name,與數(shù)據(jù)庫用戶建立映射的登錄名。WITH DEFAULT_SCHEMA = schema_name,指定默認的架構。n

23、例如以下代碼,在數(shù)據(jù)“NetSale”中創(chuàng)建了一個與Windows登錄名同名的新用戶“DATASERVERCustomer_service1” 。USE NetSales GOCREATE USER DATASERVERCustomer_service1WITH DEFAULT_SCHEMA=dbo10.3.1 數(shù)據(jù)庫用戶數(shù)據(jù)庫用戶n2、修改數(shù)據(jù)庫用戶n在SQL Server Management Studio中修改用戶的操作與修改登錄名的操作類似,主要步驟如下:1、在SQL Server Management Studio的“對象資源管理器對象資源管理器”窗口中,展開服務器、數(shù)據(jù)庫、安全性、

24、用戶節(jié)點。2、在“用戶用戶”節(jié)點下,雙擊要修改的用戶,然后在“數(shù)據(jù)庫用戶屬性數(shù)據(jù)庫用戶屬性”對話框中,可以對現(xiàn)有數(shù)據(jù)庫用戶的屬性進行設置,但是不能更改“登登錄名錄名”。n在TSQL中修改數(shù)據(jù)庫用戶名的語句是“ALTER USER”,可以對現(xiàn)有數(shù)據(jù)庫用戶的名稱、默認架構和映射對應的登錄名進行修改,基本語法規(guī)則如下:ALTER USER userName WITH ,.n := NAME = newUserName | DEFAULT_SCHEMA = schemaName | LOGIN = loginNamen如以下代碼,把數(shù)據(jù)庫用戶“Sale_user”的名稱修改為“Sale_Mgt”,默認

25、架構為“db_datareader”。USE NetSalesGOALTER USER Sale_userWITH NAME=Sale_Mgt,DEFAULT_SCHEMA=db_datareader10.3.1 數(shù)據(jù)庫用戶數(shù)據(jù)庫用戶n3、刪除數(shù)據(jù)庫用戶n刪除數(shù)據(jù)庫用戶的TSQL語句為“DROP USER”,語法規(guī)則如下:DROP USER user_namen如以下代碼可以刪除“Sale_Mgt”。DROP USER Sale_Mgt10.3.2 數(shù)據(jù)庫角色數(shù)據(jù)庫角色 n在SQL Server 2008中共提供了10種固定數(shù)據(jù)庫角色,這些數(shù)據(jù)庫角色代表的含義如下:db_accessadmin

26、:可建立和管理數(shù)據(jù)庫用戶。db_backupoperator:可執(zhí)行數(shù)據(jù)庫備份操作。db_dbreader:可以從數(shù)據(jù)庫中讀取表中的數(shù)據(jù)。db_datawriter:可以對數(shù)據(jù)庫的表執(zhí)行寫的操作,如添加、修改和刪除數(shù)據(jù)。db_ddladmin:可以在數(shù)據(jù)庫中執(zhí)行DDL語句,即可以創(chuàng)建、修改、刪除數(shù)據(jù)庫對象,如數(shù)據(jù)表、視圖、存儲過程等。db_denydatareader:拒絕讀取數(shù)據(jù)庫中的數(shù)據(jù),無論用戶是否通過其他途徑獲取了數(shù)據(jù)讀取的操作權限。db_denydatawrite:拒絕對數(shù)據(jù)庫中數(shù)據(jù)執(zhí)行寫的操作,無論用戶是否通過其他途徑獲取了數(shù)據(jù)寫入的操作權限。db_owner:數(shù)據(jù)庫的所有者,可以

27、在數(shù)據(jù)庫中執(zhí)行所有操作,dbo用戶是其中的成員。db_securityadmin:可以管理數(shù)據(jù)庫角色及角色中的成員,也可管理語句權限和對象權限。Public:默認只有讀取數(shù)據(jù)的權限。每個新建的數(shù)據(jù)庫用戶都會成為其中的成員。與其他數(shù)據(jù)庫角色不同,public角色的權限雖然較少,但是可以通過修改public的權限來賦予更多權限。當然,由于public權限的特殊性,還是不應該給public賦予過多的權限。10.3.3 應用程序角色應用程序角色 n創(chuàng)建應用程序角色DEMOn使用應用程序角色n要使用應用程序角色,可以在應用程序代碼中激活此應用程序角色,激活代碼如下:Sp_setapprole rolen

28、ame= SaleAppRole,password=123456n應用程序角色激活后,應用程序就可以通過此應用程序角色來獲得對“NetSales”數(shù)據(jù)庫中數(shù)據(jù)表“訂單表”進行訪問的權限。10.3.4 管理角色的管理角色的TSQL語句語句 n1、創(chuàng)建數(shù)據(jù)庫角色的TSQL代碼n創(chuàng)建數(shù)據(jù)庫角色可以使用“CREATE ROLE”語句,語法規(guī)則如下:CREATE ROLE role_name AUTHORIZATION owner_name n其中role_name為數(shù)據(jù)庫角色名稱,owner_name所有者用戶的名稱或角色,如果未指定,是默認為dbo。例如以下代碼創(chuàng)建了一個名稱為“Order_deal

29、er”數(shù)據(jù)庫角色,所有者為“dbo”。USE NetSalesGOCREATE ROLE Order_dealer AUTHORIZATION dboGO10.3.4 管理角色的管理角色的TSQL語句語句n2、創(chuàng)建應用程序角色的TSQL代碼n創(chuàng)建應用程序角色可以使用“CREATE APPLICATION ROLE”語句,語法規(guī)則如下:CREATE APPLICATION ROLE application_role_name WITH PASSWORD = password , DEFAULT_SCHEMA = schema_name n例如以下代碼,創(chuàng)建了一個名稱為“Order_App_Rol

30、e”的應用程序角色,默認架構為“dbo”,密碼為“123456”。USE NetSalesGOCREATE APPLICATION ROLE Order_App_Role WITH PASSWORD = 123456, DEFAULT_SCHEMA = dboGO10.3.4 管理角色的管理角色的TSQL語句語句n3、修改和刪除角色的TSQL代碼n修改數(shù)據(jù)庫角色和應用程序角色的TSQL代碼分別為:ALTER ROLE和ALTER APPLICATION ROLE,例如以下代碼分別修改了數(shù)據(jù)庫角色“Order_dealer”和應用程序角色“Order_App_Role”,其中將前者名稱修改為“O

31、rder_dealers”,后者修改了應用程序角色的密碼為“abcdef”。USE NetSalesGOALTER ROLE Order_dealer WITH NAME =Order_dealersGOALTER APPLICATION ROLE Order_App_Role WITH PASSWORD = abcdef, DEFAULT_SCHEMA = dboGOn刪除數(shù)據(jù)庫角色和應用程序角色的TSQL代碼分別為:DROP ROLE 和DROP APPLICATION ROLE。如以下語句可以刪除上述創(chuàng)建的數(shù)據(jù)庫角色“Order_dealers”和應用程序角色“Order_App_Rol

32、e”。USE NetSalesGODROP ROLE Order_dealersGODROP APPLICATION ROLE Order_App_Role GO10.3.4 管理角色的管理角色的TSQL語句語句n4、添加角色成員的TSQL代碼n如果需要將用戶或角色添加到角色成員中,可以使用系統(tǒng)存儲過程sp_addrolemember,相應的TSQL代碼語法如下:sp_addrolemember rolename = role, membername = security_account主要參數(shù)的含義如下:nrolename,被添加角色或用戶名的角色名稱;membername,用作成員的用戶或

33、角色名稱。n例如以下代碼創(chuàng)建了數(shù)據(jù)庫用戶“ORDER1”,并歸屬到“db_ddladmin”角色中。USE NetSales GOCREATE USER ORDER1 FOR LOGIN SaleGOExec sp_addrolemember db_ddladmin, ORDER1 GO10.3.5 數(shù)據(jù)庫用戶授權數(shù)據(jù)庫用戶授權 n對數(shù)據(jù)庫用戶權限的設置可以通過數(shù)據(jù)庫角色來實現(xiàn),也可以通過對數(shù)據(jù)庫用戶設置數(shù)據(jù)庫級安全對象的操作權限來實現(xiàn)。數(shù)據(jù)庫級的安全對象包括用戶、應用程序角色、程序集、消息類型、服務、路由、遠程服務綁定、全文目錄、證書、非對稱密鑰、約定、對稱密鑰、架構等。n權限種類會因為安全

34、對象的不同而有所變化,但大體包括以下幾種權限:插入、查看定義、查看更改跟蹤、更改、更新、接管所有權、控制、刪除、選擇、引用和執(zhí)行等幾種。對于數(shù)據(jù)表、視圖和返回表的函數(shù)等安全對象,在設置“選擇”、“更新”和“引用”權限時還可以對具體可操作的“列”進行控制,如只能查看表中的部分列,而不能查看某些列。 10.4 架構安全管理架構安全管理 n架構是SQL Server 2005版開始引進的一項新特征,其主要作用是將多個數(shù)據(jù)庫對象歸屬到架構中,以解決用戶與對象之間因從屬關系而引起的管理問題。SQL Server 提供的示例數(shù)據(jù)庫“AdventureWorks”是一個架構應用的典型實例。n架構級安全對象包

35、括:類型類型、XML架構集合架構集合、聚合聚合、約束約束、函數(shù)函數(shù)、過程過程、隊列隊列、統(tǒng)計信息統(tǒng)計信息、同義詞同義詞、表表、視圖視圖等。這些對象包含在架構內,如果需要調用架構內的對象,需要指定架構的名稱,如以下代碼查詢AdventureWorks 庫中Department表Name和GroupName列的數(shù)據(jù),由于Department表屬于架構HumanResources,因此需要指明架構的名稱。SELECT Name, GroupName FROM HumanResources.Departmentndbo是系統(tǒng)默認架構。因此如果架構是dbo,則無需指明架構名稱。 10.4.1 創(chuàng)建架構創(chuàng)

36、建架構 n在SQL Server Management Studio中創(chuàng)建架構的過程如下:1、在SQL Server Management Studio的“對象資源對象資源管理器管理器”窗口中,展開服務器、數(shù)據(jù)庫(“NetSales”)、安全性、架構等節(jié)點。2、右擊“架構架構”,在右鍵菜單中選擇“新建架構新建架構”,在 “新建架構新建架構”對話框中輸入架構名稱:Orders,架構所有者:Product_Mgt。3、單擊“確定確定”后,完成架構的創(chuàng)建。10.4.1 創(chuàng)建架構創(chuàng)建架構n創(chuàng)建架構的TSQL語句為“CREATE SCHEMA”,語法規(guī)則如下:CREATE SCHEMA schema_n

37、ame_clause .n := schema_name | AUTHORIZATION owner_name | schema_name AUTHORIZATION owner_name := table_definition | view_definition | grant_statement revoke_statement | deny_statement n主要參數(shù)含義如下:schema_name,架構名稱。AUTHORIZATION owner_name,架構的所有者,可以是數(shù)據(jù)庫用戶、數(shù)據(jù)庫角色和應用程序角色。table_definition,數(shù)據(jù)表的定義語句,在創(chuàng)建架構的語句

38、中可以包含數(shù)據(jù)表的創(chuàng)建,新建的數(shù)據(jù)表從屬于該架構。view_definition,視圖的定義語句,在創(chuàng)建架構的語句中可以包含視圖的創(chuàng)建,新建的視圖從屬于該架構。grant_statement |revoke_statement | deny_statement,權限設置情況。 n例如以下代碼,創(chuàng)建了一個名稱為“Sales_SCHEMA”,所有者為數(shù)據(jù)庫角色“db_owner”的新架構。CREATE SCHEMA Sales_SCHEMA AUTHORIZATION db_owner 10.4.2 在架構中添加對象在架構中添加對象 n1、在SQL Server Management Studio

39、的“對象對象資源管理器資源管理器”窗口中,展開服務器、數(shù)據(jù)庫(“NetSales”)、表等節(jié)點。n2、在“表表”節(jié)點下,右擊“訂單表訂單表”,在右鍵菜單中選擇“設計設計”。在 “數(shù)據(jù)表設計數(shù)據(jù)表設計器器”窗口中,修改“屬性屬性”窗口中的“架構架構”為“Orders”。n3、保存對表的上述修改。在“對象資源管理器對象資源管理器”的“表表”節(jié)點下,“訂單表”前綴已被更新為“Order”,表明該表已添加到架構“Orders”。 10.4.3 在架構中移動對象在架構中移動對象 n架構中的對象在需要情況下可以移動到其他架構中。移動對象到其他架構的TSQL語句為ALTER SCHEMA,語法規(guī)則如下:AL

40、TER SCHEMA schema_name TRANSFER securable_namesecurable_name 是待移動的對象,需要使用“架構名.對象名”的形式來標注出待移動的架構;schema_name是目標架構。n如以下代碼表示將“訂單細節(jié)表”從“dbo”架構中移動到“Orders”。ALTER SCHEMA Orders TRANSFER dbo.訂單細節(jié)表10.4.4 設置架構權限設置架構權限 n1、在SQL Server Management Studio的“對象對象資源管理器資源管理器”窗口中,展開服務器、數(shù)據(jù)庫(“NetSales”)、安全性和架構等節(jié)點。n2、在“架構

41、架構”節(jié)點下,雙擊要設置權限的架構“Orders”。n3、在“架構屬性架構屬性”對話框,單擊左側的“權限權限”。在“權限權限”選項頁中,單擊“搜索搜索”按鈕。n4、在“選擇用戶或角色選擇用戶或角色”對話框中輸入“Product_Mgt”用戶,單擊“確定確定”后返回到“架構屬性架構屬性”對話框。n5、在“顯式顯式”權限列表中,授予操作權限。 10.5 權限管理的權限管理的TSQL語句語句 n對登錄名、服務器角色、數(shù)據(jù)庫用戶、數(shù)據(jù)庫角色、應用程序角色等安全主體設置權限的TSQL權限管理語句包括:GRANT、DENY和REVOKE 。n10.5.1 GRANT授權nGRANT語句是授權語句,使用GR

42、ANT語句可以給安全主體授予訪問安全對象的權限。GRANT語句的語法規(guī)則如下:GRANT ALL PRIVILEGES | permission ( column ,.n ) ,.n ON class : securable TO principal ,.n WITH GRANT OPTION AS principal n各主參數(shù)的含義如下:ALL,將安全對象的所有操作權限(除ALTER、TAKE OWNERSHIP之外)授予給指定的安全主體。但是除:數(shù)據(jù)庫、標量函數(shù)、表函數(shù)、存儲過程、表、視圖等安全對象可以使用ALL來代表表中的權限外,其余安全對象不能使用ALL,必須明確列出權限名稱。此選項主要用于兼容早期版本,不推薦使用此選項。PRIVILEGES,用于提供與ANSI-92的兼容。Permission,權限名稱,如SELECT、UPDATE等。column ,.n ,在表、視圖、表值函數(shù),用于對列權限的設置。class :指定將授予其權限的安全對象的類。Secura

溫馨提示

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

評論

0/150

提交評論