SQL Server數據庫角色成員身份和權限

定義

爲便於管理數據庫中的權限,SQL Server 提供了若干“角色”,這些角色是用於分組其他主體的安全主體。它們類似於 Microsoft Windows 操作系統中的組。數據庫級角色的權限作用域爲數據庫範圍。

數據庫角色限制在單個數據庫的範圍之內——用戶屬於一個數據庫中的db_datareader角色並不意味着他屬於另一個數據庫中的那個角色。

SQL Server 中有兩種類型的數據庫級角色

  • 數據庫中預定義的“固定數據庫角色
  • 您可以創建的“靈活數據庫角色”。

固定數據庫角色是在數據庫級別定義的,並且存在於每個數據庫中。

db_owner 和 db_securityadmin 數據庫角色的成員可以管理固定數據庫角色成員身份。但是,只有 db_owner 數據庫角色的成員能夠向db_owner 固定數據庫角色中添加成員。

數據庫級別的角色名稱及說明

  • db_owner 可以執行數據庫的所有配置和維護活動,還可以刪除數據庫。
  • db_securityadmin 可以修改角色成員身份和管理權限。向此角色中添加主體可能會導致意外的權限升級。
  • db_accessadmin 可以爲 Windows 登錄名、Windows 組和 SQL Server 登錄名添加或刪除數據庫訪問權限。
  • db_backupoperator 可以備份數據庫。
  • db_ddladmin 可以在數據庫中運行任何數據定義語言 (DDL) 命令。
  • db_datawriter 可以在所有用戶表中添加、刪除或更改數據。
  • db_datareader 可以從所有用戶表中讀取所有數據。
  • db_denydatawriter 禁止添加、修改或刪除數據庫內用戶表中的任何數據。
  • db_denydatareader 禁止讀取數據庫內用戶表中的任何數據。

服務器級角色

  • sysadmin

該角色能夠執行SQL Server上的任何操作。本質上,任何具有這種角色成員身份的人都是那個服務器上的sa。這種服務器角色的創建爲微軟提供了某一天去除sa登錄的能力——實際上,聯機叢書把sa稱作本質上爲遺留物的東西。

值得注意的是,在SQL Server上,Windows的Administrators組被自動映射到sysadmin角色中。這意味着服務器的Administrators組中的任何成員同時也具有對SQL數據的sa級別的訪問權限。如果需要,你可以從sysadmin角色中刪除Windows的administrators組,以提高安全性、防範漏洞

  • serveradmin

該角色能設置服務器範圍的配置選項或關閉服務器。儘管它在範圍上相當有限,但是,由該角色的成員所控制的功能對於服務器的性能會產生非常重大的影響

  • setupadmin

該角色僅限於管理鏈接服務器和啓動過程

  • securityadmin

對於專門創建出來用於管理登錄名、讀取錯誤日誌和創建數據庫許可權限的登錄名來說,該角色非常便利。在很多方面,該角色是典型的系統操作員角色——它能夠處理多數的日常事務,但是,卻不具備一個真正無所不能的超級用戶所擁有的那種全局訪問。

  • processadmin

能夠管理SQL Server中運行的進程——必要的話,該角色能夠終止長時間運行的進程

  • dbcreator

該角色僅限於創建和更改數據庫

  • diskadmin

管理磁盤文件(指派給了什麼文件組、附加和分離數據庫,等等)

  • bulkadmin

該角色有些怪異。它被明確創建出來,用於執行BULK INSERT語句的權限,否則的話,只能由具有sysadmin權限的人來執行BULK INSERT語句。即使把一個用戶加入到了bulkadmin組中,也只是給了他們訪問那個語句的權限,對於運行該語句的表,並沒有授予用戶訪問那個表的權限。這意味着不僅需要把用戶添加到bulkadmin中,而且,對於想要用戶能在其上執行BULK INSERT的表,還要授予GRANT用戶INSERT許可權限。此外,對於將在BULK INSERT語句中引用的所有表,還要確保用戶擁有正確的到那些表的SELECT訪問權限

對於在服務器上承擔管理角色任務的單個用戶,可以對其混合搭配這些角色。一般來說,只有最大型的數據庫纔會使用比sysadmin和securityadmin更多的角色。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章