适用于:SQL Server
Azure SQL 数据库
Azure SQL 托管实例
Azure Synapse Analytics
分析平台系统(PDW)
Microsoft Fabric 中的 SQL 分析终结点
Microsoft Fabric 中的仓库
Microsoft Fabric 中的 SQL 数据库
每个 SQL Server 安全对象都有关联的权限,可以将这些权限授予主体。 数据库引擎中的权限在分配给登录名和服务器角色的服务器级别上,以及分配给数据库用户和数据库角色的数据库级别上进行管理。 Azure SQL 数据库的模型拥有与数据库权限相同的系统,但服务器级别权限不可用。 本文包含权限的完整列表。 有关权限的典型实现,请参阅 数据库引擎权限入门。
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
授予受赠者类似所有权的能力。 受赠者实际上拥有该安全对象的所有已定义权限。 被授予 CONTROL 权限的主体也可以授予该安全对象的权限。 因为 SQL Server 安全模型是分层的,所以 CONTROL 权限在特定范围内隐含着对该范围内的所有安全对象的 CONTROL 权限。 例如,数据库上的 CONTROL 权限意味着拥有该数据库的所有权限、该数据库中所有程序集的所有权限、该数据库中所有架构的所有权限,以及该数据库中所有架构内的对象的所有权限。
ALTER
授予更改特定安全对象的属性(所有权除外)的能力。 当在某个范围内授予 ALTER 权限时,还会授予更改、创建或删除该范围内包含的任何安全对象的能力。 例如,架构上的 ALTER 权限包括从该架构创建、更改和删除对象的能力。
ALTER ANY <Server Securable>,其中 Server Securable 可以是任何服务器安全对象。
授予创建、更改或删除 Server Securable 的各个实例的能力。 例如,ALTER ANY LOGIN 授予在实例中创建、更改或删除任何登录名的能力。
ALTER ANY <Database Securable>,其中 Database Securable 可以是数据库级别的任何安全对象。
授予创建、更改或删除 Database Securable 的各个实例的能力。 例如,ALTER ANY SCHEMA 授予在数据库中创建、更改或删除任何架构的能力。
接管所有权
使受赠者能够获得其所授予的安全对象的所有权。
IMPERSONATE <登录>
使受赠者能够模拟该登录名。
IMPERSONATE <用户>
使受赠者能够模拟该用户。
CREATE <Server 可保护对象>
授予受赠者创建 Server Securable 的能力。
CREATE <数据库安全对象>
授予受赠者创建 Database Securable 的能力。
CREATE <架构内包含的可保护对象>
授予创建包含在架构中的安全对象的能力。 但是,要在特定架构中创建该安全对象,需要该架构的 ALTER 权限。
VIEW 定义
使受赠者能够访问元数据。
REFERENCES
创建引用某个表的 FOREIGN KEY 约束需要该表的 REFERENCES 权限。
必须具有对某个对象的 REFERENCES 权限,才能使用引用该对象的
WITH SCHEMABINDING子句创建 FUNCTION 或 VIEW。
SQL Server 权限图表
下图显示了权限以及它们彼此之间的关系。 一些较高级别的权限(如 CONTROL SERVER)被多次列出。 在本文中,图表太小,无法阅读。 你可以下载 PDF 格式的完整数据库引擎权限文章。
适用于特定安全对象的权限
下表列出了主要的权限类以及可能应用这些权限的安全对象的类型。
| Permission | 适用于 |
|---|---|
| ALTER | 除 TYPE 外的所有对象类别。 |
| CONTROL | 所有对象类: AGGREGATE, APPLICATION ROLE, ASSEMBLY, ASYMMETRIC KEY, AVAILABILITY GROUP, CERTIFICATE, CONTRACT, CREDENTIALS, 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 SCHEMA COLLECTION |
| DELETE | 除 DATABASE SCOPED CONFIGURATION、SERVER 和 TYPE 之外的所有对象类。 |
| EXECUTE | CLR 类型、外部脚本、过程(Transact-SQL 和 CLR)、标量和聚合函数(Transact-SQL 和 CLR)以及同义词 |
| IMPERSONATE | 登录名和用户 |
| INSERT | 同义词、表和列、视图和列。 可以在数据库、架构或对象级别授予权限。 |
| RECEIVE | Service Broker 队列 |
| REFERENCES |
AGGREGATE, ASSEMBLY, ASYMMETRIC KEY, CERTIFICATE, CONTRACT, CREDENTIAL(适用于 2022 年 SQL Server (16.x) 及更高版本), DATABASE, DATABASE SCOPED CREDENTIAL, FULLTEXT CATALOG, FULLTEXT STOPLIST, FUNCTION, MESSAGE TYPE, PROCEDURE, QUEUE, RULE, SCHEMA, SEARCH PROPERTY LIST, SEQUENCE 对象, SYMMETRIC KEY, TABLE, TYPE, VIEW,和 XML SCHEMA COLLECTION |
| SELECT | 同义词、表和列、视图和列。 可以在数据库、架构或对象级别授予权限。 |
| 接管所有权 | 除 DATABASE SCOPED CONFIGURATION、LOGIN、SERVER 和 USER 外的所有对象类。 |
| UPDATE | 同义词、表和列、视图和列。 可以在数据库、架构或对象级别授予权限。 |
| VIEW 更改跟踪 | 架构和表 |
| VIEW 定义 | 除 DATABASE SCOPED CONFIGURATION 和 SERVER 之外的所有对象类。 |
Caution
安装期间授予系统对象的默认权限已针对可能的威胁进行了仔细评估,并且作为强化 SQL Server 安装的一部分,无需进行更改。 对系统对象权限的任何更改都可能限制或破坏功能,并且可能让你的 SQL Server 安装处于不受支持的状态。
SQL Server 权限
下表提供了 SQL Server 权限的完整列表。 Azure SQL 数据库权限仅适用于受支持的基本安全对象。 不能在 Azure SQL 数据库中授予服务器级别权限,但在某些情况下,可以授予数据库权限。
| 基本安全对象 | 基本安全对象的粒度权限 | 权限类型代码 | 包含基本安全对象的安全对象 | 容器安全对象上的隐含基本安全对象粒度权限的权限 |
|---|---|---|---|---|
| APPLICATION ROLE | ALTER | AL | DATABASE | 更改任意 APPLICATION ROLE |
| APPLICATION ROLE | CONTROL | CL | DATABASE | CONTROL |
| APPLICATION ROLE | VIEW 定义 | VW | DATABASE | VIEW 定义 |
| ASSEMBLY | ALTER | AL | DATABASE | 更改任意 ASSEMBLY |
| ASSEMBLY | CONTROL | CL | DATABASE | CONTROL |
| ASSEMBLY | REFERENCES | RF | DATABASE | REFERENCES |
| ASSEMBLY | 接管所有权 | TO | DATABASE | CONTROL |
| ASSEMBLY | VIEW 定义 | VW | DATABASE | VIEW 定义 |
| ASYMMETRIC KEY | ALTER | AL | DATABASE | 更改任意 ASYMMETRIC KEY |
| ASYMMETRIC KEY | CONTROL | CL | DATABASE | CONTROL |
| ASYMMETRIC KEY | REFERENCES | RF | DATABASE | REFERENCES |
| ASYMMETRIC KEY | 接管所有权 | TO | DATABASE | CONTROL |
| ASYMMETRIC KEY | VIEW 定义 | VW | DATABASE | VIEW 定义 |
| AVAILABILITY GROUP | ALTER | AL | SERVER | 更改任意 AVAILABILITY GROUP |
| AVAILABILITY GROUP | CONTROL | CL | SERVER | 控制服务器 |
| AVAILABILITY GROUP | 接管所有权 | TO | SERVER | 控制服务器 |
| AVAILABILITY GROUP | VIEW 定义 | VW | SERVER | VIEW 任何定义 |
| CERTIFICATE | ALTER | AL | DATABASE | 更改任意 CERTIFICATE |
| CERTIFICATE | CONTROL | CL | DATABASE | CONTROL |
| CERTIFICATE | REFERENCES | RF | DATABASE | REFERENCES |
| CERTIFICATE | 接管所有权 | TO | DATABASE | CONTROL |
| CERTIFICATE | VIEW 定义 | VW | DATABASE | VIEW 定义 |
| CONTRACT | ALTER | AL | DATABASE | 更改任意 CONTRACT |
| CONTRACT | CONTROL | CL | DATABASE | CONTROL |
| CONTRACT | REFERENCES | RF | DATABASE | REFERENCES |
| CONTRACT | 接管所有权 | TO | DATABASE | CONTROL |
| CONTRACT | VIEW 定义 | VW | DATABASE | VIEW 定义 |
| CREDENTIAL | CONTROL | CL | SERVER | 控制服务器 |
| CREDENTIAL | REFERENCES | RF | SERVER | 更改任意 CREDENTIAL |
| DATABASE | 管理DATABASE批量操作 | DABO | SERVER | 控制服务器 |
| DATABASE | ALTER | AL | SERVER | 更改任意 DATABASE |
| DATABASE | 更改任意 APPLICATION ROLE | ALAR | SERVER | 控制服务器 |
| DATABASE | 更改任意 ASSEMBLY | ALAS | SERVER | 控制服务器 |
| DATABASE | 更改任意 ASYMMETRIC KEY | ALAK | SERVER | 控制服务器 |
| DATABASE | 更改任意 CERTIFICATE | ALCF | SERVER | 控制服务器 |
| DATABASE | 更改任意 COLUMN ENCRYPTION KEY | ALCK 适用范围:SQL Server(SQL Server 2016 (13.x) 到当前版本)、Azure SQL 数据库。 |
SERVER | 控制服务器 |
| DATABASE | 更改任意 COLUMN MASTER KEY | ALCM 适用范围:SQL Server(SQL Server 2016 (13.x) 到当前版本)、Azure SQL 数据库。 |
SERVER | 控制服务器 |
| DATABASE | 更改任意 CONTRACT | ALSC | SERVER | 控制服务器 |
| DATABASE | 更改任何 DATABASE 审核 | ALDA | SERVER | 更改任意 SERVER AUDIT |
| DATABASE | 修改任何 DATABASE DDL TRIGGER | ALTG | SERVER | 控制服务器 |
| DATABASE | 更改任意 DATABASEEVENT NOTIFICATION | ALED | SERVER | 更改任意 EVENT NOTIFICATION |
| DATABASE | 更改任何 DATABASEEVENT SESSION | AADS | SERVER | 更改任意 EVENT SESSION |
| DATABASE | 更改任何 DATABASEEVENT SESSION 添加事件 | LDAE | SERVER | 更改任何 EVENT SESSION ADD EVENT 权限 |
| DATABASE | 修改任何 DATABASEEVENT SESSION 添加目标 | LDAT | SERVER | ALTER ANY EVENT SESSION 添加目标 |
| DATABASE | 禁用任何 DATABASEEVENT SESSION 的 ALTER | DDES | SERVER | 禁用对任何 EVENT SESSION 的 ALTER 权限 |
| DATABASE | 更改任何 DATABASEEVENT SESSION 删除事件 | LDDE | SERVER | 更改任何 EVENT SESSION 删除事件 |
| DATABASE | 更改任意 DATABASEEVENT SESSION 删除目标 | LDDT | SERVER | 更改任何 EVENT SESSION 删除目标 |
| DATABASE | ALTER ANY DATABASEEVENT SESSION 启用 | EDES | SERVER | 启用 ALTER ANY EVENT SESSION 权限 |
| DATABASE | 更改任何 DATABASEEVENT SESSION 选项 | LDSO | SERVER | 更改任意 EVENT SESSION 选项 |
| DATABASE | 更改任意 DATABASE SCOPED CONFIGURATION | ALDC 适用范围:SQL Server(SQL Server 2016 (13.x) 到当前版本)、Azure SQL 数据库。 |
SERVER | 控制服务器 |
| DATABASE | 更改任何数据空间 | ALDS | SERVER | 控制服务器 |
| DATABASE | 更改任意 EXTERNAL DATA SOURCE | AEDS | SERVER | 控制服务器 |
| DATABASE | 更改任意 EXTERNAL FILE FORMAT | AEFF | SERVER | 控制服务器 |
| DATABASE | 任何外部作业的ALTER操作 | AESJ | SERVER | 控制服务器 |
| DATABASE | 更改任意 EXTERNAL LANGUAGE | ALLA | SERVER | 控制服务器 |
| DATABASE | 更改任意 EXTERNAL LIBRARY | ALEL | SERVER | 控制服务器 |
| DATABASE | 修改任何外部流 | AEST | SERVER | 控制服务器 |
| DATABASE | 更改任意 FULLTEXT CATALOG | ALFT | SERVER | 控制服务器 |
| DATABASE | 更改任意掩码 | AAMK 适用范围:SQL Server(SQL Server 2016 (13.x) 到当前版本)、Azure SQL 数据库。 |
SERVER | 控制服务器 |
| DATABASE | 更改任意 MESSAGE TYPE | ALMT | SERVER | 控制服务器 |
| DATABASE | 更改任意 REMOTE SERVICE BINDING | ALSB | SERVER | 控制服务器 |
| DATABASE | 更改任意 ROLE | ALRL | SERVER | 控制服务器 |
| DATABASE | 更改任意 ROUTE | ALRT | SERVER | 控制服务器 |
| DATABASE | 更改任意 SCHEMA | ALSM | SERVER | 控制服务器 |
| DATABASE | 更改任意 SECURITY POLICY | ALSP 适用范围:SQL Server(SQL Server 2016 (13.x) 到当前版本)、Azure SQL 数据库。 |
SERVER | 控制服务器 |
| DATABASE | 更改任意 SENSITIVITY CLASSIFICATION | AASC 适用范围:SQL Server(SQL Server 2019 (15.x) 到当前版本)、Azure SQL 数据库。 |
SERVER | 控制服务器 |
| DATABASE | 更改任意 SERVICE | ALSV | SERVER | 控制服务器 |
| DATABASE | 更改任意 SYMMETRIC KEY | ALSK | SERVER | 控制服务器 |
| DATABASE | 更改任意 USER | ALUS | SERVER | 控制服务器 |
| DATABASE | ALTER LEDGER | ALR | SERVER | CONTROL |
| DATABASE | 更改分类帐配置 | ALC | SERVER | 控制服务器 |
| DATABASE | AUTHENTICATE | AUTH | SERVER | 身份验证服务器 |
| DATABASE | BACKUP DATABASE | BADB | SERVER | 控制服务器 |
| DATABASE | BACKUP 日志 | BALO | SERVER | 控制服务器 |
| DATABASE | CHECKPOINT | CP | SERVER | 控制服务器 |
| DATABASE | CONNECT | CO | SERVER | 控制服务器 |
| DATABASE | 连接复制功能 | CORP | SERVER | 控制服务器 |
| DATABASE | CONTROL | CL | SERVER | 控制服务器 |
| DATABASE | CREATE AGGREGATE | CRAG | SERVER | 控制服务器 |
| DATABASE | 创建任意 DATABASEEVENT SESSION | CRDS | SERVER | 创建任何EVENT SESSION |
| DATABASE | CREATE ASSEMBLY | CRAS | SERVER | 控制服务器 |
| DATABASE | CREATE ASYMMETRIC KEY | CRAK | SERVER | 控制服务器 |
| DATABASE | CREATE CERTIFICATE | CRCF | SERVER | 控制服务器 |
| DATABASE | CREATE CONTRACT | CRSC | SERVER | 控制服务器 |
| DATABASE | CREATE DATABASE | CRDB | SERVER | 创建任何DATABASE |
| DATABASE | CREATE DATABASE DDL EVENT NOTIFICATION | CRED | SERVER | 创建 DDL EVENT NOTIFICATION |
| DATABASE | CREATE DEFAULT | CRDF | SERVER | 控制服务器 |
| DATABASE | CREATE EXTERNAL LANGUAGE | CRLA | SERVER | 控制服务器 |
| DATABASE | CREATE EXTERNAL LIBRARY | CREL | SERVER | 控制服务器 |
| DATABASE | CREATE FULLTEXT CATALOG | CRFT | SERVER | 控制服务器 |
| DATABASE | CREATE FUNCTION | CRFN | SERVER | 控制服务器 |
| DATABASE | CREATE MESSAGE TYPE | CRMT | SERVER | 控制服务器 |
| DATABASE | CREATE PROCEDURE | CRPR | SERVER | 控制服务器 |
| DATABASE | CREATE QUEUE | CRQU | SERVER | 控制服务器 |
| DATABASE | CREATE REMOTE SERVICE BINDING | CRSB | SERVER | 控制服务器 |
| DATABASE | CREATE ROLE | CRRL | SERVER | 控制服务器 |
| DATABASE | CREATE ROUTE | CRRT | SERVER | 控制服务器 |
| DATABASE | CREATE RULE | CRRU | SERVER | 控制服务器 |
| DATABASE | CREATE SCHEMA | CRSM | SERVER | 控制服务器 |
| DATABASE | CREATE SERVICE | CRSV | SERVER | 控制服务器 |
| DATABASE | CREATE SYMMETRIC KEY | CRSK | SERVER | 控制服务器 |
| DATABASE | CREATE SYNONYM | CRSN | SERVER | 控制服务器 |
| DATABASE | CREATE TABLE | CRTB | SERVER | 控制服务器 |
| DATABASE | CREATE TYPE | CRTY | SERVER | 控制服务器 |
| DATABASE | CREATE USER | CUSR | SERVER | 控制服务器 |
| DATABASE | CREATE VIEW | CRVW | SERVER | 控制服务器 |
| DATABASE | CREATE XML SCHEMA COLLECTION | CRXS | SERVER | 控制服务器 |
| DATABASE | DELETE | DL | SERVER | 控制服务器 |
| DATABASE | 删除任意DATABASEEVENT SESSION | DRDS | SERVER | 删除任意 EVENT SESSION |
| DATABASE | 启用分类账 | EL | SERVER | CONTROL |
| DATABASE | EXECUTE | EX | SERVER | 控制服务器 |
| DATABASE | 执行任意外部命令 ENDPOINT | EAEE | SERVER | 控制服务器 |
| DATABASE | 执行任何外部脚本 | EAES 适用范围:SQL Server(SQL Server 2016 (13.x) 到当前版本)。 |
SERVER | 控制服务器 |
| DATABASE | INSERT | IN | SERVER | 控制服务器 |
| DATABASE | 终止 DATABASE 连接 | KIDC 适用范围:Azure SQL 数据库。 在 SQL Server 中使用 ALTER ANY CONNECTION。 |
SERVER | 更改任何连接 |
| DATABASE | REFERENCES | RF | SERVER | 控制服务器 |
| DATABASE | SELECT | SL | SERVER | 控制服务器 |
| DATABASE | SHOWPLAN | SPLN | SERVER | ALTER 追踪 |
| DATABASE | 订阅查询通知 | SUQN | SERVER | 控制服务器 |
| DATABASE | 接管所有权 | TO | SERVER | 控制服务器 |
| DATABASE | UNMASK | UMSK 适用范围:SQL Server(SQL Server 2016 (13.x) 到当前版本)、Azure SQL 数据库。 |
SERVER | 控制服务器 |
| DATABASE | UPDATE | UP | SERVER | 控制服务器 |
| DATABASE | VIEW 任意 COLUMN ENCRYPTION KEY 定义 | VWCK 适用范围:SQL Server(SQL Server 2016 (13.x) 到当前版本)、Azure SQL 数据库。 |
SERVER | VIEW 服务器状态 |
| DATABASE | VIEW 任意 COLUMN MASTER KEY 定义 | VWCM 适用范围:SQL Server(SQL Server 2016 (13.x) 到当前版本)、Azure SQL 数据库。 |
SERVER | VIEW 服务器状态 |
| DATABASE | VIEW 任何 SENSITIVITY CLASSIFICATION | VASC | SERVER | 控制服务器 |
| DATABASE | VIEW 经密码学保护的定义 | VCD | SERVER | VIEW 任何经密码学保护的定义 |
| DATABASE | VIEW DATABASE 性能状态 | VDP | SERVER | VIEW 服务器性能状态 |
| DATABASE | VIEW DATABASE 安全审核 | VDSA | SERVER | 控制服务器 |
| DATABASE | VIEW DATABASE 安全状态 | VDS | SERVER | VIEW 服务器安全状态 |
| DATABASE | VIEW DATABASE 状态 | VWDS | SERVER | VIEW 服务器状态 |
| DATABASE | VIEW 定义 | VW | SERVER | VIEW 任何定义 |
| DATABASE | VIEW 账本内容 | VLC | SERVER | CONTROL |
| DATABASE | VIEW 安全定义 | VWS | SERVER | VIEW 任何安全定义 |
| DATABASE | VIEW 性能定义 | VWP | SERVER | VIEW 任何性能定义 |
| DATABASE SCOPED CREDENTIAL | ALTER | AL | DATABASE | CONTROL |
| DATABASE SCOPED CREDENTIAL | CONTROL | CL | DATABASE | CONTROL |
| DATABASE SCOPED CREDENTIAL | REFERENCES | RF | DATABASE | REFERENCES |
| DATABASE SCOPED CREDENTIAL | 接管所有权 | TO | DATABASE | CONTROL |
| DATABASE SCOPED CREDENTIAL | VIEW 定义 | VW | DATABASE | VIEW 定义 |
| ENDPOINT | ALTER | AL | SERVER | 更改任意 ENDPOINT |
| ENDPOINT | CONNECT | CO | SERVER | 控制服务器 |
| ENDPOINT | CONTROL | CL | SERVER | 控制服务器 |
| ENDPOINT | 接管所有权 | TO | SERVER | 控制服务器 |
| ENDPOINT | VIEW 定义 | VW | SERVER | VIEW 任何定义 |
| FULLTEXT CATALOG | ALTER | AL | DATABASE | 更改任意 FULLTEXT CATALOG |
| FULLTEXT CATALOG | CONTROL | CL | DATABASE | CONTROL |
| FULLTEXT CATALOG | REFERENCES | RF | DATABASE | REFERENCES |
| FULLTEXT CATALOG | 接管所有权 | TO | DATABASE | CONTROL |
| FULLTEXT CATALOG | VIEW 定义 | VW | DATABASE | VIEW 定义 |
| FULLTEXT STOPLIST | ALTER | AL | DATABASE | 更改任意 FULLTEXT CATALOG |
| FULLTEXT STOPLIST | CONTROL | CL | DATABASE | CONTROL |
| FULLTEXT STOPLIST | REFERENCES | RF | DATABASE | REFERENCES |
| FULLTEXT STOPLIST | 接管所有权 | TO | DATABASE | CONTROL |
| FULLTEXT STOPLIST | VIEW 定义 | VW | DATABASE | VIEW 定义 |
| LOGIN | ALTER | AL | SERVER | 更改任意 LOGIN |
| LOGIN | CONTROL | CL | SERVER | 控制服务器 |
| LOGIN | IMPERSONATE | IM | SERVER | 控制服务器 |
| LOGIN | VIEW 定义 | VW | SERVER | VIEW 任何定义 |
| MESSAGE TYPE | ALTER | AL | DATABASE | 更改任意 MESSAGE TYPE |
| MESSAGE TYPE | CONTROL | CL | DATABASE | CONTROL |
| MESSAGE TYPE | REFERENCES | RF | DATABASE | REFERENCES |
| MESSAGE TYPE | 接管所有权 | TO | DATABASE | CONTROL |
| MESSAGE TYPE | VIEW 定义 | VW | DATABASE | VIEW 定义 |
| OBJECT | ALTER | AL | SCHEMA | ALTER |
| OBJECT | CONTROL | CL | SCHEMA | CONTROL |
| OBJECT | DELETE | DL | SCHEMA | DELETE |
| OBJECT | EXECUTE | EX | SCHEMA | EXECUTE |
| OBJECT | INSERT | IN | SCHEMA | INSERT |
| OBJECT | RECEIVE | RC | SCHEMA | CONTROL |
| OBJECT | REFERENCES | RF | SCHEMA | REFERENCES |
| OBJECT | SELECT | SL | SCHEMA | SELECT |
| OBJECT | 接管所有权 | TO | SCHEMA | CONTROL |
| OBJECT | UNMASK | UMSK | SCHEMA | UNMASK |
| OBJECT | UPDATE | UP | SCHEMA | UPDATE |
| OBJECT | VIEW 更改跟踪 | VWCT | SCHEMA | VIEW 更改跟踪 |
| OBJECT | VIEW 定义 | VW | SCHEMA | VIEW 定义 |
| REMOTE SERVICE BINDING | ALTER | AL | DATABASE | 更改任意 REMOTE SERVICE BINDING |
| REMOTE SERVICE BINDING | CONTROL | CL | DATABASE | CONTROL |
| REMOTE SERVICE BINDING | 接管所有权 | TO | DATABASE | CONTROL |
| REMOTE SERVICE BINDING | VIEW 定义 | VW | DATABASE | VIEW 定义 |
| ROLE | ALTER | AL | DATABASE | 更改任意 ROLE |
| ROLE | CONTROL | CL | DATABASE | CONTROL |
| ROLE | 接管所有权 | TO | DATABASE | CONTROL |
| ROLE | VIEW 定义 | VW | DATABASE | VIEW 定义 |
| ROUTE | ALTER | AL | DATABASE | 更改任意 ROUTE |
| ROUTE | CONTROL | CL | DATABASE | CONTROL |
| ROUTE | 接管所有权 | TO | DATABASE | CONTROL |
| ROUTE | VIEW 定义 | VW | DATABASE | VIEW 定义 |
| SCHEMA | ALTER | AL | DATABASE | 更改任意 SCHEMA |
| SCHEMA | CONTROL | CL | DATABASE | CONTROL |
| SCHEMA | CREATE SEQUENCE | CRSO | DATABASE | CONTROL |
| SCHEMA | DELETE | DL | DATABASE | DELETE |
| SCHEMA | EXECUTE | EX | DATABASE | EXECUTE |
| SCHEMA | INSERT | IN | DATABASE | INSERT |
| SCHEMA | REFERENCES | RF | DATABASE | REFERENCES |
| SCHEMA | SELECT | SL | DATABASE | SELECT |
| SCHEMA | 接管所有权 | TO | DATABASE | CONTROL |
| SCHEMA | UNMASK | UMSK | DATABASE | UNMASK |
| SCHEMA | UPDATE | UP | DATABASE | UPDATE |
| SCHEMA | VIEW 更改跟踪 | VWCT | DATABASE | VIEW 更改跟踪 |
| SCHEMA | VIEW 定义 | VW | DATABASE | VIEW 定义 |
| SEARCH PROPERTY LIST | ALTER | AL | SERVER | 更改任意 FULLTEXT CATALOG |
| SEARCH PROPERTY LIST | CONTROL | CL | SERVER | CONTROL |
| SEARCH PROPERTY LIST | REFERENCES | RF | SERVER | REFERENCES |
| SEARCH PROPERTY LIST | 接管所有权 | TO | SERVER | CONTROL |
| SEARCH PROPERTY LIST | VIEW 定义 | VW | SERVER | VIEW 定义 |
| SERVER | 管理批量操作 | ADBO | 不適用 | 不適用 |
| SERVER | 更改任意 AVAILABILITY GROUP | ALAG | 不適用 | 不適用 |
| SERVER | 更改任何连接 | ALCO | 不適用 | 不適用 |
| SERVER | 更改任意 CREDENTIAL | ALCD | 不適用 | 不適用 |
| SERVER | 更改任意 DATABASE | ALDB | 不適用 | 不適用 |
| SERVER | 更改任意 ENDPOINT | ALHE | 不適用 | 不適用 |
| SERVER | 更改任意 EVENT NOTIFICATION | ALES | 不適用 | 不適用 |
| SERVER | 更改任意 EVENT SESSION | AAES | 不適用 | 不適用 |
| SERVER | 更改任何 EVENT SESSION ADD EVENT 权限 | LSAE | 不適用 | 不適用 |
| SERVER | ALTER ANY EVENT SESSION 添加目标 | LSAT | 不適用 | 不適用 |
| SERVER | 禁用对任何 EVENT SESSION 的 ALTER 权限 | DES | 不適用 | 不適用 |
| SERVER | 更改任何 EVENT SESSION 删除事件 | LSDE | 不適用 | 不適用 |
| SERVER | 更改任何 EVENT SESSION 删除目标 | LSDT | 不適用 | 不適用 |
| SERVER | 启用 ALTER ANY EVENT SESSION 权限 | EES | 不適用 | 不適用 |
| SERVER | 更改任意 EVENT SESSION 选项 | LESO | 不適用 | 不適用 |
| SERVER | 更改任何链接服务器 | ALLS | 不適用 | 不適用 |
| SERVER | 更改任意 LOGIN | ALLG | 不適用 | 不適用 |
| SERVER | 更改任意 SERVER AUDIT | ALAA | 不適用 | 不適用 |
| SERVER | 更改任意 SERVER ROLE | ALSR | 不適用 | 不適用 |
| SERVER | 更改资源 | ALRS | 不適用 | 不適用 |
| SERVER | 更改服务器状态 | ALSS | 不適用 | 不適用 |
| SERVER | 修改设置 | ALST | 不適用 | 不適用 |
| SERVER | ALTER 追踪 | ALTR | 不適用 | 不適用 |
| SERVER | 身份验证服务器 | AUTH | 不適用 | 不適用 |
| SERVER | 连接任意DATABASE | CADB | 不適用 | 不適用 |
| SERVER | 连接 SQL | COSQ | 不適用 | 不適用 |
| SERVER | 控制服务器 | CL | 不適用 | 不適用 |
| SERVER | 创建任何DATABASE | CRDB | 不適用 | 不適用 |
| SERVER | CREATE AVAILABILITY GROUP | CRAC | 不適用 | 不適用 |
| SERVER | 创建 DDL EVENT NOTIFICATION | CRDE | 不適用 | 不適用 |
| SERVER | CREATE ENDPOINT | CRHE | 不適用 | 不適用 |
| SERVER | CREATE SERVER ROLE | CRSR | 不適用 | 不適用 |
| SERVER | 创建跟踪 EVENT NOTIFICATION | CRTE | 不適用 | 不適用 |
| SERVER | 外部访问 ASSEMBLY | XA | 不適用 | 不適用 |
| SERVER | 模拟 ANY LOGIN | IAL | 不適用 | 不適用 |
| SERVER | 选择所有 USER 可保护对象 | SUS | 不適用 | 不適用 |
| SERVER | SHUTDOWN | SHDN | 不適用 | 不適用 |
| SERVER | 不安全 ASSEMBLY | XU | 不適用 | 不適用 |
| SERVER | VIEW 任何 DATABASE | VWDB | 不適用 | 不適用 |
| SERVER | VIEW 任何定义 | VWAD | 不適用 | 不適用 |
| SERVER | VIEW 服务器状态 | VWSS | 不適用 | 不適用 |
| SERVER ROLE | ALTER | AL | SERVER | 更改任意 SERVER ROLE |
| SERVER ROLE | CONTROL | CL | SERVER | 控制服务器 |
| SERVER ROLE | 接管所有权 | TO | SERVER | 控制服务器 |
| SERVER ROLE | VIEW 定义 | VW | SERVER | VIEW 任何定义 |
| SERVICE | ALTER | AL | DATABASE | 更改任意 SERVICE |
| SERVICE | CONTROL | CL | DATABASE | CONTROL |
| SERVICE | SEND | SN | DATABASE | CONTROL |
| SERVICE | 接管所有权 | TO | DATABASE | CONTROL |
| SERVICE | VIEW 定义 | VW | DATABASE | VIEW 定义 |
| SYMMETRIC KEY | ALTER | AL | DATABASE | 更改任意 SYMMETRIC KEY |
| SYMMETRIC KEY | CONTROL | CL | DATABASE | CONTROL |
| SYMMETRIC KEY | REFERENCES | RF | DATABASE | REFERENCES |
| SYMMETRIC KEY | 接管所有权 | TO | DATABASE | CONTROL |
| SYMMETRIC KEY | VIEW 定义 | VW | DATABASE | VIEW 定义 |
| TYPE | CONTROL | CL | SCHEMA | CONTROL |
| TYPE | EXECUTE | EX | SCHEMA | EXECUTE |
| TYPE | REFERENCES | RF | SCHEMA | REFERENCES |
| TYPE | 接管所有权 | TO | SCHEMA | CONTROL |
| TYPE | VIEW 定义 | VW | SCHEMA | VIEW 定义 |
| USER | ALTER | AL | DATABASE | 更改任意 USER |
| USER | CONTROL | CL | DATABASE | CONTROL |
| USER | IMPERSONATE | IM | DATABASE | CONTROL |
| USER | VIEW 定义 | VW | DATABASE | VIEW 定义 |
| XML SCHEMA COLLECTION | ALTER | AL | SCHEMA | ALTER |
| XML SCHEMA COLLECTION | CONTROL | CL | SCHEMA | CONTROL |
| XML SCHEMA COLLECTION | EXECUTE | EX | SCHEMA | EXECUTE |
| XML SCHEMA COLLECTION | REFERENCES | RF | SCHEMA | REFERENCES |
| XML SCHEMA COLLECTION | 接管所有权 | TO | SCHEMA | CONTROL |
| XML SCHEMA COLLECTION | VIEW 定义 | VW | SCHEMA | VIEW 定义 |
SQL Server 2022 添加的新粒度权限
以下权限将添加到 SQL Server 2022:
添加了 10 个新权限,允许访问系统元数据。
为扩展事件添加了 18 个新权限。
针对安全相关对象添加了 9 个新权限。
为账本添加了 4 个权限。
3 个其他数据库权限。
有关详细信息,请参阅 SQL Server 2022 和 Azure SQL 的新粒度权限,以改进对 PoLP 的遵守。
系统元数据的访问权限
服务器级别:
- VIEW 任何安全性定义
- VIEW 任意性能定义
- VIEW 服务器安全状态
- VIEW 服务器性能状态
- VIEW 任何受密码学保护的定义
数据库级别:
- VIEW DATABASE 安全状态
- VIEW DATABASE 性能状态
- VIEW 安全定义
- VIEW 性能定义
- VIEW 经密码学保护的定义
扩展事件权限
服务器级别:
- 创建任何EVENT SESSION
- 拖放任意内容 EVENT SESSION
- 更改任意 EVENT SESSION 选项
- 更改任何 EVENT SESSION ADD EVENT 权限
- 更改任何 EVENT SESSION 删除事件
- 启用 ALTER ANY EVENT SESSION 权限
- 禁用对任何 EVENT SESSION 的 ALTER 权限
- ALTER ANY EVENT SESSION 添加目标
- 更改任何 EVENT SESSION 删除目标
所有这些权限都属于同一父权限:ALTER ANY EVENT SESSION
数据库级别:
- 创建任意 DATABASEEVENT SESSION
- 拖放任何 DATABASEEVENT SESSION
- 更改任意DATABASEEVENT SESSION选项
- 更改任何 DATABASEEVENT SESSION 添加事件
- 更改任何 DATABASEEVENT SESSION 删除事件
- ALTER ANY DATABASEEVENT SESSION 启用
- 禁用任何 DATABASEEVENT SESSION 的 ALTER
- 修改任何 DATABASEEVENT SESSION 添加目标
- 更改任意 DATABASEEVENT SESSION 删除目标
所有这些权限都位于相同的父权限下: ALTER ANY DATABASEEVENT SESSION
与安全相关的对象权限
- 控制(CREDENTIAL)
- CREATE LOGIN
- CREATE USER
- 参考资料 (CREDENTIAL)
- 解除屏蔽(对象)
- 取消屏蔽(SCHEMA)
- VIEW 任何错误日志
- VIEW 服务器安全审核
- VIEW DATABASE 安全审核
账本权限
- ALTER LEDGER
- 更改分类帐配置
- 启用分类账
- VIEW 账本内容
其他数据库权限
- 任何外部作业的ALTER操作
- 修改任何外部流
- 执行任意外部命令 ENDPOINT
权限检查算法摘要
检查权限可能很复杂。 权限检查算法包括重叠的组成员身份和所有权链、显式和隐式权限,并且可能会受到包含该安全对象实体的安全对象类的权限的影响。 该算法的一般过程是收集所有相关权限。 如果未找到阻塞 DENY 的内容,算法将搜索可提供足够访问权限的 GRANT。 该算法包含三个基本要素:安全上下文、权限空间和所需权限。
Note
不能授予、拒绝或撤销对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附带GRANT,或DENY;或者,这些权限可以是默示许可或概括性许可GRANT或DENY。 例如,架构上的 CONTROL 权限隐含表上的 CONTROL 权限。 表上的 CONTROL 权限隐含 SELECT 权限。 因此,如果授予了架构的 CONTROL 权限,则授予表的 SELECT 权限。 如果拒绝了表的 CONTROL 权限,则拒绝表的 SELECT 权限。
Note
列级权限的GRANT会覆盖对象级别的DENY。 有关详细信息,请参阅 DENY 对象权限。
确定所需权限。
如果对权限空间中的对象的安全上下文中的任何标识直接或隐含地拒绝了所需权限,则权限检查失败。
如果所需权限未被拒绝,并且所需权限对安全上下文中的任一标识,在权限空间中的任一对象上,直接或隐式包含一个GRANT或一个带有GRANT权限的GRANT,则通过权限检查。
列级权限的特殊注意事项
列级权限使用语法 <table_name>(<column _name>) 授予。 例如:
GRANT SELECT ON OBJECT::Customer(CustomerName) TO UserJoe;
表上的一个 DENY 会被列上的一个 GRANT 覆盖。 但是,表上的后续 DENY 操作将删除该列 GRANT。
Examples
本部分中的示例演示如何检索权限信息。
A. 返回可授予权限的完整列表
下列语句使用 fn_builtin_permissions 函数返回所有数据库引擎权限。 有关详细信息,请参阅 sys.fn_builtin_permissions。
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。
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