适用于:SQL Server
使用此选项 cross db ownership chaining 为 SQL Server 实例配置跨数据库所有权链。
此服务器选项使您能够在数据库级别控制跨数据库所有权链接,或者允许在所有数据库中启用跨数据库所有权链接:
如果实例中
cross db ownership chaining关闭(0),则对所有数据库禁用跨数据库所有权链接。当
cross db ownership chaining开启时(1),跨数据库所有权链接适用于所有数据库。可以使用
SET语句的ALTER DATABASE子句为单个数据库设置跨数据库所有权链。 如果要创建新数据库,则可以使用CREATE DATABASE语句为新数据库设置跨数据库所有权链接选项。除非 SQL Server 实例托管的所有数据库都需要参与跨数据库所有权链接,并且您已经充分了解此设置的安全影响,否则不建议将
cross db ownership chaining设置为1。
检查跨数据库所有权链的状态
若要确定跨数据库所有权链接的当前状态,请执行以下查询:
SELECT is_db_chaining_on,
name
FROM sys.databases;
结果 1 表示已启用跨数据库所有权链接。
控制跨数据库的所有权链接
在打开或关闭跨数据库所有权链接之前:
只有 sysadmin 固定服务器角色成员能够启用或禁用跨数据库所有权链接。
在关闭生产服务器上的跨数据库所有权链接之前,请全面测试所有应用程序,包括第三方应用程序,以确保更改不会影响应用程序功能。
在服务器正在运行时,如果指定
cross db ownership chaining和RECONFIGURE,则可以更改选项sp_configure。如果您的数据库需要跨数据库所有权链,建议的做法是使用
cross db ownership chaining;然后,对于需要的单个数据库,使用sp_configure语句启用跨数据库所有权链。
安全风险
在 SQL Server 中启用跨数据库所有权链会导致潜在的安全漏洞。 当此功能处于活动状态时,具有提升权限的本地数据库用户可以利用所有权链接来提升权限,并可能获得 sysadmin 访问权限。
应避免在实例级别启用跨数据库所有权链接,并仅将其使用限制为受信任的相关数据库。