設置權限
不論用戶(hù)或角色,都是權限的設置對象。除了應用程序角色較特殊,與其他角色及用
戶(hù)有相互排斥關(guān)系外,數據庫角色及成員在權限的關(guān)系上非常密切。一個(gè)用戶(hù)可能同時(shí)隸
屬于多個(gè)數據庫角色,每一角色又可擁有不同權限,此時(shí)用戶(hù)獲取實(shí)際權限的原則是“并
集”,除非有 deny(禁止)的設置。如角色 A 禁止讀取數據表 B,但角色 C 可讀取數據表
B,此時(shí)同時(shí)隸屬角色 A 和 C 的用戶(hù),仍無(wú)法讀取數據表 B,因為他已被禁止。
在權限的作用對象上,可分為服務(wù)器及數據庫,即這兩者可分別設置權限,請見(jiàn)如下
說(shuō)明。
指定服務(wù)器權限
(1)在對象資源管理器的服務(wù)器上右擊,再選擇“屬性”。
(2)在對話(huà)框中切換至“權限”。
(3)在“登錄名或角色”中選擇要設置權限的對象,在“顯式權限”中分別勾選授權,
完成后單擊“確定”按鈕,如圖 15-21 所示。
如圖 15-21 所示,就是對服務(wù)器的權限設置。“授權者”就是當前登錄至 SQL Server
服務(wù)器的登錄名;“權限”是所有當前登錄名可設置的權限;“授予”表示授予權限;若勾
選“具有授予”,表示 sa 授予選中對象的權限可再授予其他登錄名;“拒絕”就是禁止使用。
這三個(gè)選項的選擇有其連帶關(guān)系,勾選“拒絕”,就自動(dòng)清除“授予”及“具有授予”;若
勾選“具有授予”,則清除“拒絕”并選擇“授予”。
“登錄名或角色”就是被設置權限的對象,讀者可單擊“添加”按鈕,指定其他登錄
名或角色,但所有內置服務(wù)器角色均無(wú)法更改權限,但可以為 public 角色指定權限。
若要查看當前選擇登錄名或角色的權限,請單擊“有效權限”按鈕,因為有效權限可
能不止在圖 15-21 中設置,還要視登錄名所屬的角色而定。所以圖 15-21 只會(huì )顯示在此設
置定義的權限,默認已有的權限則不會(huì )顯示。
圖 15-21 設置服務(wù)器權限
指定數據庫權限
(1)在對象資源管理器中選擇 eBook 數據庫,右擊后選擇“屬性”。
(2)在對話(huà)框中切換至“權限”。
(3)在“用戶(hù)或角色”中選擇要設置權限的對象,“顯式權限”中分別勾選權限,完
成后單擊“確定”按鈕,如圖 15-22 所示。
對象權限
(1)在對象資源管理器中選擇 eBook 數據庫,打開(kāi)“數據表”,選擇“Orders”數據
表,右擊后選擇“屬性”。
(2)在對話(huà)框中切換至“權限”。
(3)單擊“添加”按鈕,再在對話(huà)框中指定要更改權限的用戶(hù)、數據庫角色或應用程
序角色。
(4)在“用戶(hù)或角色”中選擇要設置權限的對象,“顯式權限”中分別勾選權限,完
成后單擊“確定”按鈕,如圖 15-23 所示。
圖 15-21 及圖 15-23 的操作方式完全相同,區別是分別設置服務(wù)器、數據庫及對象的
權限,可設置的對象也不同。在圖 15-21 中可為登錄名及服務(wù)器角色指定權限,在圖 15-22
及圖 15-23 中可為用戶(hù)、數據庫角色及應用程序角色指定權限;另一區別是可指定的權限
內容不同。
圖 15-22 設置數據庫權限
圖 15-23 設置對象權限
權限內容
SQL Server 可設置的權限內容非常復雜,由服務(wù)器到對象共有 94 個(gè)權限,較難理解的
是服務(wù)器及數據庫的屬性,重要項目如表 15-4 所示。
表 15-4 重要權限說(shuō)明
權限內容 說(shuō)明
CONTROL 將類(lèi)似所有權的能力授予給被授予者。被授予者實(shí)際上擁有安全對
象上已定義的所有權限
ALTER 授予更改特定安全對象的屬性(除了所有權之外)的能力。在特定范
圍授予 ALTER 權限時(shí),也會(huì )一起授予更改、創(chuàng )建或刪除該范圍內
包含的任何安全對象的能力
ALTER ANY <服務(wù)器安全對象> 授予創(chuàng )建、更改或刪除服務(wù)器安全對象的個(gè)別實(shí)例的能力
ALTER ANY <數據庫安全對象> 授予 CREATE、ALTER 或 DROP 數據庫安全對象的個(gè)別實(shí)例的
能力
TAKE OWNERSHIP 讓被授予者可以取得被授予的安全對象的所有權
CREATE <服務(wù)器安全對象> 將創(chuàng )建服務(wù)器安全對象的能力授予被授予者
CREATE <數據庫安全對象> 將創(chuàng )建數據庫安全對象的能力授予給被授予者
VIEW DEFINITION 讓被授予者能訪(fǎng)問(wèn)元數據
表 15-4 中的“安全對象”指的是權限設置操作的作用對象,如“Create Role”中的“Role”
就是此處的安全對象。
用 T-SQL 設置權限
在 T-SQL 中設置權限可使用 GRANT(授予)、DENY(拒絕)及 REVOKE(撒銷(xiāo))三個(gè)語(yǔ)句,
這三個(gè)語(yǔ)句的用法非常多,基本形式如下:
GRANT ALL 或權限名稱(chēng) ON 對象 TO 用戶(hù)或角色名稱(chēng) WITH 選項
REVOKE ALL 或權限名稱(chēng) ON 對象 TO 用戶(hù)或角色名稱(chēng) CASCADE
DENY ALL 或權限名稱(chēng) ON 對象 TO 用戶(hù)或角色名稱(chēng) CASCADE
每 一 語(yǔ) 句 都 有 三 個(gè) 元 素 , 分 別 是 權 限 名 稱(chēng) 、 對 象 及 用 戶(hù) ( 角 色 ), 如 下
(Ch15\1524Grant.sql):
USE eBook
GRANT SELECT ON OBJECT::dbo.members TO David
GRANT REFERENCES (MemberID) ON OBJECT::dbo.Orders
TO David WITH GRANT OPTION
以上語(yǔ)句是使用 Grant 語(yǔ)句分別授予權限給 David,但對象內容不同,對象名稱(chēng)請以
“OBJECT::”開(kāi)頭,其后最好使用完整名稱(chēng),即加上所有者。第二個(gè) Grant 語(yǔ)句的作用對
象較特殊,“(MemberID) ON OBJECT:: dbo.Orders”,表示作用于 Orders 對象的 MemberID
字段,將此列的視圖權限授予 David。同時(shí)加上“WITH GRANT OPTION”,表示 David 可
再將此權限授予他人,相當于圖 15-23 的“具有授予”。
而在 Revoke 及 Deny 語(yǔ)句中,最后可加入 Cascade,此關(guān)鍵詞的功能是一起撤銷(xiāo) To 之
后用戶(hù)可授予其他人的權限,即取消“具有授予”。
查看可用權限
由于可用權限非常多,在 T-SQL 中沒(méi)有選項可供選擇,所以使用 GRANT、DENY 及
REVOKE 時(shí),必須首先知道權限名稱(chēng)才能進(jìn)行設置。讀者可查看 sys.fn_builtin_permissions、
sys.database_permissions、sys.server_permissions 三個(gè)系統數據表,如圖 15-24 所示。
圖 15-24 查看可用權限
圖 15-24 中的“permission_name”就是可用的權限名稱(chēng),可應用在 Grant、DENY 或
Revoke 語(yǔ)句中。
查看權限內容
若要查看當前登錄名及用戶(hù)的權限內容,可執行 sp_helprotect 存儲過(guò)程,如圖 15-25
所示。
圖 15-25 中的 Grantee 是授予權限的用戶(hù)名稱(chēng),Grantor 是將權限授予他人的用戶(hù)名稱(chēng)。
sp_helprotect 存儲過(guò)程之后最多可使用四個(gè)參數,分別代表對象名稱(chēng)、用戶(hù)名稱(chēng)、授予人名
稱(chēng),第四個(gè)參數可以是 o 或 s,分別代表查詢(xún)對象權限或語(yǔ)句權限。
聯(lián)系客服