Реализовано в версии 8.3.3.641.
Мы уделяем значительное внимание вопросам безопасности и стабильности работы 1С:Предприятия в режиме сервиса. Работа в этом режиме порождает задачи, которых не возникало раньше, когда решения 1С:Предприятия эксплуатировались собственно организацией-заказчиком. Если в результате неграмотного или сознательно вредоносного конфигурирования работа приложения приводила к проблемам, то это были проблемы только того субъекта, который эксплуатирует данное прикладное решение.
При работе в режиме сервиса эта ситуация выглядит уже по-другому. Поставщик сервиса, предоставляющий услуги пользования прикладными решениями через Интернет, может иметь дело не только с собственными разработками или с конфигурациями, разработанными фирмой «1С». Кроме этого он может предоставлять услуги пользования прикладными решениями, которые разработаны другими, сторонними поставщиками. И в этом случае владелец сервиса должен быть гарантирован от того, что прикладное решение стороннего поставщика, случайно или намеренно, может нарушить работу всего сервиса, работу других прикладных решений, опубликованных в сервисе.
Для решения этой задачи мы добавили в кластер серверов новую сущность – профили безопасности. Профиль безопасности служит для того, чтобы запретить прикладному решению выполнять действия, которые могут быть потенциально опасны для функционирования кластера серверов.
Администратор кластера может назначить любой информационной базе один из существующих в кластере профилей безопасности. И тогда потенциально опасная функциональность прикладного решения будет ограничена в тех пределах, которые описаны в этом профиле.
Стандартно, после создания, профиль безопасности запрещает выполнение всех потенциально опасных действий:
Это такие действия, как:
Таким образом защититься от нежелательных действий незнакомого прикладного решения очень просто: нужно создать пустой профиль безопасности и назначить его информационной базе.
Далее, если есть необходимость, можно расширять этот профиль, описывая в нём действия, которые разрешается выполнять прикладному решению.
Например, можно разрешить прикладному решению обращаться к некоторой области файловой системы сервера. Для этого нужно описать это разрешение в разделе Виртуальные каталоги:
При этом код прикладного решения будет оперировать логическим URL, но физически, на сервере, будет выполняться обращение к каталогу, указанному в свойстве Физический URL. При попытке прикладного решения обратиться по пути, отличному от логического URL, будет вызвано исключение.
Можно разрешить запуск и использование каких-либо COM-объектов, установленных на сервере. Например, приложения Microsoft Excel:
Для этого в разрешении нужно указать идентификатор COM-класса Excel.Application, установленного на сервере. Эту информацию можно получить из системного реестра Windows. Если прикладное решение попытается использовать другой COM-класс, будет вызвано исключение.
Кроме этого можно разрешить использование некоторых внешних компонентов 1С:Предприятия. Например, внешнего компонента Склонение ФИО:
В этом случае в разрешении нужно указать контрольную сумму файла этого внешнего компонента. Узнать её можно с помощью одной из утилит, доступных в Интернете, или написав небольшой фрагмент кода на встроенном языке 1С:Предприятия.
Чтобы разрешить работу с внешним отчётом или обработкой, в разрешении также нужно указать контрольную сумму файла этого отчёта/обработки:
Чтобы разрешить прикладному решению запуск приложения, установленного на сервере, нужно указать шаблон строки запуска этого приложения:
Так приведённый пример позволяет прикладному решению запускать на сервере Microsoft Office Word 2007, при этом в шаблоне строки запуска символ «%» означает произвольную последовательность символов.
И в заключение можно разрешить доступ прикладного решения к некоторым ресурсам Интернета:
Для этого нужно указать протокол, по которому будет осуществляться доступ, и адрес сайта.
Таким образом можно постепенно разрешать прикладному решению работу с необходимыми ресурсами, которые не нарушают требуемый уровень безопасности.
Может быть заранее известно, что, например, все внешние компоненты, с которыми работает прикладное решение, безопасны и не содержат вредоносного кода. В этом случае не нужно для каждого из них создавать отдельное разрешение. В свойствах профиля безопасности можно разрешить запуск любых внешних компонентов:
При этом не будет иметь значения, какие именно разрешения установлены в разделе Внешние компоненты.
Благодаря профилям безопасности теперь можно надёжно изолировать друг от друга информационные базы, работающие в режиме сервиса, а также изолировать друг от друга области одной и той же базы, работающей в режиме разделения данных. Кроме этого использование профилей в целом увеличивает надёжность кластера за счёт запрета потенциально опасных действий.
Ещё одним важным моментом, связанным с появлением профилей безопасности, является возможность расширить использование безопасного режима исполнения программного кода. Теперь для него можно разрешить некоторые действия, которые ранее были запрещены. Например, работу с временными файлами.