国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

淺談SQL Server 2005數(shù)據(jù)庫系統(tǒng)的權(quán)限管理

2012-03-19 13:21蘇文萍
關(guān)鍵詞:語句許可對象

蘇文萍

南京市科技信息研究所 江蘇 210018

0 引言

對于一個數(shù)據(jù)庫管理員來說,安全性就意味著必須保證那些具有特殊數(shù)據(jù)訪問權(quán)限的用戶能夠登錄到SQL Server,并且能夠訪問數(shù)據(jù)以及對數(shù)據(jù)庫對象實(shí)施各種權(quán)限范圍內(nèi)的操作;同時,他還要防止所有的非授權(quán)用戶的非法操作。

SQL Server2005提供的安全管理模式建立在安全身份驗(yàn)證和訪問許可兩種機(jī)制上。SQL Server2005中權(quán)限管理的主要對象包括服務(wù)器登錄名、服務(wù)器角色、數(shù)據(jù)庫用戶、數(shù)據(jù)庫角色,搞清楚這些對象間的關(guān)系,對于理解SQL Server2005的權(quán)限管理有很大幫助。比如為大型企業(yè)設(shè)計(jì)數(shù)據(jù)庫的時候必然考慮到角色劃分、權(quán)限劃分的問題。

1 許可(權(quán)限)管理

1.1 概述

許可用來指定授權(quán)用戶可以使用的數(shù)據(jù)庫對象和這些授權(quán)用戶可以對這些數(shù)據(jù)庫對象執(zhí)行的操作。用戶在登錄到SQL Server之后,其用戶賬號所歸屬的Windows組或角色所被賦予的許可(權(quán)限)決定了該用戶能夠?qū)δ男?shù)據(jù)庫對象執(zhí)行哪種操作以及能夠訪問、修改哪些數(shù)據(jù)。在每個數(shù)據(jù)庫中用戶的許可獨(dú)立于用戶賬號和用戶在數(shù)據(jù)庫中的角色,每個數(shù)據(jù)庫都有自己獨(dú)立的許可系統(tǒng)。

在SQL Server中包括三種類型的許可:

(1) 對象許可:表示對特定的數(shù)據(jù)庫對象(即表、視圖、字段和存儲過程)的操作許可,它決定了能對表、視圖等數(shù)據(jù)庫對象執(zhí)行哪些操作。

(2) 語句許可:表示對數(shù)據(jù)庫的操作許可,也就是說,創(chuàng)建數(shù)據(jù)庫或者創(chuàng)建數(shù)據(jù)庫中的其他內(nèi)容所需要的許可類型稱為語句許可。

(3) 預(yù)定義許可:指系統(tǒng)安裝以后有些用戶和角色不必授權(quán)就有的許可。

許可的管理包括對許可的授權(quán)、否定和收回。在 SQL Server中,可以使用SQL Server管理平臺和Transaction_SQL語句兩種方式來管理許可。

1.2 使用SQL Server 管理平臺管理許可

SQL Server 可通過兩種途徑實(shí)現(xiàn)對用戶許可的設(shè)定:

(1) 面向單一用戶

在數(shù)據(jù)庫用戶常規(guī)選項(xiàng)頁中,如果在“數(shù)據(jù)庫角色成員身份”選項(xiàng)欄中選擇一個數(shù)據(jù)庫角色,實(shí)際上就完成了數(shù)據(jù)庫用戶語句許可的設(shè)置。因?yàn)閷τ谶@些數(shù)據(jù)庫固定角色,SQL Server已經(jīng)定義了其具有哪些語句許可。

(2) 面向數(shù)據(jù)庫對象的許可設(shè)置

在SQL Server 管理平臺中,展開服務(wù)器和數(shù)據(jù)庫,然后選擇需要設(shè)置的用戶對象,即表、視圖、存儲過程等,在右面的頁框中選擇要進(jìn)行許可設(shè)置的對象,右擊該對象,從彈出的快捷菜單中選擇“屬性”選項(xiàng),出現(xiàn)對象屬性對話框,在該對話框中選擇“權(quán)限”頁框,單擊“添加”按鈕設(shè)置好相應(yīng)的對象許可后,單擊“確定”按鈕即可完成數(shù)據(jù)庫對象的許可設(shè)置。

