Как предоставить разработчику 1С доступ к метаданным в режиме «Только чтение»

Программист 1С v8.3 (Управляемые формы) IT и автоматизация бизнеса
← На главную

В практике разработки на платформе 1С:Предприятие 8 часто возникает ситуация, когда внешнему специалисту или аудитору необходимо предоставить доступ к конфигурации для анализа кода, проверки корректности переноса изменений или оценки архитектуры. При этом политика безопасности компании может строго запрещать внесение любых изменений в «живую» (продуктивную) базу.

Сложность заключается в том, что в стандартном Конфигураторе 1С не существует отдельной роли или флажка «Только просмотр метаданных». Если пользователь имеет право на вход в Конфигуратор и редактирование конфигурации, он технически может изменить любой объект. Разберем основные стратегии, которые позволяют обойти это ограничение и обеспечить безопасный аудит кода.

Вариант 1. Использование Хранилища конфигурации

Это наиболее близкий к «штатному» способ реализации прав на чтение. Хранилище конфигурации — это специальный механизм для коллективной разработки, который имеет собственную систему прав доступа, отличную от прав пользователей в самой информационной базе.

Проанализируем алгоритм настройки такого доступа:

  1. Создадим Хранилище конфигурации (если оно еще не создано) через меню Конфигурация — Хранилище конфигурации — Создать хранилище.
  2. В административной панели хранилища создадим нового пользователя для внешнего разработчика.
  3. Установим этому пользователю минимальный набор прав. В 1С предусмотрены права: Администрирование, Изменение состава хранилища, Захват объектов и Просмотр. Нам необходимо оставить только право «Просмотр».

Рассмотрим, что это дает: разработчик сможет подключить свою локальную копию базы к этому хранилищу. Он будет видеть все изменения, внесенные другими сотрудниками, сможет открывать модули, формы и макеты. Однако при попытке нажать кнопку «Захватить в хранилище» система выдаст отказ. Таким образом, он сможет контролировать состояние кода в реальном времени, не имея физической возможности его изменить.

Вариант 2. Выгрузка файла конфигурации (CF)

Если разработчику не требуется видеть изменения «в динамике» прямо в момент их внесения, самым простым и безопасным способом будет передача файла конфигурации.

Выясним, как организовать этот процесс правильно:

  1. В рабочей базе выполним команду Конфигурация — Сохранить конфигурацию в файл....
  2. Передадим полученный файл 1Cv8.cf разработчику.
  3. Разработчик разворачивает у себя пустую базу и выполняет Конфигурация — Загрузить конфигурацию из файла....

В этом случае разработчик полностью изолирован от ваших данных и продуктивной среды. Если ему нужно проверить, правильно ли штатный специалист перенес его «изобретения», он может воспользоваться инструментом сравнения. Для этого он берет свой эталонный файл и сравнивает его с тем .cf, который вы выгрузили из рабочей базы после обновления.

Вариант 3. Использование 1C:EDT и систем контроля версий (Git)

Это современный и наиболее профессиональный подход, который полностью снимает вопрос доступа к «живой» базе. Мы переводим процесс разработки из классического конфигуратора в среду 1C:Enterprise Development Tools (EDT).

Рассмотрим шаги по реализации этого метода:

  1. Конфигурация выгружается в проект 1C:EDT.
  2. Проект помещается в Git-репозиторий (например, GitLab или Bitbucket).
  3. Внешнему разработчику предоставляются права доступа к репозиторию в режиме Guest или Reporter.

Проанализируем преимущества: разработчик получает доступ ко всему исходному коду через веб-интерфейс или среду разработки. Он видит историю коммитов (изменений), может сравнивать разные версии кода и видеть, кто именно из штатных сотрудников внес правки. При этом у него вообще нет доступа к серверу 1С, конфигуратору и, что самое главное, к персональным данным клиентов или финансовым показателям компании.

Вариант 4. Создание «зеркальной» копии для аудита

Если разработчик настаивает на просмотре метаданных именно в интерфейсе 1С, можно настроить автоматическое создание копии базы.

Разберем, как это автоматизировать:

  1. Настроим регламентное задание на уровне SQL-сервера или скриптов ОС, которое каждую ночь делает Restore базы из бэкапа в тестовый контур.
  2. В этой копии базы удалим все конфиденциальные данные (обезличим базу) или просто ограничим права пользователя 1С.
  3. Предоставим разработчику права администратора (для доступа в Конфигуратор) именно в этой копии.

Таким образом, он видит актуальное состояние метаданных, но любые его действия в конфигураторе копии никак не аффектят рабочую базу.

Вариант 5. Программная выгрузка модулей для ознакомления

В некоторых случаях достаточно предоставить только тексты модулей. Это можно сделать программно, не заходя в Конфигуратор. Рассмотрим пример кода, который позволяет получить текст модуля объекта программно (при наличии соответствующих прав доступа):


// Пример получения структуры метаданных
Для Каждого Справочник Из Метаданные.Справочники Цикл
    Сообщить("Анализируем объект: " + Справочник.Имя);
    // Для получения текста модуля можно использовать внешние инструменты выгрузки в XML
КонецЦикла;

Для массовой выгрузки лучше использовать штатную возможность платформы по выгрузке конфигурации в файлы XML. Это делается через командную строку:

v8.exe /DumpConfigToFiles "ПутьКПапке" /F "ПутьКБазе" /N "Логин" /P "Пароль"

После этого разработчику передается папка с текстовыми файлами. С помощью программ для сравнения текста (например, WinMerge) он сможет мгновенно увидеть все отличия своего кода от того, что сейчас находится в системе.

Важные риски: почему нельзя пускать в Конфигуратор «просто посмотреть»

Необходимо понимать, почему опытные системные администраторы 1С сопротивляются предоставлению доступа в Конфигуратор даже в режиме «только чтение».

Главный риск — утечка данных. Даже если бы в 1С существовала роль «Только чтение метаданных», пользователь в Конфигураторе имеет доступ к инструментам отладки. Через окно Вычислить выражение или Табло в режиме отладки можно написать запрос к любой таблице базы данных и получить любые значения: остатки на счетах, пароли пользователей, персональные данные сотрудников.

Вывод: любой доступ в Конфигуратор живой базы технически равносилен доступу ко всем данным этой базы. Поэтому использование Хранилища на отдельном сервере или Git-репозитория является единственно верным решением с точки зрения безопасности информационной системы.

← На главную