Ошибка запуска SCCM PERMISSION_SET = EXTERNAL_ACCESS or UNSAFE

Обновлено 06.04.2022

sccm logo

Добрый день! Уважаемые читатели и гости одного из крупнейших IT блогов в рунете Pyatilistnik.org. В прошлый раз мы с вами научились намеренно запрещать скачивание и установку обновлений Windows, делали это исходя из-за возможных последствий со стороны Microsoft, хотя это конечно не правильно со стороны безопасности. В сегодняшней статье я хочу с вами поделиться опытом устранения проблем при запуске SCCM, после переноса SQL базы в период обслуживания, ошибка звучит вот так PERMISSION_SET = EXTERNAL_ACCESS or UNSAFE, которая заполняла все логи. Давайте разбираться в чем было дело.

Описание ошибки PERMISSION_SET = EXTERNAL_ACCESS or UNSAFE

Появилась задача перенести базы данных SCCM с одного диска на другой, крутятся они на MS SQL 2016, сам инстанс должен был остаться тот же, дело тривиальное. Перед работой с БД, я погасил виртуальную машину с SCCM. База успешно была перенесена, я сразу запустил виртуальную машину и естественно полез проверять работу System Center Configuration Manager.

Для этого я попытался запустить консоль Configuration Manager, но долго шло соединение с сайтом и в итоге появилась ошибка.

Подключение к базе данных сайта

Консоли Configuration Manager не удалось подключиться к базе данных сайта Configuration Manager. Проверьте следующее:

• наличие сетевого подключения этого компьютера к компьютеру поставщика SMS;
• наличие для учетной записи пользователя разрешения на удаленную активацию на сервере сайта Configuration Manager и на компьютере поставщика SMS;
• поддерживает ли сервер сайта версию консоли Configuration Manager;
• назначена ли вам хотя бы одна роль безопасности администрирования на основе ролей;
• наличие следующих разрешений WMI для пространств имен Root\SMS и Root\SMS\site_<site code>: "Выполнение методов", "Запись поставщика", "Включение учетной записи" и "Включение удаленного доступа".

Консоли Configuration Manager не удалось подключиться

Явно было понятно, что System Center Configuration Manager не работает и есть проблемы с подключением к БД.

Устранение ошибки PERMISSION_SET = EXTERNAL_ACCESS or UNSAFE

Первое, что вы всегда должны делать, это смотреть логи со стороны SCCM и так же со стороны SQL Server. Для просмотра журналов событий System Center Configuration Manager используется утилита CMtrace. Напоминаю, что на сервере вы можете обнаружить файлы журналов событий по пути:

C:\Program Files\Microsoft Configuration Manager\Logs

Журналы просто были забиты ошибками соединения.

System.Data.SqlClient.SqlException (0x80131904): An error occurred in the Microsoft .NET Framework while trying to load assembly id 65548. The server may be running out of resources, or the assembly may not be trusted with PERMISSION_SET = EXTERNAL_ACCESS or UNSAFE. Run the query again, or check documentation to see how to solve the assembly trust issues. For more information about this error:
System.IO.FileLoadException: Could not load file or assembly 'cryptoutility, Version=5.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' or one of its dependencies. An error relating to security occurred. (Exception from HRESULT: 0x8013150A)
System.IO.FileLoadException:
at System.Reflection.RuntimeAssembly._nLoad(AssemblyName fileName, String codeBase, Evidence assemblySecurity, RuntimeAssembly locationHint, StackCrawlMark& stackMark, IntPtr pPrivHostBinder, Boolean throwOnFileNotFound, Boolean forIntrospection, Boolean suppressSecurityChecks)

PERMISSION_SET = EXTERNAL_ACCESS or UNSAFE

Со стороны SQL Server так же были ошибки:

Error 10314 Severity 16 State 11

Error 10314 Severity 16 State 11 PERMISSION_SET = EXTERNAL_ACCESS or UNSAFE

Как выяснилось у SCCM не хватало прав, была включена CLR, поэтому для нее установлено разрешение external_access или unsafe из базы данных. Для нужной БД выполните:


USE [DatabaseName]
GO
EXEC sp_changedbowner 'sa'

ALTER DATABASE [DatabaseName] SET TRUSTWORTHY ON;

свойство базы данных TRUSTWORTHY

После этих манипуляций все отлично заработало.

Что такое свойство базы данных TRUSTWORTHY

Свойство TRUSTWORTHY используется для указания того, доверяет ли экземпляр SQL Server базе данных и ее содержимому. По умолчанию это свойство имеет значение OFF, но его можно установить в ON при помощи инструкции ALTER DATABASE. Это свойство позволяет уменьшить уязвимость системы перед рядом угроз, связанных с присоединением базы данных.

Подробнее - https://docs.microsoft.com/ru-ru/sql/relational-databases/security/trustworthy-database-property?utm_source=pocket_mylist&view=sql-server-ver15

Автор - Сёмин Иван

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *