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