Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Среда CLR поддерживает модель безопасности, называемую управлением доступом для кода. В этой модели разрешения предоставляются сборкам на основе идентификатора кода. Дополнительные сведения см. в разделе "Безопасность доступа к коду" в пакете средств разработки программного обеспечения .NET Framework.
Политика безопасности, которая регламентирует разрешения, предоставляемые сборкам, определяется в трех разных местах.
Политика компьютера: это политика, которая действует для всего управляемого кода, работающего на компьютере, на котором установлен SQL Server.
Политика пользователя: это политика, действимая для управляемого кода, размещенного процессом. Для службы SQL Server выполняется.
Политика узла: это политика, настроенная узлом среды CLR (в данном случае SQL Server), которая действует для управляемого кода, работающего в этом узле.
Механизм управления доступом к коду, поддерживаемый средой CLR, основан на предположении, что в среде времени выполнения может размещаться код, доверенный полностью или частично. Ресурсы, защищенные безопасностью доступа к коду CLR, обычно упаковываются с помощью интерфейсов программирования управляемых приложений, требующих соответствующего разрешения, прежде чем разрешать доступ к ресурсу. Запрос на разрешение удовлетворяется только в том случае, если все вызывающие (на уровне сборки) в стеке вызовов имеют соответствующее разрешение ресурса.
Набор разрешений безопасности доступа к коду, предоставляемых управляемому коду при запуске в SQL Server, предоставляет набор разрешений для сборки, загруженной в SQL Server, конечный набор разрешений, предоставленных пользовательскому коду, может быть ограничен политиками уровня пользователя и компьютера.
Наборы разрешений уровня политики узла SQL Server
Набор разрешений безопасности доступа к коду, предоставленных сборкам уровня политики узла SQL Server, определяется набором разрешений, указанным при создании сборки. Существует три набора разрешений: SAFE
EXTERNAL_ACCESS
и UNSAFE
(указано с помощью параметра PERMISSION_SETCREATE ASSEMBLY (Transact-SQL)).
SQL Server. Эта политика не предназначена для домена приложения по умолчанию, который будет применяться при создании экземпляра СРЕДЫ CLR SQL Server.
Фиксированная политика SQL Server для системных сборок и определяемой пользователем политики для пользовательских сборок.
Исправленная политика для сборок СРЕДЫ CLR и системных сборок SQL Server предоставляет им полное доверие.
Указанная пользователем часть политики узла SQL Server основана на владельце сборки, указывающей один из трех контейнеров разрешений для каждой сборки. Дополнительные сведения о разрешениях безопасности, перечисленных ниже, см. в пакете SDK для .NET Framework.
БЕЗОПАСНЫЙ
Разрешаются только внутренние вычисления и локальный доступ к данным.
SAFE
является самым строгим набором разрешений. Код, выполняемый сборкой с SAFE
разрешениями, не может получить доступ к ресурсам внешней системы, таким как файлы, сети, переменные среды или реестр.
SAFE
сборки имеют следующие разрешения и значения:
Разрешение | Value(s)/Description |
---|---|
SecurityPermission |
Execution: Разрешение на выполнение управляемого кода. |
SqlClientPermission |
Context connection = true , context connection = yes : можно использовать только контекст-соединение, и строка подключения может указывать только значение context connection=true или context connection=yes.AllowBlankPassword = false: Пустые пароли не разрешены. |
EXTERNAL_ACCESS
EXTERNAL_ACCESS сборки имеют те же разрешения, что SAFE
и сборки, с дополнительной возможностью доступа к внешним ресурсам системы, таким как файлы, сети, переменные среды и реестр.
EXTERNAL_ACCESS
сборки также имеют следующие разрешения и значения:
Разрешение | Value(s)/Description |
---|---|
DistributedTransactionPermission |
Unrestricted: Разрешены распределенные транзакции. |
DNSPermission |
Unrestricted: Разрешение на запрос сведений с серверов доменных имен. |
EnvironmentPermission |
Unrestricted: Разрешен полный доступ к переменным системы и пользовательской среды. |
EventLogPermission |
Administer: Разрешены следующие действия: создание источника событий, чтение существующих журналов, удаление источников событий или журналов, реагирование на записи, очистка журнала событий, прослушивание событий и доступ к коллекции всех журналов событий. |
FileIOPermission |
Unrestricted: Разрешен полный доступ к файлам и папкам. |
KeyContainerPermission |
Unrestricted: Разрешен полный доступ к контейнерам ключей. |
NetworkInformationPermission |
Access: Разрешено определение pinging. |
RegistryPermission |
Позволяет HKEY_CLASSES_ROOT , HKEY_LOCAL_MACHINE , HKEY_CURRENT_USER , HKEY_CURRENT_CONFIG и HKEY_USERS. |
SecurityPermission |
Assertion: Возможность утверждать, что все вызывающие данные кода имеют необходимые разрешения для операции.ControlPrincipal: Возможность управления основным объектом.Execution: Разрешение на выполнение управляемого кода.SerializationFormatter: Возможность предоставления служб сериализации. |
SmtpPermission |
Access: Разрешены исходящие подключения к порту узла SMTP 25. |
SocketPermission |
Connect: Разрешены исходящие подключения (все порты, все протоколы) на адресе транспорта. |
SqlClientPermission |
Unrestricted: Разрешен полный доступ к источнику данных. |
StorePermission |
Unrestricted: Разрешен полный доступ к хранилищам сертификатов X.509. |
WebPermission |
Connect: Разрешены исходящие подключения к веб-ресурсам. |
ОПАСНЫЙ
UNSAFE позволяет сборкам неограниченный доступ к ресурсам как внутри, так и за пределами SQL Server. Код, выполняемый из UNSAFE
сборки, также может вызывать неуправляемый код.
UNSAFE
сборки предоставляются FullTrust
.
Это важно
SAFE
— это рекомендуемый параметр разрешения для сборок, выполняющих задачи вычисления и управления данными без доступа к ресурсам за пределами SQL Server.
EXTERNAL_ACCESS
Сборки по умолчанию выполняются как учетная запись службы SQL Server, разрешение на выполнение EXTERNAL_ACCESS
должно быть предоставлено только именам входа, доверенным для запуска от имени учетной записи службы. С точки зрения безопасности EXTERNAL_ACCESS
и UNSAFE
сборки идентичны.
EXTERNAL_ACCESS
Однако сборки обеспечивают различные защиты надежности и надежности, которые не находятся в UNSAFE
сборках. Указание UNSAFE
позволяет коду в сборке выполнять незаконные операции с SQL Server. Дополнительные сведения о создании сборок СРЕДЫ CLR в SQL Server см. в разделе "Управление сборками интеграции CLR".
Доступ к внешним ресурсам
Если определяемый пользователем тип (UDT), хранимая процедура или другая сборка конструктора зарегистрирована в наборе разрешений SAFE
, то управляемый код, выполняемый в конструкции, не может получить доступ к внешним ресурсам. Однако если заданы EXTERNAL_ACCESS
или UNSAFE
наборы разрешений, а управляемый код пытается получить доступ к внешним ресурсам, SQL Server применяет следующие правила:
Если | Затем |
---|---|
Контекст выполнения соответствует имени входа SQL Server. | Попытки получить доступ к внешним ресурсам отклоняются, и активизируется исключение безопасности. |
Контекст выполнения соответствует имени входа Windows, и контекстом выполнения является первоначальный вызывающий объект. | Доступ к внешнему ресурсу осуществляется в контексте безопасности учетной записи службы SQL Server. |
Вызывающий объект не является исходным вызывающим элементом. | Доступ запрещается, и активизируется исключение безопасности. |
Контекст выполнения соответствует имени входа Windows, а контекст выполнения — исходный вызывающий объект, и вызывающий объект олицетворен. | Access использует контекст безопасности вызывающего объекта; не учетная запись службы. |
Сводка набора разрешений
На следующей диаграмме перечислены ограничения и разрешения, предоставленные SAFE
, EXTERNAL_ACCESS
и наборы разрешений UNSAFE
.
SAFE |
EXTERNAL_ACCESS |
UNSAFE |
|
Code Access Security Permissions |
Только выполнение | Выполнение и доступ к внешним ресурсам | Неограниченное (включая P/Invoke) |
Programming model restrictions |
Да | Да | Ограничения отсутствуют |
Verifiability requirement |
Да | Да | нет |
Local data access |
Да | Да | Да |
Ability to call native code |
нет | нет | Да |
См. также
Безопасность интеграции со средой CLR
Атрибуты защиты узла и программирование интеграции СРЕДЫ CLR
Ограничения модели программирования интеграции СРЕДЫ CLR
Среда, размещенная в среде CLR