共用方式為


權限 (資料庫引擎)

每個 SQL Server 保護物件都有可授與主體的相關許可權。 本主題提供下列資訊:

權限命名慣例

下列描述命名權限所遵循的一般慣例:

  • 控制

    授與承受人類似所有權的能力。 獲授權者在安全性實體上擁有所有已定義的權限。 已被授與CONTROL權限的主體也可以授與可控資源的許可權。 因為 SQL Server 安全性模型是階層式的,因此特定範圍的 CONTROL 會隱含地包含該範圍下所有安全物件的 CONTROL。 例如,資料庫的 CONTROL 表示資料庫的所有許可權、資料庫中所有元件的所有許可權、資料庫中所有架構的所有許可權,以及資料庫內所有架構內物件的所有許可權。

  • 改變

    授予變更特定可被保護物屬性(不包括擁有權)的能力。 在某範圍內授予時,ALTER 也會賦予修改、建立或刪除該範圍所含任何安全性物件的能力。 例如,架構的 ALTER 許可權包括從架構建立、改變和卸載物件的能力。

  • ALTER ANY <伺服器可安全化>,其中伺服器可安全化可以是任何伺服器可安全化。

    賦予建立、修改或刪除伺服器安全物件單一實體的能力。 例如,ALTER ANY LOGIN 授與在 實例中建立、改變或卸除任何登入的能力。

  • ALTER ANY <資料庫可保護物件,其中>資料庫可保護物件可以是資料庫層級的任何可保護物件。

    授予建立、修改或刪除資料庫安全性實體各個實例的能力。 例如,ALTER ANY SCHEMA 授與在資料庫中建立、改變或卸除任何架構的能力。

  • 掌握主控權

    可讓受讓人取得其被授予的可授予對象的擁有權。

  • IMPERSONATE <登入>

    允許被授權者模擬登入。

  • 冒充 <使用者>

    可讓授權者冒充使用者。

  • CREATE <Server 安全性實體>

    授予受讓人建立 伺服器可控資源 的能力。

  • CREATE <Database 可授權物件>

    授予被授權者建立 資料庫可保護物件的能力。

  • CREATE <Schema-contained Securable>

    賦予建立架構內可保護物件的能力。 不過,需要架構的 ALTER 許可權,才能在特定架構中建立安全性實體。

  • 檢視定義

    可讓授權者存取元數據。

  • 參考文獻

    需要資料表的 REFERENCES 權限,才能建立參考該資料表的外鍵約束。

    需要在物件上具有 REFERENCES 許可權,才能使用包含該物件的子句來建立 FUNCTION 或 VIEW WITH SCHEMABINDING

SQL Server 許可權圖表

如需 PDF 格式之所有 Database Engine 權限的海報大小圖表,請參閱 https://github.com/microsoft/sql-server-samples/blob/master/samples/features/security/permissions-posters/Microsoft_SQL_Server_2017_and_Azure_SQL_Database_permissions_infographic.pdf

適用於特定安全性實體的權限

下表列出了許可權的主要類別以及可套用的安全對象類型。

權限 適用對象
選擇 同義詞

表格和欄

數據表值函式、Transact-SQL 和 Common Language Runtime (CLR) 和數據行

檢視和欄位
查看變更追蹤 資料表

模式
更新 同義詞

表格和欄

視圖和欄

序列物件
參考文獻 純量和聚合函數(Transact-SQL 和 CLR)

Service Broker 佇列

表格和欄

表格值函數(Transact-SQL 和 CLR),以及欄位

型別

檢視和欄位

序列物件
插入 同義詞

表格和欄

檢視和欄
刪除 同義詞

表格和欄

視圖和欄位
執行指令 程序(Transact-SQL 和 CLR)

純量函數和聚合函數(Transact-SQL 和 CLR)

同義詞

CLR 類型
收到 Service Broker 佇列
檢視定義 可用性群組

程序(Transact-SQL 和 CLR)

服務代理佇列

純量函數與聚合函數(Transact-SQL和CLR)

登入、使用者和角色

同義詞

資料表

資料表值函數 (Transact-SQL 和 CLR)

瀏覽次數

序列物件
改變 可用性群組

程序(Transact-SQL 和 CLR)

