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


Атрибуты защиты узла и программирование средств интеграции со средой CLR

Среда CLR предоставляет механизм для аннотирования управляемых API, входящих в состав платформы .NET Framework, при помощи определенных атрибутов, которые могут потребоваться серверу CLR (такому как SQL Server), начиная с версии SQL Server 2005. Примеры таких атрибутов защиты сервера включают следующее:

  • SharedState, который указывает, предоставляет ли API доступ к средствам создания или управления общим состоянием (например, к полям статического класса).

  • Synchronization, который указывает, предоставляет ли API возможность выполнять синхронизацию потоков.

  • ExternalProcessMgmt, который указывает, предоставляет ли API способ управления процессом узла.

C учетом этих атрибутов SQL Server при помощи управления доступом для кода определяет список атрибутов защиты сервера, которые запрещены в размещенной среде. Для определения требований управления доступом для кода применяется один из трех наборов разрешений SQL Server: SAFE, EXTERNAL_ACCESS или UNSAFE. Один из этих трех уровней безопасности задается с помощью инструкции CREATE ASSEMBLY при регистрации сборки на сервере. В коде, выполняющемся с наборами разрешений SAFE или EXTERNAL_ACCESS, необходимо избегать использования элементов определенных типов, к которым применен атрибут System.Security.Permissions.HostProtectionAttribute. Дополнительные сведения см. в разделах Создание сборки и Ограничения модели программирования на основе интеграции со средой CLR.

Атрибут HostProtectionAttribute представляет собой скорее не право доступа, а способ повышения надежности, поскольку он определяет конкретные конструкции в коде (типы или методы), которые могут быть запрещены сервером. В результате применения атрибута HostProtectionAttribute в действие вводится модель программирования, которая позволяет защитить стабильность сервера.

Атрибуты защиты сервера

Атрибуты защиты сервера определяют типы или элементы, которые не подходят для серверной модели программирования и представляют следующие возрастающие уровни угрозы надежности:

  • Во всем остальном являются безопасными.

  • Могут привести к дестабилизации управляемого сервером кода пользователя.

  • Могут привести к дестабилизации самого процесса сервера.

SQL Server не допускает использования типов и элементов, имеющих атрибут HostProtectionAttribute, который задает перечисление System.Security.Permissions.HostProtectionResource со значением ExternalProcessMgmt, ExternalThreading, MayLeakOnAbort, SecurityInfrastructure, SelfAffectingProcessMgmnt, SelfAffectingThreading, SharedState, Synchronization или UI. В силу этого сборки утрачивают возможность вызывать элементы, которые включают общее состояние, выполняют синхронизацию, могут вызвать утечку ресурсов при завершении или повлиять на целостность процесса SQL Server.

Запрещенные типы и элементы

В следующих разделах приведены типы и элементы, значения HostProtectionResource которых запрещены в SQL Server.

ПримечаниеПримечание

Списки в этих разделах были получены из сборок, поддерживаемых платформой .NET Framework версии 2.0 с пакетом обновления 1 (SP1). Дополнительные сведения см. в разделе Поддерживаемые библиотеки платформы .NET Framework.

В этом разделе