Конфигурация сервера: clr strict security

Область применения:SQL Server

Определяет интерпретацию разрешения SAFE, EXTERNAL_ACCESS или UNSAFE в SQL Server. Дополнительные сведения об этих разрешениях см. в разделе Проектирование сборок.

значение Описание
0 Нетрудоспособный. Предусмотрено для обеспечения обратной совместимости. Установка этого значения 0 не рекомендуется, так как она может создать уязвимость безопасности.
1 Включен. Заставляет ядро СУБД игнорировать информацию PERMISSION_SET о сборках и всегда интерпретировать их как UNSAFE. В SQL Server 2017 (14.x) и более поздних версиях 1 используется значение по умолчанию.

Безопасность доступа к коду больше не поддерживается

CLR использует в .NET Framework механизм безопасности доступа кода (CAS), который больше не поддерживается в качестве границы безопасности. Сборка CLR, созданная с PERMISSION_SET = SAFE, может получить доступ к внешним системным ресурсам, вызывать неуправляемый код и получить привилегии sysadmin. В SQL Server 2017 (14.x) и более поздних версиях clr strict security рассматривает сборки SAFE и EXTERNAL_ACCESS так, как если бы они были помечены UNSAFE.

Мы рекомендуем подписывать все сборки с помощью сертификата или асимметричного ключа, с соответствующим именем входа, которому было предоставлено разрешение UNSAFE ASSEMBLY в базе данных master. Администраторы SQL Server также могут добавлять сборки в список сборок, которым должен доверять ядро СУБД. Дополнительные сведения см. в разделе sys.sp_add_trusted_assembly.

Замечания

Если параметр PERMISSION_SET включен, операторы CREATE ASSEMBLY и ALTER ASSEMBLY игнорируются во время выполнения, а параметры PERMISSION_SET сохраняются в метаданных. Игнорирование этого параметра сводит к минимуму риск нарушения работы существующих инструкций кода.

CLR strict security — это advanced option.

После включения строгой безопасности все сборки, которые не подписаны, не загружались. Необходимо изменить либо удалить и создать заново каждую сборку так, чтобы она была подписана сертификатом или асимметричным ключом, для которого существует соответствующая учетная запись входа с разрешением UNSAFE ASSEMBLY на сервере.

Разрешения

Изменение этого параметра

Требуется разрешение CONTROL SERVER или членство в предопределенной роли сервера sysadmin.

Создать сборку CLR

Следующие разрешения необходимы для создания сборки CLR, когда CLR strict security включена:

  • Пользователь должен иметь разрешение CREATE ASSEMBLY.

  • Одно из следующих условий также должно выполняться:

    • Сборка подписана сертификатом или асимметричным ключом, которому соответствует учетная запись для входа, которой предоставлено разрешение UNSAFE ASSEMBLY на сервере. Рекомендуется подписывать сборку.

    • Для базы данных задано свойство TRUSTWORTHY со значением ON, и база данных принадлежит имени входа, имеющему разрешение UNSAFE ASSEMBLY на сервере. Этот параметр использовать не рекомендуется.

Примеры

В следующем примере сначала отображается текущее значение параметра clr strict security, а затем этому параметру задаётся значение 1 (включено).

EXECUTE sp_configure 'clr strict security';
GO

EXECUTE sp_configure 'clr strict security', '1';
RECONFIGURE;
GO