При прохождении регулярных проверок ИТ-аудиторами (в рамках стандартов ITGC, ISO 27001, требований Банка России или внешних аудиторских компаний) предприятия сталкиваются с жестким требованием принципа разделения обязанностей (Segregation of Duties, SoD). Аудиторы требуют полностью исключить возможность прямого внесения изменений в рабочую конфигурацию разработчиками и контролировать каждый релиз на предмет скрытых недокументированных функций и изменений кода.
В этой статье мы подробно разберем, почему данную проблему невозможно решить только штатными ролями Конфигуратора, как выстроить безопасный процесс доставки обновлений, как логировать изменения для аудиторов и какие регламенты необходимо утвердить на предприятии.
Проанализируем базовую проблему, с которой сталкиваются администраторы и разработчики при попытке гибко раздать права в среде 1С. В типовой ролевой модели платформы право на обновление конфигурации базы данных жестко связано с правом Администрирование. Если пользователю в дереве прав роли назначается доступ к интерактивному обновлению через Конфигуратор, он автоматически получает возможность:
Попытка передать процедуру обновления непрограммисту (например, системному администратору или главному бухгалтеру) через графический интерфейс Конфигуратора не решает проблему безопасности: человек с административными правами все равно может непреднамеренно применить сторонний файл или выполнить скрипт. Единственным надежным способом удовлетворить требования аудита является полное исключение человека из процесса интерактивного применения обновлений в продуктивной среде.
Рассмотрим, как организуется стандартный контур изолированной доставки обновлений, исключающий доступ разработчиков к рабочей базе данных. Процесс разделяется на три изолированные зоны:
ХранилищаКонфигурации или распределенной системы контроля версий. Доступа к боевым серверам и реальным базам у разработчиков нет..cf или .cfu).Разберем по шагам, как настроить автоматическое пакетное обновление базы данных без открытия Конфигуратора оператором. Для этого используется запуск 1С в командном режиме от имени выделенной сервисной учетной записи:
REM Пример скрипта обновления рабочей базы из командной строки
"C:\Program Files\1cv8\8.3.23.1865\bin\1cv8.exe" DESIGNER ^
/S "app-server\production_base" ^
/N "ServiceDeployBot" ^
/P "VeryStrongPasswordFromVault" ^
/DisableStartupMessages ^
/UpdateCfg "C:\Releases\release_1_2_3.cfu" ^
/UpdateDBCfg
Посмотрим, какие ключевые параметры используются в данном сценарии:
DESIGNER — запуск Конфигуратора в пакетном режиме./UpdateCfg — применение файла обновления конфигурации (.cf или .cfu)./UpdateDBCfg — реструктуризация и применение изменений к рабочей базе данных./DisableStartupMessages — подавление интерактивных всплывающих окон и предупреждений платформы.Учетные данные сервисного пользователя ServiceDeployBot генерируются автоматически и хранятся в защищенном хранилище секретов (например, HashiCorp Vault). Разработчики не имеют к ним доступа, что полностью закрывает замечание аудиторов о возможности несанкционированного прямого редактирования.
Проанализируем второе ключевое требование аудита: предоставление отчета о том, какие именно модули, строки кода и реквизиты метаданных изменились при установке конкретного обновления.
Попытка сравнивать резервные копии баз вручную неэффективна при регулярных аудитах. Оптимальным решением является выгрузка конфигурации в исходные тексты и интеграция с системой контроля версий (Git). Разберем, как автоматизировать этот процесс.
С помощью штатных механизмов платформы конфигурация раскладывается на иерархию текстовых файлов формата XML и файлов модулей BSL:
REM Выгрузка конфигурации базы в файлы исходного кода
"C:\Program Files\1cv8\8.3.23.1865\bin\1cv8.exe" DESIGNER ^
/S "app-server\production_base" ^
/N "ServiceDeployBot" ^
/P "VeryStrongPasswordFromVault" ^
/DumpConfigToFiles "C:\GitRepo\src" ^
/DisableStartupMessages
После выгрузки метаданных система CI/CD фиксирует состояние конфигурации с помощью системы контроля версий. Это позволяет сформировать для аудиторов отчет diff в наглядном текстовом формате:
Для программного контроля целостности файла поставки перед накатом на рабочую базу в пайплайне обязательно вычисляется контрольная сумма (хеш SHA-256). Робот на сервере развертывания сверяет полученный хеш с эталонным значением из паспорта релиза, что исключает подмену файла поставки в момент передачи между серверами.
Для предотвращения риска внедрения недокументированных возможностей и вредоносных алгоритмов аудиторы требуют подтверждения регулярного контроля исходного кода. Рассмотрим технические методы защиты:
Выполнить(), Вычислить() или запуск внешних процессов операционной системы через ЗапуститьПриложение().Любые технические инструменты должны быть подкреплены локальными нормативными актами компании. Согласуем с аудиторами следующий регламент прохождения релиза:
Такая сквозная схема гарантирует полную прозрачность изменений, исключает возможность бесконтрольного вмешательства разработчиков в рабочую среду и на 100% удовлетворяет требования ИТ-аудиторов.