純量和聚合函數(Transact-SQL 和 CLR)

序列物件

登入、使用者和角色

Service Broker 佇列

資料表

表值函數(Transact-SQL 和 CLR)

瀏覽次數
掌握主控權 可用性群組

角色

程序(Transact-SQL 和 CLR)

純量和聚合函數(Transact-SQL 和 CLR)

伺服器角色

同義詞

資料表

資料表值函式 (Transact-SQL 和 CLR)

瀏覽次數

序列物件
控制 可用性群組

程序(Transact-SQL 和 CLR)

純量和聚合函數(Transact-SQL 和 CLR)

登入、使用者和角色

Service Broker 佇列

同義詞

資料表

表格值函數 (Transact-SQL 和 CLR )

瀏覽次數

序列物件
冒充 登入和使用者

謹慎

在安裝時授與系統對象的默認許可權會根據可能的威脅仔細評估,而且不需要在強化 SQL Server 安裝時加以改變。 系統物件上許可權的任何變更都可以限制或中斷功能,而且可能會讓SQL Server 安裝處於不支援的狀態。

SQL Server 和 SQL Database 許可權

下表提供 SQL Server 許可權的完整清單。 SQL Database 許可權僅適用於支援的基礎安全性物件。 SQL Database 中無法授與伺服器層級許可權,但在某些情況下,資料庫許可權是可用的。

基礎可保護對象 基礎安全控制項上的細微許可權 權限類型代碼 可設安全性的物件包含基底安全性物件 容器安全性實體的許可權,表示基底安全性實體上的細微許可權
應用角色 改變 資料庫 ALTER ANY APPLICATION ROLE
應用角色 控制 CL 資料庫 控制
應用角色 檢視定義 大眾 資料庫 檢視定義
議會 改變 資料庫 變更任何組件
議會 控制 CL 資料庫 控制
議會 參考文獻 射頻 資料庫 參考文獻
議會 掌握主控權 資料庫 控制
議會 檢視定義 福斯 資料庫 檢視定義
非對稱密鑰 改變 資料庫 更改任何非對稱密鑰
非對稱密鑰 控制 CL 資料庫 控制
非對稱密鑰 參考文獻 射頻 資料庫 參考文獻
非對稱密鑰 掌握主控權 資料庫 控制
非對稱密鑰 檢視定義 大眾 資料庫 檢視定義
可用性群組 改變 伺服器 變更任何可用性群組
可用性群組 控制 CL 伺服器 控制伺服器
可用性群組 掌握主控權 伺服器 控制伺服器
可用性群組 檢視定義 大眾 伺服器 查看任何定義
證書 改變 資料庫 變更任何證書
證書 控制 CL 資料庫 控制
證書 參考文獻 射頻 資料庫 參考文獻
證書 掌握主控權 資料庫 控制
證書 檢視定義 福斯汽車 資料庫 檢視定義
合同 改變 資料庫 修改任何合約
合同 控制 CL 資料庫 控制
合同 參考文獻 射頻 資料庫 參考文獻
合同 掌握主控權 資料庫 控制
合同 檢視定義 大眾 資料庫 檢視定義
資料庫 改變 伺服器 變更任何資料庫
資料庫 ALTER ANY APPLICATION ROLE(變更任何應用程式角色) 阿拉爾 伺服器 控制伺服器
資料庫 更改任何組件 伺服器 控制伺服器
資料庫 更改任何非對稱金鑰 ALAK 伺服器 控制伺服器
資料庫 修改任何憑證 ALCF 伺服器 控制伺服器
資料庫 更改任何合約 ALSC 伺服器 控制伺服器
資料庫 更改任何資料庫稽核 阿爾達 伺服器 更改任何伺服器審計
資料庫 更改任何資料庫 DDL 觸發器 ALTG 伺服器 控制伺服器
資料庫 ALTER ANY DATABASE EVENT NOTIFICATION ALED 伺服器 更改任何事件通知
資料庫 修改任何資料庫事件會話 AADS

