К статье
Практический материал

Администрирование · 11 мин

Где 1С хранит пароли в базе SQL и что с этим делать администратору

Где 1С хранит пароли в SQL-базе: таблица Params, хеши вместо открытых паролей, как проверить структуру и почему восстановить пароль из базы нельзя.

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

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

Ниже разобрано, как именно устроено хранение, что реально можно увидеть в SQL Management Studio, какие легальные способы сброса пароля существуют и где проходит граница между допустимым администрированием и повреждением данных.

Как 1С хранит данные о пользователях в SQL-базе

В клиент-серверном варианте работы (MS SQL Server, PostgreSQL, Oracle, IBM DB2) платформа создаёт набор служебных таблиц. Среди них есть таблица Params — универсальное хранилище параметров информационной базы. Именно туда платформа сериализует список пользователей: для каждого сохраняется имя, полное имя, хеш пароля, признаки аутентификации (парольная, аутентификация ОС), роли и прочие настройки.

Данные внутри Params лежат в полях типа image/varbinary в собственном бинарном формате платформы. Открыв таблицу в SQL Server Management Studio, вы увидите строки с именами параметров (например, блок, отвечающий за пользователей, часто содержит идентификатор со словом users) и нечитаемое бинарное содержимое. Никакой колонки «Password» с понятным значением там нет.

Отдельно стоит различать пароли пользователей информационной базы и пароли доступа к самой СУБД. Учётная запись, под которой сервер 1С подключается к SQL Server (например, sqladmin или доменная учётка), хранится в настройках сервера 1С и в конфигурации самой СУБД — к таблице Params она отношения не имеет.

Почему пароль нельзя «вытащить» запросом

Даже если вы получите полный доступ к базе на уровне СУБД и выгрузите содержимое Params, восстановить пароль из хеша напрямую не получится. Хеширование — односторонняя операция: платформа проверяет пароль, вычисляя хеш от введённого значения и сравнивая его с хранимым, а не расшифровывая сохранённое.

Теоретически хеш можно подобрать перебором, если пароль слабый (короткий, словарный). На практике это означает не «чтение пароля из базы», а взлом — со всеми юридическими последствиями, если база чужая. Для собственной базы перебор бессмыслен: проще и быстрее сбросить пароль, чем подбирать его.

Поэтому корректная постановка задачи администратора — не «как узнать пароль», а «как восстановить доступ». Механизмов для этого несколько, и все они сводятся к замене или удалению хеша, а не к его чтению.

Что реально видно в SQL Server Management Studio

Если задача — аудит, а не восстановление доступа, посмотреть структуру хранения можно безопасно, в режиме чтения. Подключитесь к SQL Server, найдите базу информационной базы и раскройте список таблиц.

  1. Откройте SQL Server Management Studio и подключитесь к экземпляру сервера.
  2. Найдите базу данных нужной информационной базы 1С.
  3. В разделе «Таблицы» найдите dbo.Params.
  4. Выполните запрос SELECT * FROM dbo.Params — вы увидите строки с именами параметров и бинарные значения.
  5. Строка, связанная с пользователями, содержит сериализованный список; читаемых логинов и тем более паролей в нём при простом просмотре не будет.

Дополнительно можно посмотреть таблицу V8Users, если она присутствует (в некоторых версиях платформы): там хранятся идентификаторы и имена пользователей в более читаемом виде, но опять же без паролей. Фактическая полезность такого просмотра для администратора невелика — вся осмысленная работа с пользователями делается через конфигуратор или консоль кластера.

sql
SELECT [FileName], DATALENGTH([BinaryData]) AS DataSize FROM dbo.Params

Легальные способы сброса пароля администратора

Если пароль единственного администратора утерян, действуйте штатными методами. Первый и самый простой: если в базе есть другой пользователь с правами администратора, он меняет пароль через конфигуратор («Администрирование» → «Пользователи») или в режиме предприятия через стандартную обработку управления пользователями.

Второй способ — снятие списка пользователей через изменение признака в таблице Params на копии базы: известен приём, когда значение соответствующего параметра очищается, после чего база открывается без запроса пароля и администратор создаёт пользователей заново. Этот метод относится к неподдерживаемым: формат хранения может меняться между версиями платформы, и ошибка в бинарных данных приведёт к неработоспособности базы. Применять его допустимо только на копии и только когда других вариантов нет.

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

Порядок действий при утере пароля
  1. 1
    Сделайте полный бэкап базы средствами СУБД и выгрузку .dt, если вход ещё возможен хотя бы под одним пользователем
  2. 2
    Проверьте, есть ли второй пользователь с правами администратора — если да, сбросьте пароль через него
  3. 3
    Проверьте, настроена ли аутентификация ОС у административных учётных записей
  4. 4
    Если штатных путей нет — разверните копию базы и экспериментируйте только на ней
  5. 5
    После восстановления доступа задайте новый пароль и зафиксируйте его в корпоративном хранилище секретов

