Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
При создании управляемой хранимой процедуры или другого объекта управляемой базы данных существуют определенные проверки кода, выполняемые SQL Server, выполняют проверки на сборку управляемого кода при первой регистрации в базе данных с помощью CREATE ASSEMBLY
инструкции, а также во время выполнения. Управляемый код также проверяется во время выполнения, так как в сборке могут быть пути кода, которые никогда не могут быть достигнуты во время выполнения. Это обеспечивает гибкость для регистрации сторонних сборок, особенно чтобы сборка не была заблокирована, где существует небезопасный код, предназначенный для запуска в клиентской среде, но никогда не будет выполняться в размещенной среде CLR. Требования, которые должны соответствовать управляемому коду, зависят от того, зарегистрирована ли сборка как SAFE
, EXTERNAL_ACCESS
или UNSAFE
, SAFE
будучи самой строгой, и перечислены ниже.
Кроме ограничений, которые распространяются на сборки управляемого кода, им также предоставляются права доступа к коду. Среда CLR поддерживает модель безопасности, называемую безопасностью доступа к коду (CAS) для управляемого кода. В этой модели разрешения предоставляются сборкам на основе идентификатора кода. Сборки SAFE
, EXTERNAL_ACCESS
и UNSAFE
имеют различные разрешения CAS. Дополнительные сведения см. в статье CLR Integration Code Access Security.
Проверка сборки CREATE
При запуске инструкции CREATE ASSEMBLY
выполняются следующие проверки для каждого уровня безопасности. Если проверка завершается ошибкой, CREATE ASSEMBLY
сообщение об ошибке завершится ошибкой.
Глобальная проверка (любой уровень безопасности)
Все сборки, на которые имеются ссылки, должны удовлетворять одному или нескольким из следующих критериев.
Сборка уже зарегистрирована в базе данных.
Сборка принадлежит к числу поддерживаемых сборок. Дополнительные сведения см. в статье "Поддерживаемые библиотеки .NET Framework".
Вы используете
CREATE ASSEMBLY FROM
<расположение>, а все ссылки на них и их зависимости доступны в <расположении>.Вы используете
CREATE ASSEMBLY FROM
<байты ...>, и все ссылки указываются через разделенные пробелами байты.
EXTERNAL_ACCESS
Все сборки EXTERNAL_ACCESS
должны отвечать следующим требованиям.
Статические поля не используются для хранения информации. Допускаются статические поля только для чтения.
Тест PEVerify передается. Средство PEVerify (peverify.exe), которое проверяет, соответствует ли код MSIL и связанные метаданные требованиям безопасности типа, предоставляется пакетом SDK для .NET Framework.
Синхронизация, например с классом
SynchronizationAttribute
, не используется.Методы завершения не используются.
В сборках EXTERNAL_ACCESS
запрещено использовать следующие настраиваемые атрибуты.
System.ContextStaticAttribute
System.MTAThreadAttribute
System.Runtime.CompilerServices.MethodImplAttribute
System.Runtime.CompilerServices.CompilRelaxationsAttribute
System.Runtime.Remoting.Contexts.ContextAttribute
System.Runtime.Remoting.Contexts.SynchronizationAttribute
System.Runtime.InteropServices.DllImportAttribute
System.Security.Permissions.CodeAccessSecurityAttribute
System.Security.SuppressUnmanagedCodeSecurityAttribute
System.Security.UnverifiableCodeAttribute
System.STAThreadAttribute
System.ThreadStaticAttribute
БЕЗОПАСНЫЙ
- Проверяются все условия, относящиеся к сборкам
EXTERNAL_ACCESS
.
Проверки среды выполнения
Во время выполнения код сборки проверяется на соответствие ряду условий. Если обнаружены какие-либо из этих условий, управляемый код не будет разрешен для выполнения, и будет создано исключение.
ОПАСНЫЙ
Загрузка сборки явным образом путем вызова System.Reflection.Assembly.Load()
метода из массива Reflection.Emit
байтов или неявно путем использования пространства имен запрещена.
EXTERNAL_ACCESS
Проверяются все условия UNSAFE
.
Не допускаются все типы и методы, помеченные следующими значениями атрибутов защиты сервера в поддерживаемом списке сборок.
SelfAffectingProcessMgmt
SelfAffectingThreading
Синхронизация
SharedState
ExternalProcessMgmt
ExternalThreading
SecurityInfrastructure
MayLeakOnAbort
Пользовательский интерфейс
Дополнительные сведения о HPAs и списке запрещенных типов и членов в поддерживаемых сборках см. в разделе Атрибуты защиты узлов и программирование интеграции CLR.
БЕЗОПАСНЫЙ
Проверяются все условия EXTERNAL_ACCESS
.
См. также
Поддерживаемые библиотеки .NET Framework
Безопасность доступа к коду интеграции CLR
Атрибуты защиты узла и программирование интеграции СРЕДЫ CLR
Создание сборки