注意:僅適用於 SQL Database。
伺服器 更改任何事件會話
資料庫 修改任何資料空間 ALDS 伺服器 控制伺服器
資料庫 ALTER ANY 全文目錄 ALFT 伺服器 控制伺服器
資料庫 更改任何訊息類型 ALMT 伺服器 控制伺服器
資料庫 更改任何遠端服務綁定 ALSB 伺服器 控制伺服器
資料庫 變更任何角色 ALRL 伺服器 控制伺服器
資料庫 變更任何路由 ALRT 伺服器 控制伺服器
資料庫 更改任何架構 ALSM 伺服器 控制伺服器
資料庫 更改任何安全策略 ALSP

注意:僅適用於 SQL Database。
伺服器 控制伺服器
資料庫 變更任何服務 ALSV 伺服器 控制伺服器
資料庫 變更任意對稱金鑰 ALSK 伺服器 控制伺服器
資料庫 修改任何使用者 ALUS 伺服器 控制伺服器
資料庫 證實 認證 伺服器 驗證伺服器
資料庫 備份資料庫 BADB 伺服器 控制伺服器
資料庫 備份日誌 BALO 伺服器 控制伺服器
資料庫 檢查站 CP 伺服器 控制伺服器
資料庫 連接 一氧化碳 伺服器 控制伺服器
資料庫 連接複製 公司 伺服器 控制伺服器
資料庫 控制 CL 伺服器 控制伺服器
資料庫 創建聚合 峭壁 伺服器 控制伺服器
資料庫 CREATE ASSEMBLY(建立組件) CRAS 伺服器 控制伺服器
資料庫 建立非對稱金鑰 CRAK 伺服器 控制伺服器
資料庫 創建證書 CRCF 伺服器 控制伺服器
資料庫 建立合約 CRSC 伺服器 控制伺服器
資料庫 建立資料庫 CRDB 伺服器 建立任何資料庫
資料庫 建立資料庫 DDL 事件通知 CRED 伺服器 建立 DDL 事件通知
資料庫 建立預設值 CRDF 伺服器 控制伺服器
資料庫 建立全文目錄 CRFT 伺服器 控制伺服器
資料庫 CREATE FUNCTION CRFN 伺服器 控制伺服器
資料庫 建立消息類型 CRMT 伺服器 控制伺服器
資料庫 建立程序 CRPR 伺服器 控制伺服器
資料庫 建立佇列 CRQU 伺服器 控制伺服器
資料庫 建立遠端服務系結 資源共享平台 (CRSB) 伺服器 控制伺服器
資料庫 建立角色 CRRL 伺服器 控制伺服器
資料庫 建立路由 CRRT(連續性腎臟替代療法) 伺服器 控制伺服器
資料庫 建立規則 CRRU 伺服器 控制伺服器
資料庫 建立結構描述 CRSM 伺服器 控制伺服器
資料庫 建立服務 CRSV 伺服器 控制伺服器
資料庫 建立對稱金鑰 CRSK 伺服器 控制伺服器
資料庫 CREATE SYNONYM CRSN 伺服器 控制伺服器
資料庫 建立資料表 CRTB 伺服器 控制伺服器
資料庫 建立類型 CRTY 伺服器 控制伺服器
資料庫 建立視圖 CRVW 伺服器 控制伺服器
資料庫 建立 XML 架構集合 CRXS 伺服器 控制伺服器
資料庫 刪除 DL 伺服器 控制伺服器
資料庫 執行指令 前任 伺服器 控制伺服器
資料庫 插入 在內 伺服器 控制伺服器
資料庫 終止資料庫連線 KIDC

注意:僅適用於 SQL Database。 在 SQL Server 中使用 ALTER ANY CONNECTION。
伺服器 變更任何連線
資料庫 參考文獻 射頻 伺服器 控制伺服器
資料庫 選擇 SL 伺服器 控制伺服器
資料庫 SHOWPLAN SPLN 伺服器 更改追蹤
資料庫 訂閱查詢通知 SUQN 伺服器 控制伺服器
資料庫 掌握主控權 伺服器 控制伺服器
資料庫 更新 向上 伺服器 控制伺服器
資料庫 檢視資料庫狀態 VWDS 伺服器 查看伺服器狀態
資料庫 檢視定義 VW 伺服器 查看任何定義
端點 改變 伺服器 修改任何端點
端點 連線 一氧化碳 伺服器 控制伺服器
端點 控制 CL 伺服器 控制伺服器
端點 掌握主控權 伺服器 控制伺服器
端點 檢視定義 大眾 伺服器 查看任何定義
全文目錄 改變 資料庫 修改任何全文目錄
全文目錄 控制 CL 資料庫 控制
全文目錄 參考文獻 射頻 資料庫 參考文獻
全文目錄 掌握主控權 資料庫 控制
全文目錄 檢視定義 大眾 資料庫 檢視定義
全文停止詞列表 改變 資料庫 更改任何全文目錄
全文停止詞列表 控制 CL 資料庫 控制
全文停止詞列表 參考文獻 射頻 資料庫 參考文獻
全文停止詞列表 掌握主控權 資料庫 控制
全文停止詞列表 檢視定義 VW 資料庫 檢視定義
登錄 改變 伺服器 變更任意登入
登錄 控制 CL 伺服器 控制伺服器
登錄 類比 即時通信 伺服器 控制伺服器
登錄 檢視定義 大眾 伺服器 查看任何定義
訊息類型 改變 資料庫 變更任何訊息類型
訊息類型 控制 CL 資料庫 控制
訊息類型 參考文獻 射頻 資料庫 參考文獻
訊息類型 掌握主控權 資料庫 控制
訊息類型 檢視定義 福斯大眾 資料庫 檢視定義
物件 改變 圖式 改變
物件 控制 CL 圖式 控制
物件 刪除 深度學習 圖式 刪除
物件 執行指令 前任 圖式 執行指令
物件 插入 在內 圖式 插入
物件 收到 鋼筋混凝土 圖式 控制
物件 參考文獻 射頻 圖式 參考文獻
物件 選取 SL 圖式 選擇
物件 掌握主控權 圖式 控制
物件 更新 向上 圖式 更新
物件 檢視變更追蹤記錄 VWCT 圖式 檢視變更追蹤
物件 檢視定義 福斯 圖式 檢視定義
遠端服務綁定 改變 資料庫 更改任何遠端服務繫結
遠端服務綁定 控制 CL 資料庫 控制
遠端服務綁定 掌握主控權 資料庫 控制
遠端服務綁定 檢視定義 大眾 資料庫 檢視定義
角色 改變 資料庫 更改任何角色
角色 控制 CL 資料庫 控制
角色 掌握主控權 資料庫 控制
角色 檢視定義 VW 資料庫 檢視定義
路線 改變 資料庫 變更任何路由
路線 控制 CL 資料庫 控制
路線 掌握主控權 資料庫 控制
路線 檢視定義 福斯 資料庫 檢視定義
搜尋房產清單 改變 伺服器 修改任何全文目錄
搜尋房產清單 控制 CL 伺服器 控制
搜尋房產清單 參考文獻 射頻 伺服器 參考文獻
搜尋房產清單 掌握主控權 伺服器 控制
搜尋房產清單 檢視定義 大眾 伺服器 檢視定義
圖式 改變 資料庫 改變任何結構描述 (ALTER ANY SCHEMA)
圖式 控制 CL 資料庫 控制
圖式 CREATE SEQUENCE(建立序列) CRSO 資料庫 控制
圖式 刪除 DL 資料庫 刪除
圖式 執行指令 前任 資料庫 執行指令
圖式 插入 在內 資料庫 插入
圖式 參考文獻 射頻 資料庫 參考文獻
圖式 選取 SL 資料庫 選取
圖式 掌握主控權 資料庫 控制
圖式 更新 向上 資料庫 更新
圖式 查看變更追蹤功能 VWCT 資料庫 檢視變更記錄
圖式 檢視定義 大眾 資料庫 檢視定義
伺服器 管理批量操作 ADBO 不適用 不適用
伺服器 更改任何連接權限 ALCO 不適用 不適用
伺服器 更改任何憑證 ALCD 不適用 不適用
伺服器 修改任何資料庫 ALDB 不適用 不適用
伺服器 變更任何端點 ALHE 不適用 不適用
伺服器 更改任意事件通知 艾爾啤酒 不適用 不適用
伺服器 修改任何事件會話 AAES 不適用 不適用
伺服器 更改任何連接的伺服器 ALLS 不適用 不適用
伺服器 更改任何登入 ALLG 不適用 不適用
伺服器 變更任意伺服器審計 ALAA 不適用 不適用
伺服器 變更任何伺服器角色 ALSR 不適用 不適用
伺服器 變更可用性群組 ALAG 不適用 不適用
伺服器 更改資源 ALRS 不適用 不適用
伺服器 更改伺服器狀態 ALSS 不適用 不適用
伺服器 修改設定 ALST 不適用 不適用
伺服器 ALTER TRACE ALTR 不適用 不適用
伺服器 驗證伺服器 認證 不適用 不適用
伺服器 連接任何資料庫 CADB 不適用 不適用
伺服器 連接 SQL COSQ 不適用 不適用
伺服器 控制伺服器 CL 不適用 不適用
伺服器 建立任何資料庫 CRDB 不適用 不適用
伺服器 建立可用性群組 CRAC 不適用 不適用
伺服器 創建 DDL 事件通知 CRDE 不適用 不適用
伺服器 建立端點 CRHE 不適用 不適用
伺服器 建立伺服器角色 CRSR 不適用 不適用
伺服器 建立追蹤事件通知 CRTE 不適用 不適用
伺服器 外部存取組件 XA 不適用 不適用
伺服器 冒充任何登入 IAL 不適用 不適用
伺服器 選取所有使用者安全性物件 SUS 不適用 不適用
伺服器 關機 SHDN 不適用 不適用
伺服器 不安全集會 不適用 不適用
伺服器 查看任何資料庫 VWDB 不適用 不適用
伺服器 查看任何定義 VWAD 不適用 不適用
伺服器 查看伺服器狀態 VWSS 不適用 不適用
伺服器角色 改變 伺服器 更改任何伺服器角色
伺服器角色 控制 CL 伺服器 控制伺服器
伺服器角色 掌握主控權 伺服器 控制伺服器
伺服器角色 檢視定義 大眾 伺服器 查看任何定義
服務 改變 資料庫 更改任何服務
服務 控制 CL 資料庫 控制
服務 發送 序號 資料庫 控制
服務 掌握主控權 資料庫 控制
服務 檢視定義 大眾 資料庫 檢視定義
對稱金鑰 改變 資料庫 更改任何對稱密鑰
對稱金鑰 控制 CL 資料庫 控制
對稱金鑰 參考文獻 射頻 資料庫 參考文獻
對稱金鑰 掌握主控權 資料庫 控制
對稱金鑰 檢視定義 福斯 資料庫 檢視定義
類型 控制 CL 圖式 控制
類型 執行指令 前任 圖式 執行指令
類型 參考文獻 射頻 圖式 參考文獻
類型 掌握主控權 圖式 控制
類型 檢視定義 大眾汽車 圖式 檢視定義
使用者 改變 資料庫 修改任何使用者
使用者 控制 CL 資料庫 控制
使用者 冒充 即時通信 資料庫 控制
使用者 檢視定義 福斯 (大眾) 資料庫 檢視定義
XML 架構集合 改變 圖式 改變
XML 架構集合 控制 CL 圖式 控制
XML 架構集合 執行指令 前任 圖式 執行指令
XML 架構集合 參考文獻 射頻 圖式 參考文獻
XML 架構集合 掌握主控權 圖式 控制
XML 架構集合 檢視定義 大眾汽車 (VW) 圖式 檢視定義