1.3 使用Transaction_SQL 語句管理許可

Transaction-SQL 語句中的數(shù)據(jù)控制語言(DCL)用來設(shè)置或更改數(shù)據(jù)庫用戶或角色權(quán)限的語句,包括 GRANT、REVOKE和DENY三種命令。默認(rèn)狀態(tài)下,只有sysadmin,dbcreator,db_owner或db_securityadmin等人員才有權(quán)力執(zhí)行數(shù)據(jù)控制語言。

1.3.1 GRANT語句

(1) 語句權(quán)限與角色的授予,語法如下:

GRANT <語句權(quán)限>|<角色> [,<語句權(quán)限>|<角色>]…TO< 用 戶 名 >|< 角 色 >|PUBLIC[,< 用 戶 名 >|< 角色>]…[WITH ADMIN OPTION]

例如:給用戶 Mary 和 John 以及 Windows NT 組CorporateBobJ 授予多個語句權(quán)限,語句如下:

GRANT CREATE DATABASE, CREATE TABLE TO Mary, John, [CorporateBobJ]

(2) 對象權(quán)限與角色的授予

數(shù)據(jù)庫管理員擁有系統(tǒng)權(quán)限,而作為數(shù)據(jù)庫的普通用戶,只對自己創(chuàng)建的基本表、視圖等數(shù)據(jù)庫對象擁有對象權(quán)限。如果要共享其他的數(shù)據(jù)庫對象,則必須授予他一定的對象權(quán)限。

同語句權(quán)限的授予類似,SQL語言使用GRANT語句為用戶授予對象權(quán)限,其語法格式為:

GRANT ALL|<對象權(quán)限>[(列名[,列名]…)][,<對象權(quán)限>]…ON <對象名>

TO <用戶名>|<角色>|PUBLIC[,<用戶名>|<角色>]…[WITH ADMIN OPTION]

其語義為:將指定的操作對象的對象權(quán)限授予指定的用戶或角色。

例如:在權(quán)限層次中授予對象權(quán)限。首先,給所有用戶授予 SELECT 權(quán)限,然后,將特定的權(quán)限授予用戶 Mary,John 和 Tom,語句實(shí)現(xiàn)如下:

GRANT SELECT

ON s

TO public

GO

GRANT INSERT, UPDATE, DELETE

ON s

TO Mary, John, Tom

GO

1.3.2 REVOKE語句

REVOKE語句是與GRANT語句相反的語句,它能夠?qū)⒁郧霸诋?dāng)前數(shù)據(jù)庫內(nèi)的用戶或者角色上授予或拒絕的權(quán)限刪除,但是該語句并不影響用戶或者角色從其他角色中作為成員繼承過來的權(quán)限。

(1) 語句權(quán)限與角色的收回

數(shù)據(jù)庫管理員可以使用 REVOKE語句收回語句權(quán)限,其語法格式為:

REVOKE <語句權(quán)限>|<角色> [,<語句權(quán)限>|<角色>]…

FROM <用戶名>|<角色>|PUBLIC[,<用戶名>|<角色>]…

例如:收回用戶 ZHANGYILIN所擁有的 CREATE TABLE的語句權(quán)限,實(shí)現(xiàn)如下:

REVOKE CREATE TABLE

FROM ZHANGYILIN

(2) 對象權(quán)限與角色的收回

所有授予出去的權(quán)力在必要時都可以由數(shù)據(jù)庫管理員和授權(quán)者收回,收回對象權(quán)限仍然使用 REVOKE語句,其語法格式為:

REVOKE <對象權(quán)限>|<角色> [,<對象權(quán)限>|<角色>]…

FROM <用戶名>|<角色>|PUBLIC[,<用戶名>|<角色>]…

例如:從public 角色中收回 SELECT 權(quán)限,然后,收回用戶 Mary,John 和 Tom 的特定權(quán)限:

USE pubs

GO

REVOKE SELECT ON s FROM public

GO

REVOKE INSERT, UPDATE, DELETE

ON s

FROM Mary, John, Tom

1.3.3 DENY語句

DENY語句用于拒絕給當(dāng)前數(shù)據(jù)庫內(nèi)的用戶或者角色授予權(quán)限,并防止用戶或角色通過其組或角色成員繼承權(quán)限。

否定語句權(quán)限的語法形式為:

DENY ALL|<語句權(quán)限>|<角色> [,<語句權(quán)限>|<角色>]…

TO <用戶名>|<角色>|PUBLIC[,<用戶名>|<角色>]…

否定對象權(quán)限的語法形式為:

DENY ALL|<對象權(quán)限>[(列名[,列名]…)][,<對象權(quán)限>]…ON <對象名>

TO <用戶名>|<角色>|PUBLIC[,<用戶名>|<角色>]…

例如:給 public 角色授予 SELECT 權(quán)限,然后,拒絕用戶 Mary,John 和 Tom 的特定權(quán)限:

USE pubs

GO

GRANT SELECT

ON s

TO public

GO

DENY SELECT, INSERT, UPDATE, DELETE

ON s

TO Mary,John,Tom

2 角色管理

2.1 概述

角色定義了常規(guī)的 SQL Server 用戶類別。每種角色將該類別的用戶與其使用 SQL Server時執(zhí)行的任務(wù)集以及成功完成這些任務(wù)所需的知識相關(guān)聯(lián)。利用角色,SQL Server管理者可以將某些用戶設(shè)置為某一角色,這樣只要對角色進(jìn)行權(quán)限設(shè)置便可以實(shí)現(xiàn)對所有用戶權(quán)限的設(shè)置。

SQL Server提供了用戶通常管理工作的預(yù)定義服務(wù)器角色和數(shù)據(jù)庫角色。用戶還可以創(chuàng)建自己的數(shù)據(jù)庫角色,以便表示某一類進(jìn)行同樣操作的用戶。當(dāng)用戶需要執(zhí)行不同的操作時,只需將該用戶加入不同的角色中即可,而不必對該用戶反復(fù)授權(quán)許可和收回許可。

2.2 服務(wù)器角色

服務(wù)器角色主要是控制服務(wù)器端對請求數(shù)據(jù)庫資源的訪問權(quán)限,他允許或拒絕服務(wù)器登錄名的訪問操作。SQL Server2005提供一組固定的服務(wù)器角色,比如sysadmin、securityadmin等,通過將這些固定的服務(wù)器角色賦予不同的服務(wù)器登錄名對象,可以是實(shí)現(xiàn)服務(wù)器級別的權(quán)限管理。將服務(wù)器角色賦予登錄名對象的語句如下: exec sp_addsrvrolemember Kelvin, sysadmin ;exec sp_dropsrvrolemember Kelvin, sysadmin; 一個服務(wù)器登錄名對象可以擁有多個固定服務(wù)器角色權(quán)限,但是固定服務(wù)器角色不能被修改、添加和刪除。

服務(wù)器角色是指根據(jù)SQL Server的管理任務(wù),以及這些任務(wù)相對的重要性等級來把具有SQL Server管理職能的用戶劃分為不同的用戶組,每一組所具有的管理SQL Server的權(quán)限都是SQL Server內(nèi)置的。服務(wù)器角色存在于各個數(shù)據(jù)庫之中,要想加入用戶,該用戶必須有登錄賬號以便加入到角色中。

對于擁有服務(wù)器角色sysadmin的登錄名對象,它可以SQL Server2005中做任何操作(由此可見服務(wù)器角色權(quán)限粒度之大)。但對那些沒有sysadmin角色的登錄名對象,它需要擁有一個能訪問特定數(shù)據(jù)庫實(shí)例的數(shù)據(jù)庫用戶名(User)以實(shí)現(xiàn)對該數(shù)據(jù)庫的操作。比如說為登錄名Kelvin想要訪問AdventureWorks數(shù)據(jù)庫,但不具備sysadmin的服務(wù)器角色。那么則在AdventureWorks數(shù)據(jù)庫中中創(chuàng)建一個名為user_Kelvin的數(shù)據(jù)庫用戶。TSQL:USE AdventureWorks; GO; create user user_Kelvin for login Kelvin; 執(zhí)行之后,用 Kelvin登錄名登錄的用戶與AdventureWorks下的user_Kelvin用戶建立起了關(guān)聯(lián)。

2.3 數(shù)據(jù)庫角色

數(shù)據(jù)庫角色是為某一用戶或某一組用戶授予不同級別的管理或訪問數(shù)據(jù)庫以及數(shù)據(jù)庫對象的權(quán)限,這些權(quán)限是數(shù)據(jù)庫專有的,并且還可以使一個用戶具有屬于同一數(shù)據(jù)庫的多個角色。

SQL Server提供了兩種類型的數(shù)據(jù)庫角色:

(1) 固定的數(shù)據(jù)庫角色

固定數(shù)據(jù)庫角色是系統(tǒng)默認(rèn)用于組織數(shù)據(jù)庫用戶權(quán)限的角色,包括db_datareader、db_ddladmin、db_owner等,這些角色都包含與其名稱相同的數(shù)據(jù)庫架構(gòu)(Schema),比如db_datareader就默認(rèn)只擁有名為db_datareader的架構(gòu)。用戶可以創(chuàng)建角色,并讓角色獲取相應(yīng)的架構(gòu),最后將角色與數(shù)據(jù)庫用戶建立起聯(lián)系即可。 比如: Use AdventureWorks; exec sp_addrolemember db_datareader, user_Kelvin; 執(zhí)行后user_Kelvin就擁有了讀取數(shù)據(jù)的權(quán)限(該權(quán)限為db_datareader角色擁有)。

SQL Server管理者不能對固定的數(shù)據(jù)庫角色所具有的權(quán)限進(jìn)行任何修改。SQL Server的每一個數(shù)據(jù)庫中都有一組固定的數(shù)據(jù)庫角色,可以將不同級別的數(shù)據(jù)庫管理工作分給不同的角色,從而有效地實(shí)現(xiàn)工作權(quán)限的傳遞。

(2) 用戶自定義的數(shù)據(jù)庫角色

如果一組用戶需要執(zhí)行在SQL Server中指定的一組操作并且不存在對應(yīng)的Windows組,或者沒有管理Windows用戶賬號的許可,就可以在數(shù)據(jù)庫中建立一個用戶自定義的數(shù)據(jù)庫角色。用戶自定義的數(shù)據(jù)庫角色有兩種類型:即標(biāo)準(zhǔn)角色和應(yīng)用程序角色。

標(biāo)準(zhǔn)角色通過對用戶權(quán)限等級的認(rèn)定而將用戶劃分為不用的用戶組,使用戶總是相對于一個或多個角色,從而實(shí)現(xiàn)管理的安全性。

應(yīng)用程序角色使得某些用戶只能通過特定的應(yīng)用程序間接地存取數(shù)據(jù)庫中的數(shù)據(jù)而不是直接地存取數(shù)據(jù)庫數(shù)據(jù)。通過應(yīng)用程序角色,能夠以可控制方式來限定用戶的語句或者對象許可。

2.4 使用SQL Server管理平臺管理角色

(1) 管理服務(wù)器角色

打開SQL Server管理平臺,展開指定的服務(wù)器,單擊安全性文件夾,然后單擊服務(wù)器角色圖標(biāo),在右邊的頁框中右擊所要的角色,從彈出的快捷菜單中選擇“屬性”選項(xiàng),則出現(xiàn)服務(wù)器角色屬性對話框。在該對話框中我們可以看到屬于該角色的成員。單擊“添加”按鈕則彈出添加成員對話框,其中可以選擇添加新的登錄賬號作為該服務(wù)器角色成員,單擊刪除按鈕則可以從服務(wù)器角色中“刪除”選定的賬號。

(2) 管理數(shù)據(jù)庫角色

在SQL Server管理平臺中,展開指定的服務(wù)器以及指定的數(shù)據(jù)庫,然后展開安全性文件夾,右擊數(shù)據(jù)庫角色圖標(biāo),從彈出的快捷菜單中選擇“新建數(shù)據(jù)庫角色”選項(xiàng),則出現(xiàn)新建數(shù)據(jù)庫角色對話框。在名稱文本框中輸入該數(shù)據(jù)庫角色的名稱;點(diǎn)擊架構(gòu)前的復(fù)選框,可設(shè)定此角色擁有的架構(gòu);單擊“添加”按鈕,可將數(shù)據(jù)庫用戶增加到新建的數(shù)據(jù)庫角色中;最后單擊“確定”按鈕即可完成新的數(shù)據(jù)庫角色的創(chuàng)建。

2.5 使用存儲過程管理角色

(1) 管理服務(wù)器角色

