SQLServer 伺服器角色和資料庫角色許可權詳解

來源:互聯網
上載者:User

標籤:

SQLServer中伺服器角色和資料庫角色許可權詳解

轉自:http://blog.csdn.net/e_online/article/details/4597957

角色當幾個使用者需要在某個特定的資料庫中執行類似的動作時(這裡沒有相應的Windows使用者組),就可以向該資料庫中添加一個角色(role)。資料庫角色指定了可以訪問相同資料庫物件的一組資料庫使用者。
資料庫角色的成員可以分為如下幾類:
Windows使用者組或使用者賬戶
SQL Server登入
其他角色
SQL Server的安全體繫結構中包括了幾個含有特定隱含許可權的角色。除了資料庫擁有者建立的角色之外,還有兩類預定義的角色。這些可以建立的角色可以分為如下幾類:
固定伺服器
固定資料庫
使用者自訂固定伺服器由於固定伺服器是在伺服器層次上定義的,因此它們位於從屬於資料庫伺服器的資料庫外面。下表列出了所有現有的固定伺服器角色。

固定伺服器角色

說    明

sysadmin

執行SQL Server中的任何動作

serveradmin

設定管理員設定

setupadmin

安裝複製和管理擴充過程

securityadmin

管理登入和CREATE DATABASE的許可權以及閱讀審計

processadmin

管理SQL Server進程

dbcreator

建立和修改資料庫

diskadmin

管理磁碟檔案

下面兩個系統過程用來添加或刪除固定伺服器角色成員:
sp_addsrvrolemember
sp_dropsrvrolemember
注意:您不能添加、修改或刪除固定伺服器角色。另外,只有固定伺服器角色的成員才能執行上述兩個系統過程來從角色中添加或刪除登入賬戶。sa登入sa登入是系統管理員的登入。在以前的SQL Server版本中不存在角色,sa登入具有所有可能的關於系統管理工作的許可權。在SQL Server 2005中,sa登入保持了向後相容性。sa登入永遠是固定伺服器角色syadmin中的成員,並且不能從該角色中刪除。
注意:只有當沒有其他方法登入到SQL Server系統中時,再使用sa登入。固定伺服器角色及其許可權在某個SQL Server系統中,每個固定伺服器角色都有其隱含的許可權。使用系統過程sp_srvrolepermission可以瀏覽每個固定伺服器角色的許可權。該系統過程的文法形式為:
sp_srvrolepermission[[@srvrolename =] ‘role‘]
如果沒有指定role的值,那麼所有的固定伺服器角色的許可權都將顯示出來。下面的部分將討論每個固定伺服器角色的許可權。1. sysadmin固定伺服器角色sysadmin的成員被賦予了SQL Server系統中所有可能的許可權。例如,只有這個角色中的成員(或一個被這個角色中的成員賦予了CREATE DATABASE許可權的使用者)才能夠建立資料庫。
固定伺服器角色和sa登入之間有著特殊的關係。sa登入一直都是固定伺服器角色中的成員,並且不能從該角色中刪除。2. serveradmin固定伺服器角色serveradmin的成員可以執行如下的動作:
向該伺服器角色中添加其他登入
運行dbcc pintable命令(從而使表常駐於主記憶體中)
運行系統過程sp_configure(以顯示或更改系統選項)
運行reconfigure選項(以更新系統過程sp_configure所做的所有改動)
使用shutdown命令關掉資料庫伺服器
運行系統過程sp_tableoption為使用者自訂表格設定選項的值3. setupadmin固定伺服器角色setupadmin中的成員可以執行如下的動作:
向該伺服器角色中添加其他登入
添加、刪除或配置連結的伺服器
執行一些系統過程,如sp_serveroption4. securityadmin固定伺服器角色securitypadmin中的成員可以執行關於伺服器訪問和安全的所有動作。這些成員可以進行如下的系統動作:
向該伺服器角色中添加其他登入
讀取SQL Server的錯誤記錄檔
運行如下的系統過程:如sp_addlinkedsrvlogin、sp_addlogin、sp_defaultdb、sp_defaultlanguage、sp_denylogin、sp_droplinkedsrvlogin、sp_droplogin、sp_grantlogin、sp_helplogins、sp_remoteoption和sp_revokelogin(所有這些系統過程都與系統安全相關。)5. processadmin固定伺服器角色processadmin中的成員用來管理SQL Server進程,如中止使用者正在啟動並執行查詢。這些成員可以進行如下的動作:
向該伺服器角色中添加其他登入
執行KILL命令(以取消使用者進程)6. dbcreator固定伺服器角色dbcreator中的成員用來管理與資料庫建立和修改有關的所有動作。這些成員可以進行如下的動作:
向該伺服器角色中添加其他登入
運行CREATE DATABASE和ALTER DATABASE語句
使用系統過程sp_renamedb來修改資料庫的名稱7. diskadmin固定伺服器角色diskadmin的成員可以進行如下與用來儲存資料庫物件的檔案和檔案組有關的動作:
向該伺服器角色中添加其他登入
運行如下系統過程:sp_ddumpdevice和sp_dropdevice。
運行DISK INIT語句固定資料庫角色固定資料庫角色在資料庫層上進行定義,因此它們存在於屬於資料庫伺服器的每個資料庫中。下表列出了所有的固定資料庫角色。

固定資料庫角色

說    明

db_owner

可以執行資料庫中技術所有動作的使用者

db_accessadmin

可以添加、刪除使用者的使用者