許可權檢查演算法的摘要

檢查權限可能相當複雜。 許可權檢查演算法包含重疊的群組成員資格和擁有鏈,涉及明確和隱含的許可權,並且可能受到包含安全性實體的可保護類別的許可權影響。 演算法的一般程式是收集所有相關許可權。 如果找不到封鎖 DENY,演算法會搜尋提供足夠存取權的 GRANT。 演算法包含三個基本元素: 安全性內容許可權空間必要許可權

備註

您無法授與、拒絕或撤銷sa、dbo、實體擁有者、information_schema、sys 或您自己的許可權。

  • 安全性內容

    這是參與存取檢查許可權的主體群組。 這些是與目前登入或使用者相關的許可權,除非透過 EXECUTE AS 語句將安全上下文變更為另一個登入或使用者。 安全性內容包含下列主體:

    • 登入

    • 使用者

    • 角色成員資格

    • Windows 群組成員資格

    • 如果使用模組簽署,則用於簽署使用者目前執行之模組之憑證的任何登入或用戶帳戶,以及該主體的相關角色成員資格。

  • 許可權空間

    這是可保護的實體以及所有包含該實體的可保護類別。 例如,數據表(安全性實體)是由架構安全性實體類別和資料庫安全性實體類別所包含。 存取可能會受到數據表、架構、資料庫和伺服器層級許可權的影響。 如需詳細資訊,請參閱 許可權階層 (Database Engine)

  • 必要許可權

    所需的許可權種類。 例如,INSERT、UPDATE、DELETE、SELECT、EXECUTE、ALTER、CONTROL 等等。

    存取可能需要多個許可權,如下列範例所示:

    • 預存程式需要預存程式的 EXECUTE 許可權,以及預存程式所參考之數個數據表的 INSERT 許可權。

    • 動態管理檢視可能需要 VIEW SERVER STATE 權限以及對檢視的 SELECT 權限。

