В практике разработки на платформе 1С:Предприятие 8 часто возникает ситуация, когда внешнему специалисту или аудитору необходимо предоставить доступ к конфигурации для анализа кода, проверки корректности переноса изменений или оценки архитектуры. При этом политика безопасности компании может строго запрещать внесение любых изменений в «живую» (продуктивную) базу.
Сложность заключается в том, что в стандартном Конфигураторе 1С не существует отдельной роли или флажка «Только просмотр метаданных». Если пользователь имеет право на вход в Конфигуратор и редактирование конфигурации, он технически может изменить любой объект. Разберем основные стратегии, которые позволяют обойти это ограничение и обеспечить безопасный аудит кода.
Это наиболее близкий к «штатному» способ реализации прав на чтение. Хранилище конфигурации — это специальный механизм для коллективной разработки, который имеет собственную систему прав доступа, отличную от прав пользователей в самой информационной базе.
Проанализируем алгоритм настройки такого доступа:
Хранилище конфигурации (если оно еще не создано) через меню Конфигурация — Хранилище конфигурации — Создать хранилище.Администрирование, Изменение состава хранилища, Захват объектов и Просмотр. Нам необходимо оставить только право «Просмотр».Рассмотрим, что это дает: разработчик сможет подключить свою локальную копию базы к этому хранилищу. Он будет видеть все изменения, внесенные другими сотрудниками, сможет открывать модули, формы и макеты. Однако при попытке нажать кнопку «Захватить в хранилище» система выдаст отказ. Таким образом, он сможет контролировать состояние кода в реальном времени, не имея физической возможности его изменить.
Если разработчику не требуется видеть изменения «в динамике» прямо в момент их внесения, самым простым и безопасным способом будет передача файла конфигурации.
Выясним, как организовать этот процесс правильно:
1Cv8.cf разработчику.В этом случае разработчик полностью изолирован от ваших данных и продуктивной среды. Если ему нужно проверить, правильно ли штатный специалист перенес его «изобретения», он может воспользоваться инструментом сравнения. Для этого он берет свой эталонный файл и сравнивает его с тем .cf, который вы выгрузили из рабочей базы после обновления.
Это современный и наиболее профессиональный подход, который полностью снимает вопрос доступа к «живой» базе. Мы переводим процесс разработки из классического конфигуратора в среду 1C:Enterprise Development Tools (EDT).
Рассмотрим шаги по реализации этого метода:
1C:EDT.Guest или Reporter.Проанализируем преимущества: разработчик получает доступ ко всему исходному коду через веб-интерфейс или среду разработки. Он видит историю коммитов (изменений), может сравнивать разные версии кода и видеть, кто именно из штатных сотрудников внес правки. При этом у него вообще нет доступа к серверу 1С, конфигуратору и, что самое главное, к персональным данным клиентов или финансовым показателям компании.
Если разработчик настаивает на просмотре метаданных именно в интерфейсе 1С, можно настроить автоматическое создание копии базы.
Разберем, как это автоматизировать:
Restore базы из бэкапа в тестовый контур.Таким образом, он видит актуальное состояние метаданных, но любые его действия в конфигураторе копии никак не аффектят рабочую базу.
В некоторых случаях достаточно предоставить только тексты модулей. Это можно сделать программно, не заходя в Конфигуратор. Рассмотрим пример кода, который позволяет получить текст модуля объекта программно (при наличии соответствующих прав доступа):
// Пример получения структуры метаданных
Для Каждого Справочник Из Метаданные.Справочники Цикл
Сообщить("Анализируем объект: " + Справочник.Имя);
// Для получения текста модуля можно использовать внешние инструменты выгрузки в XML
КонецЦикла;
Для массовой выгрузки лучше использовать штатную возможность платформы по выгрузке конфигурации в файлы XML. Это делается через командную строку:
v8.exe /DumpConfigToFiles "ПутьКПапке" /F "ПутьКБазе" /N "Логин" /P "Пароль"
После этого разработчику передается папка с текстовыми файлами. С помощью программ для сравнения текста (например, WinMerge) он сможет мгновенно увидеть все отличия своего кода от того, что сейчас находится в системе.
Необходимо понимать, почему опытные системные администраторы 1С сопротивляются предоставлению доступа в Конфигуратор даже в режиме «только чтение».
Главный риск — утечка данных. Даже если бы в 1С существовала роль «Только чтение метаданных», пользователь в Конфигураторе имеет доступ к инструментам отладки. Через окно Вычислить выражение или Табло в режиме отладки можно написать запрос к любой таблице базы данных и получить любые значения: остатки на счетах, пароли пользователей, персональные данные сотрудников.
Вывод: любой доступ в Конфигуратор живой базы технически равносилен доступу ко всем данным этой базы. Поэтому использование Хранилища на отдельном сервере или Git-репозитория является единственно верным решением с точки зрения безопасности информационной системы.