在SQL Server中,管理服務(wù)器角色的存儲過程主要有兩個:sp_addsrvrolemember和sp_dropsrvrolemember。

系統(tǒng)存儲過程 sp_addsrvrolemember可以將某一登錄賬號加入到服務(wù)器角色中,使其成為該服務(wù)器角色的成員。其語法形式如下:

sp_addsrvrolemember login,role

系統(tǒng)存儲過程sp_dropsrvrolemember可以將某一登錄者從某一服務(wù)器角色中刪除,當(dāng)該成員從服務(wù)器角色中被刪除后,便不再具有該服務(wù)器角色所設(shè)置的權(quán)限。其語法形式如下:

sp_dropsrvrolemember [@loginame=]’login’,[@rolename=]’role’

其中,@loginame為登錄者名稱;@rolename為服務(wù)器角色。

(2) 管理數(shù)據(jù)庫角色

在SQL Server中,支持?jǐn)?shù)據(jù)庫管理的存儲過程主要有六種:

create role:用來創(chuàng)建一個新的數(shù)據(jù)庫角色,create role語法形式如下:

create role role_name [ AUTHORIZATION owner_name ]

其中:role_name 為待創(chuàng)建角色的名稱;AUTHORIZATION owner_name為擁有新角色的數(shù)據(jù)庫用戶或角色。如果未指定用戶,則執(zhí)行 CREATE ROLE 的用戶將擁有該角色。

droprole:用于從當(dāng)前數(shù)據(jù)庫角色中刪除一個數(shù)據(jù)庫角色,Droprole的語法形式如下:

Drop role role_name

sp_helprole:用來顯示當(dāng)前數(shù)據(jù)庫中所有數(shù)據(jù)庫角色的全部信息。其語法形式如下:

sp_helprole [‘role’]

sp_addrolemember:用來向數(shù)據(jù)庫某一角色中添加數(shù)據(jù)庫用戶,這些角色可以是用戶自定義的標(biāo)準(zhǔn)角色,也可以是固定的數(shù)據(jù)庫角色,但不能是應(yīng)用程序角色。其語法形式如下:

sp_addrolemember role,security_account

sp_droprolemember:用來刪除某一角色的用戶。其語法形式如下:

sp_droprolemember role,security_account

sp_helprolemember:用于顯示某一數(shù)據(jù)庫角色的所有成員。其語法形式如下:

sp_helprolemember [‘role’]

3 結(jié)束語

SQL Server2005中權(quán)限管理的主要對象包括服務(wù)器登錄名、服務(wù)器角色、數(shù)據(jù)庫用戶、數(shù)據(jù)庫角色。服務(wù)器登錄名對象分別與服務(wù)器角色和數(shù)據(jù)庫用戶直接關(guān)聯(lián),而數(shù)據(jù)庫用戶與數(shù)據(jù)庫角色和數(shù)據(jù)庫架構(gòu)直接聯(lián)系,從而形成了整個數(shù)據(jù)庫結(jié)構(gòu)的權(quán)限管理。搞清楚這些對象間的關(guān)系,對于理解SQL Server2005的權(quán)限管理有很大幫助。

[1] 劉世生,韓兵.基于RBAC的SQL Server 2005數(shù)據(jù)庫權(quán)限管理[J].硅谷.2009.

[2] 陳偉.SQL Server 2005數(shù)據(jù)庫應(yīng)用與開發(fā)教程[M].北京:清華大學(xué)出版社.2007.

[3] 邢紅剛.關(guān)于SQL Server數(shù)據(jù)庫的安全問題的思考們.科技資訊.2008.

[4] 宋敏,程鳳娟. SQL Server 2005安全機(jī)制研究[J].電腦與信息技術(shù).2008.

[5] 郭煦.基于角色的訪問控制的應(yīng)用研究[J].上海電機(jī)學(xué)院學(xué)報(bào).2007.

猜你喜歡
語句許可對象
版權(quán)許可聲明
版權(quán)許可聲明
涉稅刑事訴訟中的舉證責(zé)任——以納稅人舉證責(zé)任為考察對象
版權(quán)許可聲明
本期作者介紹
重點(diǎn):語句銜接
攻略對象的心思好難猜
基于熵的快速掃描法的FNEA初始對象的生成方法
區(qū)間對象族的可鎮(zhèn)定性分析
如何搞定語句銜接題