演算法的一般步驟

當演算法判斷是否允許存取安全性實體時,所使用的精確步驟可能會因主體和所涉及的安全性實體而有所不同。 不過,演算法會執行下列一般步驟:

  1. 略過許可權檢查,當登入是 sysadmin 固定伺服器角色的成員,或使用者是目前資料庫中的 dbo 使用者時。

  2. 如果擁有權鏈結適用,且鏈結中較早的對象已通過安全性檢查,則允許存取。

  3. 匯總與呼叫端相關聯的伺服器層級、資料庫層級和已簽署模組身分識別,以建立 安全性內容

  4. 針對該安全性內容,收集在權限範圍內授予或拒絕的所有權限。 許可權可以明確地表示為 GRANT、GRANT WITH GRANT 或 DENY;或者,許可權可以是隱含的或涵蓋的許可權,例如 GRANT 或 DENY。 例如,對架構的 CONTROL 權限意味著擁有對資料表的 CONTROL 權限。 數據表上的 CONTROL 表示 SELECT。 因此,如果授予架構上的 CONTROL,則會授予資料表上的 SELECT。 如果數據表上的 CONTROL 遭到拒絕,則會拒絕數據表上的 SELECT。

    備註

    數據行層級許可權的 GRANT 會覆寫物件層級的 DENY。

  5. 識別 必要的許可權

  6. 如果物件的許可權空間中的安全性內容的任何身分識別直接或隱含被拒絕必要許可權,則許可權檢查失敗。

  7. 如果必要的許可權未被拒絕,並且必要的許可權直接或隱含地包含 GRANT 或 GRANT WITH GRANT 許可權,授予安全性內容中的任何身分識別,以便許可權空間中的任何物件通過許可權檢查。

範例

本節中的範例示範如何擷取許可權資訊。

A。 傳回可授與許可權的完整清單

下列語句會使用 fn_builtin_permissions 函式傳回所有 Database Engine 許可權。 如需詳細資訊,請參閱 sys.fn_builtin_permissions (Transact-SQL)

SELECT * FROM fn_builtin_permissions(default);  
GO  

B. 傳回特定物件類別的許可權

下列範例會使用 fn_builtin_permissions 來檢視某一類別的安全物件可用的所有許可權。 此範例會傳回元件的許可權。

SELECT * FROM fn_builtin_permissions('assembly');  
GO    

C. 傳回執行主體在某個物件上被授予的權限

下列範例會使用 fn_my_permissions 傳回由呼叫主體在指定安全性實體上持有的有效許可權清單。 此範例會傳回名為 Orders55的物件許可權。 如需詳細資訊,請參閱 sys.fn_my_permissions (Transact-SQL)

SELECT * FROM fn_my_permissions('Orders55', 'object');  
GO  

D. 傳回適用於指定物件的許可權

下列範例會傳回適用於稱為 Yttrium之物件的許可權。 請注意,內建函式 OBJECT_ID 是用來擷取 對象的 Yttrium標識碼。

SELECT * FROM sys.database_permissions   
    WHERE major_id = OBJECT_ID('Yttrium');  
GO  

另請參閱

權限階層 (Database Engine)
sys.database_permissions (Transact-SQL)