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


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

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

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

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

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

Учитывая эти атрибуты, SQL Server указывает список hpAs, которые запрещены в размещенной среде с помощью безопасности доступа к коду (CAS). Требования CAS задаются одним из трех 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.

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

Запрещенные типы и элементы в Microsoft.VisualBasic.dll
Приведены типы и элементы из файла Microsoft.VisualBasic.dll, для которых запрещены значения атрибутов защиты сервера.

Недопустимые типы и элементы в библиотеке mscorlib.dll
Приведены типы и элементы из файла mscorlib.dll, для которых запрещены значения атрибутов защиты сервера.

Запрещенные типы и элементы в System.dll
Приведены типы и элементы из файла System.dll, для которых запрещены значения атрибутов защиты сервера.

Недопустимые типы и элементы в библиотеке System.Data.dll
Приведены типы и элементы из файла System.Data.dll, для которых запрещены значения атрибутов защиты сервера.

Недопустимые типы и элементы в библиотеке System.Core.dll
Приведены типы и элементы из файла System.Core.dll, для которых запрещены значения атрибутов защиты сервера.

См. также:

Управление доступом для кода на основе интеграции со средой CLR
Ограничения модели программирования на основе интеграции со средой CLR
Создание сборки