db_datareader

可以查看所有資料庫中使用者表內資料的使用者

db_datawriter

可以添加、修改或刪除所有資料庫中使用者表內資料的使用者

db_ddladmin

可以在資料庫中執行所有DDL操作的使用者

db_securityadmin

可以管理資料庫中與安全許可權有關所有動作的使用者

db_backoperator

可以備份資料庫的使用者(並發行就緒DBCC和CHECKPOINT語句,這兩個語句一般在備份前都會被執行)

db_denydatareader

不能看到資料庫中任何資料的使用者

db_denydatawriter

不能改變資料庫中任何資料的使用者

除了上表中列出的固定資料庫角色之外,還有一種特殊的固定資料庫角色,名為public,這裡將首先介紹這一角色。public角色public角色是一種特殊的固定資料庫角色,資料庫的每個合法使用者都屬於該角色。它為資料庫中的使用者提供了所有預設許可權。這樣就提供了一種機制,即給予那些沒有適當許可權的所有使用者以一定的(通常是有限的)許可權。public角色為資料庫中的所有使用者都保留了預設的許可權,因此是不能被刪除的。
一般情況下,public角色允許使用者進行如下的操作:
使用某些系統過程查看並顯示master資料庫中的資訊
執行一些不需要一些許可權的語句(例如PRINT)固定資料庫角色及其許可權在資料庫中,每個固定資料庫角色都有其特定的許可權。這就意味著對於某個資料庫來說,固定資料庫角色的成員的許可權是有限的。使用系統過程sp_dbfixedrolepermission就可以查看每個固定資料庫角色的許可權。該系統過程的文法為:
sp_db.xedrolepermission [[@rolename =] ‘role‘]
如果沒有指定role的值,那麼所有固定資料庫角色的許可權都可以顯示出來。下面的幾節將討論每個固定資料庫角色的許可權。1. db_owner固定資料庫角色db_owner的成員可以在特定的資料庫中進行如下的動作:
向其他固定資料庫角色中新增成員,或從其中刪除成員
運行所有的DDL語句
運行BACKUP DATABASE和BACKUP LOG語句
使用CHECKPOINT語句顯式地啟動檢查點進程
運行下列dbcc命令:dbcc checkalloc、dbcc checkcatalog、dbcc checkdb、dbcc updateusage
授予、取消或剝奪每一個資料庫物件上的下列許可權:SELECT、INSERT、UPDATE、DELETE和REFERENCES
使用下列系統過程向資料庫中添加使用者或角色:sp_addapprole、sp_addrole、sp_addrolemember、sp_approlepassword、sp_changeobjectowner、sp_dropapprole、sp_droprole、sp_droprolemember、sp_dropuser、sp_grantdbaccess
使用系統過程sp_rename為任何資料庫物件重新命名2. db_accessadmin固定資料庫角色db_accessadmin的成員可以執行與資料庫訪問有關的所有動作。這些角色可以在具體的資料庫中執行下列操作:
運行下列系統過程:sp_addalias、sp_dropalias、sp_dropuser、sp_grantdbacess、sp_revokedbaccess
為Windows使用者賬戶、Windows組和SQL Server登入添加或刪除訪問3. dbdatareader固定資料庫角色dbdatareader的成員對資料庫中的資料庫物件(表或視圖)具有SELECT許可權。然而,這些成員不能把這個許可權授予其他任何使用者或角色。(這個限制對REVOKE語句來說同樣成立。)4. dbdatawriter固定資料庫角色dbdatawriter的成員對資料庫中的資料庫物件(表或視圖)具有INSERT、UPDATE和DELETE許可權。然而,這些成員不能把這個許可權授予其他任何使用者或角色。(這個限制對REVOKE語句來說也同樣成立。)5. db_ddladmin固定資料庫角色db_ddladmin的成員可以進行如下的動作:
運行所有DDL語句
對任何錶上授予REFERENCESE許可權
使用系統過程sp_procoption和sp_recompile來修改任何預存程序的結構
使用系統過程sp_rename為任何資料庫物件重新命名
使用系統過程sp_tableoption和sp_changeobjectowner分別修改表的選項和任何資料庫物件的擁有者6. db_securityadmin固定資料庫角色db_securityadmin的成員可以管理資料庫中的安全。這些成員可以進行如下的動作:
運行與安全有關的所有Transact-SQL語句(GRANT、DENY和REVOKE)
運行以下系統過程:sp_addapprole、sp_addrole、sp_addrolemember、sp_approlepassword、sp_changeobjectowner、sp_dropapprole、sp_droprole、sp_droprolemember7. db_backupoperator固定資料庫角色db_backupoperator的成員可以管理資料庫備份的過程。這些成員可以進行如下動作:
運行BACKUP DATABASE和BACKUP LOG語句
用CHECKPOINT語句顯式地啟動檢查點進程
運行如下dbcc命令:dbcc checkalloc、dbcc checkcatalog、dbcc checkdb、dbcc updateusage8. db_denydatareader和db_denydatawriter顧名思義,固定資料庫角色db_denydatareader的成員對資料庫中的資料庫物件(表或視圖)沒有SELECT許可權。如果資料庫中含有敏感性資料並且其他使用者不能讀取這些資料,那麼就可以使用這個角色。
固定資料庫角色db_denydatawriter的成員對資料庫中的任何資料庫物件(表或視圖)沒有INSERT、UPDATE和DELETE許可權。

SQLServer 伺服器角色和資料庫角色許可權詳解

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.