Администрирование · 11 мин
Как обойти безопасный режим в 1С
Как обойти безопасный режим в 1С при установке расширений: параметр DisableUnsafeActionProtection, роли, профили безопасности кластера и типичные ошибки.
Безопасный режим в 1С — это механизм, который ограничивает выполнение потенциально опасных операций: обращение к файловой системе, запуск внешних приложений, загрузку внешних компонент, работу с COM-объектами и интернетом. Платформа включает его автоматически при подключении расширений и внешних обработок, чтобы вредоносный код не получил доступ к серверу и данным.
На практике «обойти безопасный режим» требуется администраторам и разработчикам, когда проверенное расширение или внешняя обработка отказывается работать: печатная форма не сохраняет файл, обмен не может прочитать каталог, отчёт не подключается к веб-сервису. Задача — снять ограничение осознанно, только для доверенного кода, а не отключить защиту целиком.
Существует несколько легальных способов: флаг «Безопасный режим» при подключении расширения, роль «Режим «Все функции» / интерактивное открытие внешних отчетов», параметр DisableUnsafeActionProtection, профили безопасности кластера и программная установка режима в коде. Ниже разобраны все варианты с условиями применения и рисками.
Что именно ограничивает безопасный режим
В безопасном режиме платформа блокирует операции, которые могут повлиять на систему за пределами информационной базы. В список ограничений входят: доступ к файловой системе сервера и клиента, запуск COM-объектов и внешних приложений, загрузка внешних компонент, доступ к интернет-ресурсам, выполнение кода через Выполнить() и ОценитьВыражение() в ряде контекстов, а также операции с привилегированным режимом из расширений.
Признак того, что проблема именно в безопасном режиме: обработка работает при открытии через «Файл → Открыть» в толстом клиенте с полными правами, но падает с ошибкой при подключении как расширение или при выполнении регламентного задания. Типичные тексты ошибок — «Операция не допускается в безопасном режиме» или «Нарушение прав доступа» при обращении к файлу или COM-объекту.
Какая именно операция: файл, COM, интернет, внешняя компонента
Наличие у пользователя нужных ролей и права на расширение
Где подключён код: расширение или конфигурация
Снятие флага «Безопасный режим» при подключении расширения
Самый простой и правильный способ — при добавлении расширения в базу снять флаг «Безопасный режим» в диалоге подключения. Откройте «Все функции → Стандартные → Управление расширениями конфигурации» (или «Администрирование → Печатные формы, отчеты и обработки → Расширения» в типовых), добавьте файл расширения и в диалоге предупреждения снимите галочку «Безопасный режим». После этого код расширения сможет выполнять защищённые операции.
Условие: действие доступно только пользователю с правами администратора, а в файловой базе — при наличии права «Администрирование расширений конфигурации». Если флаг неактивен или расширение подключается централизованно через хранилище, изменить режим можно в свойствах расширения в списке — колонка «Безопасный режим» переключается интерактивно.
Программное отключение безопасного режима в коде
Если вы разрабатываете собственную обработку или дорабатываете конфигурацию, режим можно переключить программно методом УстановитьБезопасныйРежим(Ложь). Метод действует в пределах текущего вызова: после завершения вызова платформа автоматически восстанавливает прежнее состояние. Это позволяет открыть «окно» доступа только на время выполнения конкретной операции.
Также существуют функции БезопасныйРежим() — возвращает текущее состояние — и УстановитьБезопасныйРежимРазделенияДанных() для работы в SaaS. Важно: из расширения, подключённого в безопасном режиме, снять его программно нельзя — платформа проигнорирует вызов, потому что иначе защита теряла бы смысл. Программное отключение работает только из кода конфигурации или из расширения, уже подключённого без флага безопасного режима.
Если БезопасныйРежим() Тогда
УстановитьБезопасныйРежим(Ложь);
КонецЕсли;
// защищённая операция, например запись файла
УстановитьБезопасныйРежим(Истина);Параметр DisableUnsafeActionProtection
Параметр DisableUnsafeActionProtection отключает механизм защиты от опасных действий — тот самый диалог «Операция может быть опасной, продолжить?», который появляется при открытии внешних обработок, запуске приложений и обращении к файлам. Это не совсем «безопасный режим», но именно этот механизм чаще всего мешает пользователям при работе с внешними отчётами и обработками.
Параметр задаётся в файле conf.cfg (для всех баз на компьютере) или в параметре командной строки /DisableUnsafeActionProtection. Значение DisableUnsafeActionProtection=* отключает защиту для всех баз, DisableUnsafeActionProtection=ИмяБазы — только для указанной. Действует настройка на уровне клиентского приложения, а не сервера.
# conf.cfg в каталоге conf платформы
DisableUnsafeActionProtection=*Использовать этот параметр на рабочих местах рядовых пользователей не рекомендуется: диалог защиты — последний барьер перед запуском случайно открытого вредоносного файла .epf. Разумный сценарий — отключение на машине разработчика или в тестовом контуре.
Профили безопасности кластера серверов
На уровне сервера 1С:Предприятия действует более гранулярный механизм — профили безопасности. Администратор кластера создаёт профиль в консоли кластера и явно разрешает в нём конкретные операции: доступ к определённым каталогам файловой системы, запуск конкретных приложений, использование COM-объектов, внешних компонент, доступ к определённым интернет-ресурсам.
Профиль назначается информационной базе в свойствах базы в консоли кластера (поля «Профиль безопасности» и «Профиль безопасности безопасного режима»). Тогда даже код, исполняемый в безопасном режиме, получает доступ к разрешённым в профиле ресурсам. Это предпочтительный способ для серверных баз: защита сохраняется, но открываются только нужные «дырки» — например, каталог обмена с сайтом.
- 1Откройте консоль администрирования кластера и создайте профиль безопасности
- 2Разрешите в профиле только нужные операции: каталог, COM или интернет-ресурс
- 3Укажите профиль в свойствах информационной базы в поле «Профиль безопасности безопасного режима»
- 4Перезапустите регламентное задание или сеанс и проверьте выполнение операции
Роли и права: когда проблема не в режиме, а в доступе
Частая ситуация: внешняя обработка не запускается у пользователя, и все списывают это на безопасный режим, хотя причина в ролях. Для интерактивного открытия внешних отчётов и обработок пользователю нужна роль «Интерактивное открытие внешних отчетов и обработок» (в типовых конфигурациях на БСП) либо право «Интерактивное открытие внешних обработок» в конфигураторе.
Проверьте последовательно: есть ли у пользователя право на открытие внешних файлов, включён ли в базе механизм «Дополнительные отчеты и обработки», не заблокировано ли выполнение в профиле группы доступа. Только после исключения этих причин имеет смысл менять настройки безопасного режима.
Как выбрать действие
Типичные ошибки и проверка результата
Самая распространённая ошибка — глобальное отключение защиты вместо точечного разрешения. Администратор прописывает DisableUnsafeActionProtection=* на всех рабочих местах или снимает безопасный режим со всех расширений подряд, и через месяц база заражена через обработку, принесённую «на флешке». Вторая ошибка — попытка программно снять безопасный режим из расширения, которое само подключено в безопасном режиме: вызов молча игнорируется, и диагностика затягивается.
После любых изменений проверяйте результат именно в том контексте, где была проблема: если падало регламентное задание — запустите его принудительно и посмотрите журнал регистрации, если не открывалась обработка у пользователя — проверьте под его учётной записью, а не под администратором.
Как проверить результат
Операция выполняется без ошибки «не допускается в безопасном режиме»
Ошибка повторяется — режим не снят или действует профиль кластера
Нет записей об отказе в доступе при выполнении операции
Ошибки доступа продолжаются — проверьте роли и профили
У доверенного расширения флаг «Безопасный режим» снят, у остальных — установлен
Режим снят у всех расширений подряд
Частые вопросы
Что важно запомнить
Безопасный режим снимают точечно: флагом у конкретного расширения, профилем безопасности кластера или программно в доверенном коде. Глобальное отключение защиты — крайняя мера только для тестовых контуров.
Можно ли полностью отключить безопасный режим на весь сервер?
Штатного глобального выключателя безопасного режима нет — это осознанное решение разработчиков платформы. Можно назначить базе профиль безопасности с широкими разрешениями, что фактически нейтрализует ограничения, но делать это в продуктивной базе не рекомендуется.
Почему УстановитьБезопасныйРежим(Ложь) не срабатывает в расширении?
Потому что расширение подключено с флагом «Безопасный режим»: платформа не позволяет коду самостоятельно снять ограничение, наложенное администратором. Снимите флаг в списке расширений или используйте профиль безопасности кластера.
Чем безопасный режим отличается от защиты от опасных действий?
Безопасный режим — программное ограничение на выполнение операций для кода расширений и внешних обработок. Защита от опасных действий — интерактивный диалог-предупреждение пользователя при потенциально рискованных операциях. Это два независимых механизма, отключаются они по-разному.
Опасно ли снимать безопасный режим с расширения от фирмы «1С»?
Расширения из официальных источников и из состава типовых конфигураций, как правило, проверены, и снятие режима для них — штатная практика, если того требует функциональность. Тем не менее перед применением в продуктивной базе расширение стоит испытать на копии.
Работает ли DisableUnsafeActionProtection в веб-клиенте?
Параметр действует на клиентское приложение, поэтому в веб-клиенте его влияние ограничено: многие опасные операции там в принципе недоступны из-за ограничений браузера. Основное применение параметра — толстый и тонкий клиенты.
Как узнать, в каком режиме выполняется код прямо сейчас?
Вызовите функцию БезопасныйРежим() — она вернёт Истина, если ограничения активны. Для диагностики удобно временно вывести это значение в сообщение или журнал регистрации в начале проблемной процедуры.