Поделиться через


Включение перекрестного доступа между базами данных в SQL Server (ADO.NET)

Межбазовые цепочки владения возникают, когда процедура в одной базе данных зависит от объектов в другой базе данных. Межбазовая цепочка владения работает так же, как цепочка владения внутри единой базы данных, но для непрерывной цепочки владения необходимо, чтобы все владельцы объекта были сопоставлены с одной учетной записью входа. Если одна учетная запись входа является владельцем исходного объекта в исходной базе данных и целевых объектов в целевых базах данных, то SQL Server не проверяет наличие разрешений в целевых объектах.

Отключено по умолчанию

Начиная с SQL Server 2000 с пакетом обновления 3 (SP3) цепочки владения между базами данных отключены по умолчанию. Майкрософт рекомендует отключить межбазовые цепочки владения, так как с ними связаны следующие угрозы безопасности:

  • Владельцы баз данных и члены ролей базы данных db_ddladmin или db_owners могут создавать объекты, владельцами которых являются другие пользователи. Эти объекты потенциально могут обращаться к объектам в другой базе данных. Это значит, что при включенных межбазовых цепочках владения этим пользователям необходимо полностью доверять при доступе к данным во всех базах данных.

  • Пользователи с разрешением CREATE DATABASE могут создавать новые базы данных и присоединять существующие базы данных. Если межбазовые цепочки владения включены, то эти пользователи могут обращаться к объектам в других базах данных, в которых у них нет прав доступа, из вновь созданных или присоединенных баз данных, которые они создали.

Включение межбазовых цепочек владения

Межбазовые цепочки владения нужно включать только в среде с привилегированными пользователями, имеющими полный уровень доверия. Их можно настроить во время установки всех баз данных или выборочно для определенных баз данных с помощью команд Transact-SQL sp_configure и sp_dboption.

В SQL Server 2000 с пакетом обновления 3 (SP3) появился параметр Cross DB Ownership Chaining как средство повышения безопасности. С помощью него можно настроить межбазовые цепочки владения. Для выборочной настройки межбазовых цепочек владения в SQL Server 2005 и более поздних версий используется хранимая процедура sp_configure, с помощью которой эти цепочки отключаются для сервера. Затем с помощью команды ALTER DATABASE с параметром SET DB_CHAINING ON настраиваются межбазовые цепочки владения только в требуемых базах данных.

Динамический SQL

Межбазовые цепочки владения неприменимы в тех случаях, когда выполняются динамически созданные инструкции SQL, если только один и тот же пользователь не присутствует в обеих базах данных. Это можно обойти в SQL Server 2005, создав хранимую процедуру для доступа к данным другой базы данных и подписав эту процедуру сертификатом, существующим в обеих базах данных. Это предоставляет пользователям доступ к используемым процедурой ресурсам базы данных без предоставления им доступа к базе данных или разрешений на нее.

Внешние ресурсы

Дополнительные сведения см. в следующих ресурсах.

Ресурс

Описание

Расширение олицетворения базы данных с помощью инструкции EXECUTE AS и Cross DB Ownership Chaining Option в электронной документации по SQL Server 2008

Разделы описывают, как настроить межбазовые цепочки владения между базами данных для экземпляра Microsoft SQL Server 2008.

Расширение олицетворения базы данных с помощью инструкции EXECUTE AS и Cross DB Ownership Chaining Option в электронной документации по SQL Server 2005

Разделы описывают, как настроить межбазовые цепочки владения между базами данных для экземпляра Microsoft SQL Server 2005.

Cross DB Ownership Chaining в электронной документации по SQL Server 2000

Содержит описание настройки межбазовых цепочек владения с помощью параметров, введенных в SQL Server 2000 с пакетом обновления 3 (SP3).

См. также

Основные понятия

Управление разрешениями с помощью хранимых процедур в SQL Server (ADO.NET)

Написание защищенного динамического SQL-кода в SQL Server (ADO.NET)

Подписывание хранимых процедур в SQL Server (ADO.NET)

Другие ресурсы

Защита приложений ADO.NET

Общие сведения о безопасности SQL Server (ADO.NET)