Пароли к SQL Server и другие секреты рядом с 1С

Кроме паролей пользователей базы, в инфраструктуре 1С есть ещё несколько типов секретов, и их часто путают. Пароль учётной записи СУБД, под которой сервер 1С обращается к базе, задаётся при создании информационной базы и хранится в настройках кластера серверов 1С, а не в SQL-таблицах базы. Сменить его можно в свойствах информационной базы в консоли кластера.

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

Нужно прочитать чужой пароль из ParamsНевозможно

Там хранятся только хеши; восстановление — это перебор, а не чтение

Утерян пароль единственного администратораРешаемо

Второй администратор, аутентификация ОС или работа с копией базы

Нужен аудит хранения паролейДоступно

Просмотр Params и V8Users в режиме чтения безопасен

Пароль учётки SQL ServerОтдельный секрет

Хранится в настройках кластера 1С, меняется в консоли кластера

Типичные ошибки и ограничения

Самая распространённая ошибка — попытка найти в базе таблицу с колонкой «Password» и прочитать значения. Такой таблицы не существует, и время, потраченное на перебор таблиц, бесполезно. Вторая ошибка — правка Params на рабочей базе без копии: повреждение сериализованных данных приводит к тому, что база перестаёт открываться, и восстановление возможно только из бэкапа.

Третья ошибка — хранение паролей в открытом виде в коде конфигурации или в константах строкового типа. Такие пароли действительно можно прочитать из SQL-таблиц запросом, что является уязвимостью. Если аудит показал, что пароли обменов или почты лежат в базе открытым текстом, их нужно перевести на штатные защищённые механизмы хранения и сменить.

Ограничение, о котором стоит помнить: формат сериализации в Params — внутренний формат платформы, он не документирован и может измениться при обновлении платформы. Любые инструкции по ручной правке, найденные для одной версии, на другой могут не сработать или повредить данные.

Типичные ошибки
01
Поиск колонки с паролем в таблицах базы — паролей в открытом виде в SQL нет в принципе
02
Правка таблицы Params на боевой базе без копии — риск необратимого повреждения данных
03
Хранение паролей обменов и почты в константах открытым текстом — их можно прочитать простым SELECT
04
Использование инструкций по правке Params от другой версии платформы — формат хранения может отличаться
05
Отсутствие второго администратора и бэкапа — утеря одного пароля превращается в аварию
Маршрут решения

Как выбрать действие

Есть второй пользователь с правами администратораСбросьте пароль штатно через конфигуратор или режим предприятия
Настроена аутентификация ОСВойдите под доменной учётной записью и задайте новый пароль
Администратор один и пароль утерянСнимите бэкап, разверните копию и восстанавливайте доступ только на ней
Нужен аудит безопасностиПроверьте, нет ли паролей открытым текстом в константах и реквизитах, и переведите их на защищённое хранение
Итог

Что важно запомнить

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

Частые вопросы

Можно ли посмотреть пароль пользователя 1С запросом к SQL-базе?

Нет. В базе хранятся только хеши паролей в сериализованном бинарном виде в таблице Params. Хеш необратим: по нему нельзя вычислить исходный пароль. Доступ восстанавливается сбросом пароля, а не его чтением.

В какой таблице SQL лежит список пользователей 1С?

Основное хранилище — служебная таблица Params, куда платформа сериализует список пользователей вместе с настройками. В ряде версий платформы дополнительно есть таблица V8Users с идентификаторами и именами пользователей, но паролей в открытом виде нет ни там, ни там.

Что делать, если утерян пароль единственного администратора базы?

Сначала сделайте бэкап средствами СУБД. Проверьте наличие аутентификации ОС и второго администратора. Если их нет, разверните копию базы и восстанавливайте доступ на ней — например, известным методом очистки данных о пользователях в Params. На рабочей базе такие операции проводить нельзя.

Где хранится пароль, под которым 1С подключается к SQL Server?

Это учётные данные СУБД, а не пользователя 1С. Они задаются при создании информационной базы и хранятся в настройках кластера серверов 1С. Изменить их можно в свойствах информационной базы в консоли администрирования кластера.

Опасно ли хранить пароли в константах или реквизитах конфигурации?

Да. Константы и реквизиты хранятся в обычных таблицах базы, и их содержимое читается простым SQL-запросом. Пароли обменов, почты и веб-сервисов следует хранить через штатные защищённые механизмы конфигурации, а уже раскрытые пароли — сменить.

Меняется ли способ хранения паролей при обновлении платформы?

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