适用于:SQL Server
Azure SQL 数据库
Azure SQL 托管实例
Azure Synapse Analytics
Analytics Platform System (PDW)
Microsoft Fabric 中的 SQL 终结点
Microsoft Fabric 中的仓库
Microsoft Fabric SQL 数据库
每个 SQL Server 安全对象都有关联的权限,可以将这些权限授予主体。 数据库引擎中的权限在分配给登录名和服务器角色的服务器级别上,以及分配给数据库用户和数据库角色的数据库级别上进行管理。 Azure SQL 数据库的模型拥有与数据库权限相同的系统,但服务器级别权限不可用。 本文包含权限的完整列表。 有关典型的权限实现,请参阅 Getting Started with Database Engine Permissions。
SQL Server 2022 (16.x) 的权限总数为 292。 Azure SQL 数据库公开了 292 个权限。 大多数权限适用于所有平台,但有些不适用。 例如,大多数服务器级别权限无法对 SQL 数据库授予,一些权限仅在 Azure SQL 数据库上有意义。 新权限将随着新版本逐步引入。 SQL Server 2019 (15.x) 公开了 248 个权限。SQL Server 2017 (14.x) 公开了 238 个权限。 SQL Server 2016 (13.x) 公开了 230 个权限。 SQL Server 2014 (12.x) 公开了 219 个权限。 SQL Server 2012 (11.x) 公开了 214 个权限。 SQL Server 2008 R2 (10.50.x) 公开了 195 个权限。 文章 sys.fn_builtin_permissions 指明了哪些权限是近期版本中的新权限。
在 Microsoft Fabric 中的 SQL 数据库中,仅支持数据库级用户和角色。 服务器级登录名、角色和 sa 帐户不可用。 在 Microsoft Fabric 中的 SQL 数据库中,Microsoft数据库用户的 Entra ID 是唯一支持的身份验证方法。 有关详细信息,请参阅 Microsoft Fabric 中的 SQL 数据库中的授权。
了解所需权限后,你可以通过 GRANT、REVOKE 和 DENY 语句将服务器级别权限应用于登录名或服务器角色,将数据库级别权限应用于用户或数据库角色。 例如:
GRANT SELECT ON SCHEMA::HumanResources TO role_HumanResourcesDept;
REVOKE SELECT ON SCHEMA::HumanResources TO role_HumanResourcesDept;
有关计划权限系统的相关提示,请参阅 数据库引擎权限入门。
权限命名约定
下面介绍命名权限时遵循的一般约定:
控制
为被授权者授予类似所有权的功能。 被授权者实际上对安全对象具有所定义的所有权限。 也可以为已被授予 CONTROL 权限的主体授予对安全对象的权限。 因为 SQL Server 安全模型是分层的,所以 CONTROL 权限在特定范围内隐含着对该范围内的所有安全对象的 CONTROL 权限。 例如,对数据库的 CONTROL 权限隐含着对数据库的所有权限、对数据库中所有组件的所有权限、对数据库中所有架构的所有权限以及对数据库的所有架构中的所有对象的权限。
修改
授予更改特定安全对象的属性(所有权除外)的权限。 当授予对某个范围的 ALTER 权限时,也授予更改、创建或删除该范围内包含的任何安全对象的权限。 例如,对架构的 ALTER 权限包括在该架构中创建、更改和删除对象的权限。
ALTER ANY <Server Securable>,其中 Server Securable 可为任何服务器安全对象。
授予创建、更改或删除“服务器安全对象” 的各个实例的权限。 例如,ALTER ANY LOGIN 将授予创建、更改或删除实例中的任何登录名的权限。
ALTER ANY <Database Securable>,其中 Database Securable 可为数据库级别的任何安全对象。
授予创建、更改或删除“数据库安全对象” 的各个实例的权限。 例如,ALTER ANY SCHEMA 将授予创建、更改或删除数据库中的任何架构的权限。
获取所有权
允许被授权者获取所授予的安全对象的所有权。
IMPERSONATE <登录>
允许被授权者模拟该登录名。
IMPERSONATE <用户>
允许被授权者模拟该用户。
CREATE <服务器安全对象>
授予被授权者创建“服务器安全对象” 的权限。
CREATE <数据库安全对象>
授予被授权者创建“数据库安全对象” 的权限。
CREATE <包含架构的安全对象>
授予创建包含在架构中的安全对象的权限。 但是,若要在特定架构中创建安全对象,必须对该架构具有 ALTER 权限。
视图定义
允许被授权者访问元数据。
参考文献
表的 REFERENCES 权限是创建引用该表的外键约束时所必需的。
对象的 REFERENCES 权限是使用引用该对象的
WITH SCHEMABINDING
子句创建 FUNCTION 或 VIEW 时所必需的。
SQL Server 权限图表
下图显示了权限以及它们彼此之间的关系。 多次列出了某些更高级别的权限(如 CONTROL SERVER
)。 在本文中,海报太小了,因此无法查看。 你可以下载 PDF 格式的完整数据库引擎权限文章。
适用于特定安全对象的权限
下表列出了主要的权限类以及可能应用这些权限的安全对象的类型。
权限 | 适用于 |
---|---|
修改 | 除 TYPE 外的所有对象类。 |
控制 | 所有对象类: AGGREGATE、 APPLICATION ROLE、 ASSEMBLY、 ASYMMETRIC KEY、 AVAILABILITY GROUP、 CERTIFICATE、 CONTRACT、 凭据、 DATABASE、 DATABASE SCOPED CREDENTIAL、 DEFAULT、 ENDPOINT、 FULLTEXT CATALOG、 FULLTEXT STOPLIST、 FUNCTION、 LOGIN、 MESSAGE TYPE、 PROCEDURE、 QUEUE、 REMOTE SERVICE BINDING、 ROLE、 ROUTE、 RULE、 SCHEMA、 SEARCH PROPERTY LIST、 SERVER、 SERVER ROLE、 SERVICE、 SYMMETRIC KEY、 SYNONYM、 TABLE、 TYPE、 USER、 VIEW 和 XML 架构集合 |
删除 | 除 DATABASE SCOPED CONFIGURATION、SERVER 和 TYPE 外的所有对象类。 |
执行 | CLR 类型、外部脚本、过程(Transact-SQL 和 CLR)、标量和聚合函数(Transact-SQL 和 CLR)以及同义词 |
模拟 | 登录名和用户 |
插入 | 同义词、表和列、视图和列。 可以在数据库、架构或对象级别授予权限。 |
收到 | Service Broker 队列 |
参考文献 | AGGREGATE、 ASSEMBLY、 ASYMMETRIC KEY、 CERTIFICATE、 CONTRACT、 凭据(适用于 SQL Server 2022 (16.x)及更高版本), DATABASE、 DATABASE SCOPED CREDENTIAL、 FULLTEXT CATALOG、 FULLTEXT STOPLIST、 FUNCTION、 MESSAGE TYPE、 PROCEDURE、 QUEUE、 RULE、 SCHEMA、 SEARCH PROPERTY LIST、 SEQUENCE OBJECT、 SYMMETRIC KEY、 TABLE、 TYPE、 VIEW 和 XML 架构集合 |
选择 | 同义词、表和列、视图和列。 可以在数据库、架构或对象级别授予权限。 |
获取所有权 | 除 DATABASE SCOPED CONFIGURATION、LOGIN、SERVER 和 USER 外的所有对象类。 |
更新 | 同义词、表和列、视图和列。 可以在数据库、架构或对象级别授予权限。 |
查看更改跟踪 | 架构和表 |
视图定义 | 除 DATABASE SCOPED CONFIGURATION 和 SERVER 外的所有对象类。 |
注意
安装期间授予系统对象的默认权限已针对可能的威胁进行了仔细评估,并且作为强化 SQL Server 安装的一部分,无需进行更改。 对系统对象权限的任何更改都可能限制或破坏功能,并且可能让你的 SQL Server 安装处于不受支持的状态。
SQL Server 权限
下表提供了 SQL Server 权限的完整列表。 Azure SQL 数据库权限仅适用于受支持的基本安全对象。 不能在 Azure SQL 数据库中授予服务器级别权限,但在某些情况下,可以授予数据库权限。
基础安全对象 | 对基础安全对象的粒度权限 | 权限类型代码 | 包含基础安全对象的安全对象 | 对容器安全对象的权限隐含着对基础安全对象的粒度权限 |
---|---|---|---|---|
应用程序角色 | 修改 | 铝 | 数据库 | ALTER ANY APPLICATION ROLE |
应用程序角色 | 控制 | CL | 数据库 | 控制 |
应用程序角色 | 视图定义 | 大众 | 数据库 | 视图定义 |
装配 | 修改 | 铝 | 数据库 | ALTER ANY ASSEMBLY |
装配 | 控制 | CL | 数据库 | 控制 |
装配 | 参考文献 | 射频 | 数据库 | 参考文献 |
装配 | 获取所有权 | 自 | 数据库 | 控制 |
装配 | 视图定义 | 大众 | 数据库 | 视图定义 |
非对称密钥 | 修改 | 铝 | 数据库 | ALTER ANY ASYMMETRIC KEY |
非对称密钥 | 控制 | CL | 数据库 | 控制 |
非对称密钥 | 参考文献 | 射频 | 数据库 | 参考文献 |
非对称密钥 | 获取所有权 | 自 | 数据库 | 控制 |
非对称密钥 | 视图定义 | 大众 | 数据库 | 视图定义 |
可用性组 | 修改 | 铝 | 服务器 | ALTER ANY AVAILABILITY GROUP |
可用性组 | 控制 | CL | 服务器 | CONTROL SERVER |
可用性组 | 获取所有权 | 自 | 服务器 | CONTROL SERVER |
可用性组 | 视图定义 | 大众 | 服务器 | 查看任何定义 |
证书 | 修改 | 铝 | 数据库 | ALTER ANY CERTIFICATE |
证书 | 控制 | CL | 数据库 | 控制 |
证书 | 参考文献 | 射频 | 数据库 | 参考文献 |
证书 | 获取所有权 | 自 | 数据库 | 控制 |
证书 | 视图定义 | 大众 | 数据库 | 视图定义 |
合同 | 修改 | 铝 | 数据库 | ALTER ANY CONTRACT |
合同 | 控制 | CL | 数据库 | 控制 |
合同 | 参考文献 | 射频 | 数据库 | 参考文献 |
合同 | 获取所有权 | 自 | 数据库 | 控制 |
合同 | 视图定义 | 大众 | 数据库 | 视图定义 |
凭据 | 控制 | CL | 服务器 | CONTROL SERVER |
凭据 | 参考文献 | 射频 | 服务器 | ALTER ANY CREDENTIAL |
数据库 | 管理数据库批量操作 | DABO | 服务器 | CONTROL SERVER |
数据库 | 修改 | 铝 | 服务器 | ALTER ANY DATABASE |
数据库 | ALTER ANY APPLICATION ROLE | 阿拉尔 | 服务器 | CONTROL SERVER |
数据库 | ALTER ANY ASSEMBLY | 唉 | 服务器 | CONTROL SERVER |
数据库 | ALTER ANY ASYMMETRIC KEY | ALAK | 服务器 | CONTROL SERVER |
数据库 | ALTER ANY CERTIFICATE | ALCF | 服务器 | CONTROL SERVER |
数据库 | 更改任何列加密密钥 | ALCK 适用范围:SQL Server(SQL Server 2016 (13.x) 到当前版本)、Azure SQL 数据库。 |
服务器 | CONTROL SERVER |
数据库 | ALTER ANY COLUMN MASTER KEY | ALCM 适用范围:SQL Server(SQL Server 2016 (13.x) 到当前版本)、Azure SQL 数据库。 |
服务器 | CONTROL SERVER |
数据库 | ALTER ANY CONTRACT | ALSC | 服务器 | CONTROL SERVER |
数据库 | ALTER ANY DATABASE AUDIT | 阿尔达 | 服务器 | ALTER ANY SERVER AUDIT |
数据库 | ALTER ANY DATABASE DDL TRIGGER | ALTG | 服务器 | CONTROL SERVER |
数据库 | ALTER ANY DATABASE 事件通知 | ALED | 服务器 | ALTER ANY EVENT NOTIFICATION |
数据库 | ALTER ANY DATABASE 事件会话 | AADS | 服务器 | ALTER ANY EVENT SESSION |
数据库 | ALTER ANY DATABASE EVENT SESSION ADD EVENT | LDAE | 服务器 | ALTER ANY EVENT SESSION ADD EVENT |
数据库 | ALTER ANY DATABASE EVENT SESSION ADD TARGET | LDAT | 服务器 | ALTER ANY EVENT SESSION ADD TARGET |
数据库 | ALTER ANY DATABASE EVENT SESSION DISABLE | DDES | 服务器 | ALTER ANY EVENT SESSION DISABLE |
数据库 | ALTER ANY DATABASE EVENT SESSION DROP EVENT | LDDE | 服务器 | ALTER ANY EVENT SESSION DROP EVENT |
数据库 | ALTER ANY DATABASE EVENT SESSION DROP TARGET | LDDT | 服务器 | ALTER ANY EVENT SESSION DROP TARGET |
数据库 | 启用 ALTER ANY DATABASE 事件会话 | EDES | 服务器 | ALTER ANY EVENT SESSION ENABLE |
数据库 | ALTER ANY DATABASE EVENT SESSION OPTION | LDSO | 服务器 | ALTER ANY EVENT SESSION OPTION |
数据库 | ALTER ANY DATABASE SCOPED CONFIGURATION | ALDC 适用范围:SQL Server(SQL Server 2016 (13.x) 到当前版本)、Azure SQL 数据库。 |
服务器 | CONTROL SERVER |
数据库 | ALTER ANY DATASPACE | ALDS | 服务器 | CONTROL SERVER |
数据库 | 修改任何外部数据源 | AEDS | 服务器 | CONTROL SERVER |
数据库 | 更改任何外部文件格式 | AEFF | 服务器 | CONTROL SERVER |
数据库 | ALTER ANY EXTERNAL JOB | AESJ | 服务器 | CONTROL SERVER |
数据库 | ALTER ANY EXTERNAL LANGUAGE | ALLA | 服务器 | CONTROL SERVER |
数据库 | ALTER ANY EXTERNAL LIBRARY | ALEL | 服务器 | CONTROL SERVER |
数据库 | ALTER ANY EXTERNAL STREAM | AEST | 服务器 | CONTROL SERVER |
数据库 | ALTER ANY FULLTEXT CATALOG | ALFT | 服务器 | CONTROL SERVER |
数据库 | ALTER ANY MASK | AAMK 适用范围:SQL Server(SQL Server 2016 (13.x) 到当前版本)、Azure SQL 数据库。 |
服务器 | CONTROL SERVER |
数据库 | ALTER ANY MESSAGE TYPE | ALMT | 服务器 | CONTROL SERVER |
数据库 | ALTER ANY REMOTE SERVICE BINDING | ALSB | 服务器 | CONTROL SERVER |
数据库 | ALTER ANY ROLE | ALRL | 服务器 | CONTROL SERVER |
数据库 | ALTER ANY ROUTE | ALRT | 服务器 | CONTROL SERVER |
数据库 | 更改任何架构 | ALSM | 服务器 | CONTROL SERVER |
数据库 | 更改任何安全策略 | ALSP 适用范围:SQL Server(SQL Server 2016 (13.x) 到当前版本)、Azure SQL 数据库。 |
服务器 | CONTROL SERVER |
数据库 | 更改任何敏感度分类 | AASC 适用范围:SQL Server(SQL Server 2016 (13.x) 到当前版本)、Azure SQL 数据库。 |
服务器 | CONTROL SERVER |
数据库 | ALTER ANY SERVICE | ALSV | 服务器 | CONTROL SERVER |
数据库 | ALTER ANY SYMMETRIC KEY | ALSK | 服务器 | CONTROL SERVER |
数据库 | 更改任何用户 | ALUS | 服务器 | CONTROL SERVER |
数据库 | ALTER LEDGER | ALR | 服务器 | 控制 |
数据库 | ALTER LEDGER CONFIGURATION | ALC | 服务器 | CONTROL SERVER |
数据库 | 证实 | 认证 | 服务器 | 身份验证服务器 |
数据库 | BACKUP DATABASE | BADB | 服务器 | CONTROL SERVER |
数据库 | BACKUP LOG | BALO | 服务器 | CONTROL SERVER |
数据库 | 检查站 | CP | 服务器 | CONTROL SERVER |
数据库 | 连接 | 一氧化碳 | 服务器 | CONTROL SERVER |
数据库 | 连接复制 | 公司 | 服务器 | CONTROL SERVER |
数据库 | 控制 | CL | 服务器 | CONTROL SERVER |
数据库 | CREATE AGGREGATE | 峭壁 | 服务器 | CONTROL SERVER |
数据库 | 创建任何数据库事件会话 | CRDS | 服务器 | 创建任意事件会话 |
数据库 | CREATE ASSEMBLY | CRAS | 服务器 | CONTROL SERVER |
数据库 | 创建非对称密钥 | CRAK | 服务器 | CONTROL SERVER |
数据库 | CREATE CERTIFICATE | CRCF | 服务器 | CONTROL SERVER |
数据库 | CREATE CONTRACT | CRSC | 服务器 | CONTROL SERVER |
数据库 | 创建数据库 | CRDB | 服务器 | CREATE ANY DATABASE |
数据库 | CREATE DATABASE DDL 事件通知 | CRED | 服务器 | 创建 DDL 事件通知 |
数据库 | 创建默认值 | CRDF | 服务器 | CONTROL SERVER |
数据库 | CREATE EXTERNAL LANGUAGE | CRLA | 服务器 | CONTROL SERVER |
数据库 | CREATE EXTERNAL LIBRARY | CREL | 服务器 | CONTROL SERVER |
数据库 | 创建全文目录 | CRFT | 服务器 | CONTROL SERVER |
数据库 | 创建函数 | CRFN | 服务器 | CONTROL SERVER |
数据库 | 创建消息类型 | CRMT | 服务器 | CONTROL SERVER |
数据库 | 创建流程 | CRPR | 服务器 | CONTROL SERVER |
数据库 | CREATE QUEUE | CRQU | 服务器 | CONTROL SERVER |
数据库 | 创建远程服务绑定 | CRSB | 服务器 | CONTROL SERVER |
数据库 | 创建角色 | CRRL | 服务器 | CONTROL SERVER |
数据库 | CREATE ROUTE | CRRT | 服务器 | CONTROL SERVER |
数据库 | 创建规则 | CRRU | 服务器 | CONTROL SERVER |
数据库 | 创建架构 | CRSM | 服务器 | CONTROL SERVER |
数据库 | CREATE SERVICE | CRSV | 服务器 | CONTROL SERVER |
数据库 | 创建对称密钥 | CRSK | 服务器 | CONTROL SERVER |
数据库 | CREATE SYNONYM | CRSN | 服务器 | CONTROL SERVER |
数据库 | 创建表 | CRTB | 服务器 | CONTROL SERVER |
数据库 | 创建类型 | CRTY | 服务器 | CONTROL SERVER |
数据库 | 创建用户 | CUSR | 服务器 | CONTROL SERVER |
数据库 | 创建视图 | CRVW | 服务器 | CONTROL SERVER |
数据库 | CREATE XML SCHEMA COLLECTION | CRXS | 服务器 | CONTROL SERVER |
数据库 | 删除 | DL | 服务器 | CONTROL SERVER |
数据库 | 删除任何数据库事件会话 | DRDS | 服务器 | 删除任意事件会话 |
数据库 | 启用账本 | EL | 服务器 | 控制 |
数据库 | 执行 | 前任 | 服务器 | CONTROL SERVER |
数据库 | 执行任何外部终结点 | EAEE | 服务器 | CONTROL SERVER |
数据库 | 执行任何外部脚本 | EAES 适用范围:SQL Server(SQL Server 2016 (13.x) 到当前版本)。 |
服务器 | CONTROL SERVER |
数据库 | 插入 | 在 | 服务器 | CONTROL SERVER |
数据库 | KILL DATABASE CONNECTION | KIDC 适用范围:Azure SQL 数据库。 在 SQL Server 中使用 ALTER ANY CONNECTION。 |
服务器 | ALTER ANY CONNECTION |
数据库 | 参考文献 | 射频 | 服务器 | CONTROL SERVER |
数据库 | 选择 | SL | 服务器 | CONTROL SERVER |
数据库 | SHOWPLAN | SLV | 服务器 | ALTER TRACE |
数据库 | 订阅查询通知 | SUQN | 服务器 | CONTROL SERVER |
数据库 | 获取所有权 | 自 | 服务器 | CONTROL SERVER |
数据库 | 揭露 | UMSK 适用范围:SQL Server(SQL Server 2016 (13.x) 到当前版本)、Azure SQL 数据库。 |
服务器 | CONTROL SERVER |
数据库 | 更新 | 向上 | 服务器 | CONTROL SERVER |
数据库 | 查看任何列加密密钥定义 | VWCK 适用范围:SQL Server(SQL Server 2016 (13.x) 到当前版本)、Azure SQL 数据库。 |
服务器 | 查看服务器状态 |
数据库 | 查看任何列主密钥定义 | VWCM 适用范围:SQL Server(SQL Server 2016 (13.x) 到当前版本)、Azure SQL 数据库。 |
服务器 | 查看服务器状态 |
数据库 | 查看任何敏感度分类 | VASC | 服务器 | CONTROL SERVER |
数据库 | 查看加密保护的定义 | VCD | 服务器 | 查看任何加密保护的定义 |
数据库 | 查看数据库性能状态 | VDP | 服务器 | 查看服务器性能状态 |
数据库 | 查看数据库安全审核 | VDSA | 服务器 | CONTROL SERVER |
数据库 | 查看数据库安全状态 | VDS | 服务器 | 查看服务器安全状态 |
数据库 | 查看数据库状态 | VWDS | 服务器 | 查看服务器状态 |
数据库 | 视图定义 | 大众 | 服务器 | 查看任何定义 |
数据库 | 查看账本内容 | VLC | 服务器 | 控制 |
数据库 | 查看安全定义 | VWS | 服务器 | 查看任何安全定义 |
数据库 | 查看性能定义 | VWP | 服务器 | 查看任何性能定义 |
数据库作用域凭据 | 修改 | 铝 | 数据库 | 控制 |
数据库作用域凭据 | 控制 | CL | 数据库 | 控制 |
数据库作用域凭据 | 参考文献 | 射频 | 数据库 | 参考文献 |
数据库作用域凭据 | 获取所有权 | 自 | 数据库 | 控制 |
数据库作用域凭据 | 视图定义 | 大众 | 数据库 | 视图定义 |
端点 | 修改 | 铝 | 服务器 | ALTER ANY ENDPOINT |
端点 | 连接 | 一氧化碳 | 服务器 | CONTROL SERVER |
端点 | 控制 | CL | 服务器 | CONTROL SERVER |
端点 | 获取所有权 | 自 | 服务器 | CONTROL SERVER |
端点 | 视图定义 | 大众 | 服务器 | 查看任何定义 |
FULLTEXT 目录 | 修改 | 铝 | 数据库 | ALTER ANY FULLTEXT CATALOG |
FULLTEXT 目录 | 控制 | CL | 数据库 | 控制 |
FULLTEXT 目录 | 参考文献 | 射频 | 数据库 | 参考文献 |
FULLTEXT 目录 | 获取所有权 | 自 | 数据库 | 控制 |
FULLTEXT 目录 | 视图定义 | 大众 | 数据库 | 视图定义 |
全文非索引字表 | 修改 | 铝 | 数据库 | ALTER ANY FULLTEXT CATALOG |
全文非索引字表 | 控制 | CL | 数据库 | 控制 |
全文非索引字表 | 参考文献 | 射频 | 数据库 | 参考文献 |
全文非索引字表 | 获取所有权 | 自 | 数据库 | 控制 |
全文非索引字表 | 视图定义 | 大众 | 数据库 | 视图定义 |
登录 | 修改 | 铝 | 服务器 | ALTER ANY LOGIN |
登录 | 控制 | CL | 服务器 | CONTROL SERVER |
登录 | 模拟 | 即时通讯 | 服务器 | CONTROL SERVER |
登录 | 视图定义 | 大众 | 服务器 | 查看任何定义 |
消息类型 | 修改 | 铝 | 数据库 | ALTER ANY MESSAGE TYPE |
消息类型 | 控制 | CL | 数据库 | 控制 |
消息类型 | 参考文献 | 射频 | 数据库 | 参考文献 |
消息类型 | 获取所有权 | 自 | 数据库 | 控制 |
消息类型 | 视图定义 | 大众 | 数据库 | 视图定义 |
对象 | 修改 | 铝 | 图式 | 修改 |
对象 | 控制 | CL | 图式 | 控制 |
对象 | 删除 | DL | 图式 | 删除 |
对象 | 执行 | 前任 | 图式 | 执行 |
对象 | 插入 | 在 | 图式 | 插入 |
对象 | 收到 | 钢筋混凝土 | 图式 | 控制 |
对象 | 参考文献 | 射频 | 图式 | 参考文献 |
对象 | 选择 | SL | 图式 | 选择 |
对象 | 获取所有权 | 自 | 图式 | 控制 |
对象 | 揭露 | UMSK | 图式 | 揭露 |
对象 | 更新 | 向上 | 图式 | 更新 |
对象 | 查看更改跟踪 | VWCT | 图式 | 查看更改跟踪 |
对象 | 视图定义 | 大众 | 图式 | 视图定义 |
远程服务绑定 | 修改 | 铝 | 数据库 | ALTER ANY REMOTE SERVICE BINDING |
远程服务绑定 | 控制 | CL | 数据库 | 控制 |
远程服务绑定 | 获取所有权 | 自 | 数据库 | 控制 |
远程服务绑定 | 视图定义 | 大众 | 数据库 | 视图定义 |
角色 | 修改 | 铝 | 数据库 | ALTER ANY ROLE |
角色 | 控制 | CL | 数据库 | 控制 |
角色 | 获取所有权 | 自 | 数据库 | 控制 |
角色 | 视图定义 | 大众 | 数据库 | 视图定义 |
路线 | 修改 | 铝 | 数据库 | ALTER ANY ROUTE |
路线 | 控制 | CL | 数据库 | 控制 |
路线 | 获取所有权 | 自 | 数据库 | 控制 |
路线 | 视图定义 | 大众 | 数据库 | 视图定义 |
图式 | 修改 | 铝 | 数据库 | 更改任何架构 |
图式 | 控制 | CL | 数据库 | 控制 |
图式 | 创建序列 | CRSO | 数据库 | 控制 |
图式 | 删除 | DL | 数据库 | 删除 |
图式 | 执行 | 前任 | 数据库 | 执行 |
图式 | 插入 | 在 | 数据库 | 插入 |
图式 | 参考文献 | 射频 | 数据库 | 参考文献 |
图式 | 选择 | SL | 数据库 | 选择 |
图式 | 获取所有权 | 自 | 数据库 | 控制 |
图式 | 揭露 | UMSK | 数据库 | 揭露 |
图式 | 更新 | 向上 | 数据库 | 更新 |
图式 | 查看更改跟踪 | VWCT | 数据库 | 查看更改跟踪 |
图式 | 视图定义 | 大众 | 数据库 | 视图定义 |
SEARCH 属性列表 | 修改 | 铝 | 服务器 | ALTER ANY FULLTEXT CATALOG |
SEARCH 属性列表 | 控制 | CL | 服务器 | 控制 |
SEARCH 属性列表 | 参考文献 | 射频 | 服务器 | 参考文献 |
SEARCH 属性列表 | 获取所有权 | 自 | 服务器 | 控制 |
SEARCH 属性列表 | 视图定义 | 大众 | 服务器 | 视图定义 |
服务器 | 管理批量作 | ADBO | 不适用 | 不适用 |
服务器 | ALTER ANY AVAILABILITY GROUP | ALAG | 不适用 | 不适用 |
服务器 | ALTER ANY CONNECTION | ALCO | 不适用 | 不适用 |
服务器 | ALTER ANY CREDENTIAL | ALCD | 不适用 | 不适用 |
服务器 | ALTER ANY DATABASE | ALDB | 不适用 | 不适用 |
服务器 | ALTER ANY ENDPOINT | ALHE | 不适用 | 不适用 |
服务器 | ALTER ANY EVENT NOTIFICATION | 啤酒 | 不适用 | 不适用 |
服务器 | ALTER ANY EVENT SESSION | AAES | 不适用 | 不适用 |
服务器 | ALTER ANY EVENT SESSION ADD EVENT | LSAE | 不适用 | 不适用 |
服务器 | ALTER ANY EVENT SESSION ADD TARGET | LSAT | 不适用 | 不适用 |
服务器 | ALTER ANY EVENT SESSION DISABLE | DES | 不适用 | 不适用 |
服务器 | ALTER ANY EVENT SESSION DROP EVENT | LSDE | 不适用 | 不适用 |
服务器 | ALTER ANY EVENT SESSION DROP TARGET | LSDT | 不适用 | 不适用 |
服务器 | ALTER ANY EVENT SESSION ENABLE | EES | 不适用 | 不适用 |
服务器 | ALTER ANY EVENT SESSION OPTION | LESO | 不适用 | 不适用 |
服务器 | ALTER ANY LINKED SERVER | ALLS | 不适用 | 不适用 |
服务器 | ALTER ANY LOGIN | ALLG | 不适用 | 不适用 |
服务器 | ALTER ANY SERVER AUDIT | ALAA | 不适用 | 不适用 |
服务器 | ALTER ANY SERVER ROLE | ALSR | 不适用 | 不适用 |
服务器 | ALTER RESOURCES | ALRS | 不适用 | 不适用 |
服务器 | ALTER SERVER STATE | ALSS | 不适用 | 不适用 |
服务器 | ALTER SETTINGS | ALST | 不适用 | 不适用 |
服务器 | ALTER TRACE | ALTR | 不适用 | 不适用 |
服务器 | 身份验证服务器 | 认证 | 不适用 | 不适用 |
服务器 | 连接任何数据库 | CADB | 不适用 | 不适用 |
服务器 | 连接 SQL | COSQ | 不适用 | 不适用 |
服务器 | CONTROL SERVER | CL | 不适用 | 不适用 |
服务器 | CREATE ANY DATABASE | CRDB | 不适用 | 不适用 |
服务器 | 创建可用性组 | CRAC | 不适用 | 不适用 |
服务器 | 创建 DDL 事件通知 | CRDE | 不适用 | 不适用 |
服务器 | 创建终结点 | CRHE | 不适用 | 不适用 |
服务器 | CREATE SERVER ROLE | CRSR | 不适用 | 不适用 |
服务器 | 创建跟踪事件通知 | CRTE | 不适用 | 不适用 |
服务器 | 外部访问程序集 | XA | 不适用 | 不适用 |
服务器 | 模拟任何登录名 | IAL | 不适用 | 不适用 |
服务器 | 选择所有用户安全对象 | SUS | 不适用 | 不适用 |
服务器 | 关闭 | SHDN | 不适用 | 不适用 |
服务器 | 不安全的程序集 | 徐 | 不适用 | 不适用 |
服务器 | 查看任意数据库 | VWDB | 不适用 | 不适用 |
服务器 | 查看任何定义 | VWAD | 不适用 | 不适用 |
服务器 | 查看服务器状态 | VWSS | 不适用 | 不适用 |
服务器角色 | 修改 | 铝 | 服务器 | ALTER ANY SERVER ROLE |
服务器角色 | 控制 | CL | 服务器 | CONTROL SERVER |
服务器角色 | 获取所有权 | 自 | 服务器 | CONTROL SERVER |
服务器角色 | 视图定义 | 大众 | 服务器 | 查看任何定义 |
服务 | 修改 | 铝 | 数据库 | ALTER ANY SERVICE |
服务 | 控制 | CL | 数据库 | 控制 |
服务 | 发送 | 锡 | 数据库 | 控制 |
服务 | 获取所有权 | 自 | 数据库 | 控制 |
服务 | 视图定义 | 大众 | 数据库 | 视图定义 |
对称密钥 | 修改 | 铝 | 数据库 | ALTER ANY SYMMETRIC KEY |
对称密钥 | 控制 | CL | 数据库 | 控制 |
对称密钥 | 参考文献 | 射频 | 数据库 | 参考文献 |
对称密钥 | 获取所有权 | 自 | 数据库 | 控制 |
对称密钥 | 视图定义 | 大众 | 数据库 | 视图定义 |
类型 | 控制 | CL | 图式 | 控制 |
类型 | 执行 | 前任 | 图式 | 执行 |
类型 | 参考文献 | 射频 | 图式 | 参考文献 |
类型 | 获取所有权 | 自 | 图式 | 控制 |
类型 | 视图定义 | 大众 | 图式 | 视图定义 |
用户 | 修改 | 铝 | 数据库 | 更改任何用户 |
用户 | 控制 | CL | 数据库 | 控制 |
用户 | 模拟 | 即时通讯 | 数据库 | 控制 |
用户 | 视图定义 | 大众 | 数据库 | 视图定义 |
XML 架构集合 | 修改 | 铝 | 图式 | 修改 |
XML 架构集合 | 控制 | CL | 图式 | 控制 |
XML 架构集合 | 执行 | 前任 | 图式 | 执行 |
XML 架构集合 | 参考文献 | 射频 | 图式 | 参考文献 |
XML 架构集合 | 获取所有权 | 自 | 图式 | 控制 |
XML 架构集合 | 视图定义 | 大众 | 图式 | 视图定义 |
SQL Server 2022 添加的新粒度权限
以下权限将添加到 SQL Server 2022:
添加了 10 个新权限,允许访问系统元数据。
为扩展事件添加了 18 个新权限。
针对安全相关对象添加了 9 个新权限。
为账本添加了 4 个权限。
3 个其他数据库权限。
有关详细信息,请参阅 SQL Server 2022 和 Azure SQL 的新粒度权限,以改进对 PoLP 的遵守。
系统元数据的访问权限
服务器级别:
- 查看任何安全定义
- 查看任何性能定义
- 查看服务器安全状态
- 查看服务器性能状态
- 查看任何加密保护的定义
数据库级别:
- 查看数据库安全状态
- 查看数据库性能状态
- 查看安全定义
- 查看性能定义
- 查看加密保护的定义
扩展事件权限
服务器级别:
- 创建任意事件会话
- 删除任意事件会话
- ALTER ANY EVENT SESSION OPTION
- ALTER ANY EVENT SESSION ADD EVENT
- ALTER ANY EVENT SESSION DROP EVENT
- ALTER ANY EVENT SESSION ENABLE
- ALTER ANY EVENT SESSION DISABLE
- ALTER ANY EVENT SESSION ADD TARGET
- ALTER ANY EVENT SESSION DROP TARGET
所有这些权限都在同一父权限下:ALTER ANY EVENT SESSION
数据库级别:
- 创建任何数据库事件会话
- 删除任何数据库事件会话
- ALTER ANY DATABASE EVENT SESSION OPTION
- ALTER ANY DATABASE EVENT SESSION ADD EVENT
- ALTER ANY DATABASE EVENT SESSION DROP EVENT
- 启用 ALTER ANY DATABASE 事件会话
- ALTER ANY DATABASE EVENT SESSION DISABLE
- ALTER ANY DATABASE EVENT SESSION ADD TARGET
- ALTER ANY DATABASE EVENT SESSION DROP TARGET
所有这些权限都在同一父权限下:ALTER ANY DATABASE EVENT SESSION
与安全相关的对象权限
- CONTROL (CREDENTIAL)
- 创建登录
- 创建用户
- 参考 (CREDENTIAL)
- UNMASK (OBJECT)
- UNMASK (SCHEMA)
- 查看任何错误日志
- 查看服务器安全审核
- 查看数据库安全审核
账本权限
- ALTER LEDGER
- ALTER LEDGER CONFIGURATION
- 启用账本
- 查看账本内容
其他数据库权限
- ALTER ANY EXTERNAL JOB
- ALTER ANY EXTERNAL STREAM
- 执行任何外部终结点
权限检查算法摘要
检查权限可能很复杂。 权限检查算法包括重叠的组成员关系和所有权链接、显式和隐式权限,并且会受包含安全实体的安全类的权限影响。 该算法的一般过程是收集所有相关权限。 如果未找到阻止性 DENY,该算法将搜索提供足够访问权限的 GRANT。 该算法包含三个基本元素: 安全上下文、 权限空间和 必需的权限。
注意
无法对 sa、dbo、实体所有者、information_schema、sys 或您自己授予、拒绝或撤消权限。
安全上下文
这是提供进行访问权限检查的权限的一组主体。 这些是与当前登录名或用户有关的权限,除非使用 EXECUTE AS 语句将安全上下文更改为其他登录名或用户。 安全上下文包括以下主体:
登录名
用户
角色成员资格
Windows 组成员身份
如果使用模块签名,则指证书的任何登录名或用户帐户(该证书用于对用户当前正在执行的模块进行签名),以及该主体的相关角色成员资格。
权限空间
这是安全实体和所有包含安全实体的安全类。 例如,表(安全实体)包含在架构安全类和数据库安全类中。 访问权限会受表级、架构级、数据库级和服务器级权限影响。 有关详细信息,请参阅权限层次结构(数据库引擎)。
必需的权限
必需的权限种类。 例如,INSERT、UPDATE、DELETE、SELECT、EXECUTE、ALTER、CONTROL 等等。
访问可能需要多个权限,如下面的示例中所示:
存储过程可能既需要针对存储过程的 EXECUTE 权限,也需要针对该存储过程引用的每个表的 INSERT 权限。
动态管理视图可能同时需要针对该视图的 VIEW SERVER STATE 和 SELECT 权限。
算法的通用步骤
算法确定是否允许访问某个安全对象时,使用的具体步骤可能会变化,这取决于涉及的主体和安全对象。 但是,算法会执行以下通用步骤:
如果登录名是 sysadmin 固定服务器角色的成员或用户是当前数据库中的 dbo 用户,则绕过权限检查。
如果所有权链接适用且以前针对链中对象的访问权限检查通过了安全检查,则允许访问。
聚合与调用方关联的服务器级、数据库级和已签名模块的标识,以创建 安全上下文。
对于该 安全上下文,收集为 权限空间授予或拒绝的所有权限。 权限可以明确表述为 GRANT、GRANT WITH GRANT 或 DENY,也可以是隐含或涵盖的权限 GRANT 或 DENY。 例如,针对架构的 CONTROL 权限隐含对表的 CONTROL, 对表的 CONTROL 则隐含 SELECT。 因此,如果授予了针对架构的 CONTROL 权限,也就授予了对表的 SELECT 权限。 如果拒绝了对表的 CONTROL 权限,也就拒绝了对表的 SELECT 权限。
注意
列级权限的 GRANT 覆盖对象级的 DENY。 有关详细信息,请参阅 DENY 对象权限。
标识 必需的权限。
如果对于 权限空间 中的对象,直接或隐式拒绝授予 安全上下文 中任何标识 必需的权限,则权限检查失败。
如果没有拒绝必需的权限, 而且必需的权限 包含对安全上下文中任何标识直接或隐式的 GRANT 或 GRANT WITH GRANT 权限,则要通过权限检查,这适用于权限空间中的任何对象。
列级权限的特殊注意事项
列级权限可使用语法 <table_name>(<column _name>) 授予。 例如:
GRANT SELECT ON OBJECT::Customer(CustomerName) TO UserJoe;
表上的 DENY 被列中的 GRANT 替代。 但是,表上的后续 DENY 将删除 GRANT 列。
示例
本节中的以下示例说明如何检索权限信息。
答: 返回可授予权限的完整列表
下列语句使用 fn_builtin_permissions
函数返回所有数据库引擎权限。 有关详细信息,请参阅 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
的 ID。
SELECT * FROM sys.database_permissions
WHERE major_id = OBJECT_ID('Yttrium');
GO