Спор о данных нередко зависит не только от таблиц, но и от того, как устроен конкретный кластер PostgreSQL: какие версии и расширения использовались, какие операции отражены в журналах, сохранились ли WAL и резервные копии, почему запрос выполнялся медленно или чем закончилась миграция. Экспертиза СУБД PostgreSQL — специализированное направление экспертизы баз данных и СУБД. Она отвечает на проверяемые технические вопросы по конкретному экземпляру, периоду и набору объектов.
До начала полного исследования можно оценить перспективу задачи. После просмотра доступных копий, конфигурации и журналов специалист определяет, охвачен ли нужный период, можно ли безопасно развернуть исследовательский стенд, каких материалов не хватает и насколько определённым может быть ответ. Такой предварительный прогноз помогает решить, стоит ли начинать полное исследование или сначала дополнить материалы. Окончательный вывод формируют после проверки всего согласованного комплекта объектов.
Если данные только что удалены или сервер дал сбой, не запускайте восстановление, VACUUM FULL, переиндексацию, массовые исправления или повторную миграцию на единственном экземпляре. Зафиксируйте время и часовой пояс, сохраните перечень доступных WAL, логов, мониторинга и снимков. Систему не останавливайте, а копию снимайте как можно раньше — но не самовольно: согласуют не сам факт копирования, а полномочия и способ, то есть кто выполняет, какой командой и как фиксируется результат. Для первого обращения ни рабочая база, ни секреты доступа не нужны: достаточно описания ситуации. Если спорная система принадлежит другой стороне или управляется ею, доказательство сохраняют через суд — ходатайством об истребовании или об обеспечении доказательств, а не своими силами.
Отдельно о том, что будет, если ответить не удастся. Задачу, по которой уже из присланных материалов видно, что вывода не получится, мы просто не берём в работу и говорим об этом сразу. Это не обещание положительного вывода: отказ на входе означает лишь, что невозможность видна уже из перечня материалов. Если же невозможность выясняется по итогам полноценного исследования, это результат, а не пустой счёт: заключение объясняет, почему ответа нет и чего именно не хватило. В споре такой вывод часто закрывает вопрос: обоснованный ответ, что удалённые строки за спорный период не сохранились ни в файлах данных, ни в доступных WAL, показывает суду границы имеющихся источников. Назначать ли после этого дополнительную или повторную экспертизу, решает назначивший её орган. Бывает и частичная невозможность: тогда указывают, на какие вопросы ответ получен, а на какие нет и по какой причине.
Кто снимает копию, решают по объекту. Иногда это делает сам заказчик или его администратор по согласованному плану; иногда — наш специалист, удалённо или с выездом, как отдельная консультация; иногда фиксация входит в саму экспертизу. Выбор зависит от сложности системы, доступности и трудоёмкости: копию кластера и архив WAL снимают по-разному на одиночном сервере и на нагруженном кластере. Если инфраструктурой управляет другая сторона, порядок доступа определяет суд, и фиксацию проводят с участием эксперта.
Счёт идёт на часы, и не только из-за чужих действий. Прежние версии строк освобождает автоочистка (autovacuum): она включена по умолчанию, работает сама и убирает ровно то, ради чего просят ничего не трогать. Отключать её ради ожидания эксперта не нужно — нужно раньше снять копию.
Журналы за спорный период скопируйте на отдельный носитель сразу, с контрольными суммами. После этого штатную ротацию и архивацию не останавливайте: если WAL перестают вывозиться, каталог pg_wal растёт, а при заполнении файловой системы сервер аварийно останавливается и не запускается, пока место не освободят. Держать журналы на месте до приезда эксперта — значит рисковать остановкой рабочей базы.
Когда нужна экспертиза именно PostgreSQL
Специализация на PostgreSQL нужна, когда вывод зависит от внутренних объектов, служебных источников и правил конкретной версии этой СУБД. Если название продукта случайно упомянуто в документах, а вопрос относится ко всей информационной системе или договору, сначала определяют действительный предмет исследования.
Типичные задачи, для которых нужна экспертиза PostgreSQL:
- нужно сопоставить содержимое, схему, роли, функции, триггеры, индексы или настройки нескольких экземпляров PostgreSQL;
- спор касается удаления или изменения записей и сохранности технических следов в WAL, журналах, резервных копиях или репликах;
- требуется проверить восстановление на заданный момент, полноту резервной копии или причины потери данных;
- нужно исследовать блокировки, взаимоблокировки, планы запросов, статистику, настройки памяти, контрольные точки или репликацию;
- стороны расходятся в оценке миграции в PostgreSQL либо из него, совместимости схемы, типов данных и программных объектов;
- необходимо сопоставить реализацию базы с измеримыми требованиями технического задания, спецификации или SLA.
Для подробного исследования истории записей предназначена экспертиза изменений и удаления данных, для переноса — экспертиза миграции баз данных, для замедлений и отказов — экспертиза производительности и сбоев СУБД. Страница о PostgreSQL объединяет эти задачи только тогда, когда для ответа нужны особенности самого продукта.
Что может установить эксперт
Возможность ответа определяется версией PostgreSQL, способом размещения и сохранностью материалов. Эксперт сопоставляет независимые источники и отделяет факт, обнаруженный в объекте, от гипотезы, которую доступные данные не позволяют проверить.
При достаточных материалах эксперт может установить:
- версию и параметры кластера, состав баз, схем, таблиц, ограничений, индексов, ролей, расширений и программных объектов;
- содержимое указанных записей в представленной копии и различия между экземплярами, дампами, снимками или резервными копиями;
- техническую последовательность операций в пределах сохранённых журналов, архива WAL и других источников;
- возможность восстановления к заданному моменту при наличии совместимой базовой копии и непрерывной последовательности необходимых сегментов WAL;
- механизм формирования значения функцией, триггером, запросом или связанной частью приложения;
- причины наблюдаемых блокировок, ошибок, деградации запросов, отставания реплики или сбоя — если за нужный период сохранились измерения;
- полноту миграции и соответствие конкретных элементов PostgreSQL измеримым требованиям документации.
WAL обеспечивает надёжность и восстановление, но сам по себе не является готовым журналом действий пользователей. Стандартный серверный журнал также не содержит все запросы, если это не было настроено заранее. Техническая роль, адрес клиента, имя приложения или идентификатор сеанса могут сузить круг возможных объяснений, однако не доказывают, какое физическое лицо действовало и с каким намерением. Эксперт устанавливает технические обстоятельства в пределах представленных материалов; виновность, умысел, правомерность действий, нарушение договора и иные правовые последствия оценивает суд или иной уполномоченный орган.
Какие объекты исследуются
Набор объектов подбирают под вопрос. Один логический дамп может быть достаточен для сравнения схемы и данных, но не заменяет физическую копию, архив WAL, настройки и журналы, если спор относится к хронологии, восстановлению или работе кластера.
Физические и логические копии
pg_dump создаёт логическую выгрузку одной базы или выбранных объектов. Текстовый SQL-дамп обычно загружают через psql, архивные форматы — через pg_restore. pg_dumpall формирует логический SQL-скрипт для всех баз и добавляет общие объекты кластера, включая роли и определения пространств таблиц. Эти выгрузки не сохраняют физическое состояние кластера, WAL и текущую статистику; их полнота зависит от команды и прав учётной записи.
Согласованная физическая базовая копия, например результат pg_basebackup или штатно созданного снимка, сохраняет файлы кластера и может использоваться вместе с архивом WAL. Простое файловое копирование работающего каталога данных без протокола резервного копирования или согласованного снимка способно дать несогласованный набор; отдельно проверяют внешние пространства таблиц и конфигурацию. Для развёртывания учитывают major-версию PostgreSQL, сборку, архитектуру, операционную систему, локали и бинарные расширения. Исходную копию для проб не запускают.
Конфигурация, схема и программные объекты
Исследуются postgresql.conf, postgresql.auto.conf, pg_hba.conf, параметры запуска и облачного сервиса, роли и права, расширения, пространства таблиц, DDL, функции, процедуры, триггеры, представления и индексы. Важны версия сервера, операционная система, кодировка, локаль, правила сравнения строк и история изменений конфигурации.
Журналы, статистика и мониторинг
Сопоставляются серверные логи, журналы приложения и операционной системы, сведения облачного провайдера, мониторинг, pg_stat_activity, накопительная статистика, данные pg_stat_statements, планы запросов и состояние репликации. pg_stat_activity — снимок текущей или последней активности процессов, видимость которого зависит от прав, а не история всех сеансов. pg_stat_statements должен быть включён заранее и хранит агрегаты нормализованных запросов, а не перечень отдельных выполнений с пользователем, IP и временем каждого запуска; записи могут сбрасываться и вытесняться. Накопительные показатели также зависят от версии, настроек и характера остановки сервера, поэтому фиксируют момент снимка, время старта, показатели сброса и контекст.
Как сохранить PostgreSQL для исследования
Работающий кластер продолжает изменяться: идут транзакции, ротируются логи, перерабатываются сегменты WAL и меняется статистика. Поэтому сначала согласуют сбор данных с минимальным воздействием на систему, а эксперименты и восстановление проводят на отдельной копии.
До получения копии и начала исследования:
- не запускайте восстановление,
VACUUM FULL, переиндексацию, массовое обновление или миграцию поверх единственного спорного экземпляра; - не удаляйте журналы и не меняйте настройки логирования до фиксации текущей конфигурации и источников;
- сохраните точное время и часовой пояс, версию, идентификаторы кластера и базы, топологию узлов и роль каждого источника;
- если у вас есть полномочия и согласован план фиксации, создайте проверяемую копию штатным для этой версии способом, отдельно сохраните манифест, контрольные суммы и журнал действий;
- для управляемого облачного сервиса запросите доступные снимки, журналы аудита и операций провайдера, параметры, метрики и сведения о переключениях;
- зафиксируйте, кто получал и передавал материалы, когда это происходило и какие преобразования выполнялись.
Команда, называемая «только чтением», всё равно может создавать нагрузку, блокировки, служебные записи и новые статистические значения. EXPLAIN ANALYZE фактически выполняет переданный запрос: опасны не только изменяющие операторы, но и чтение с нестабильными функциями или внешними вызовами. Такие проверки проводят на отдельной копии, а границы допустимого воздействия определяют до доступа к объекту.
Какие материалы подготовить
Для первичной оценки не обязательно сразу передавать весь кластер. Сначала пришлите описание события и перечень доступных источников без секретов доступа; после этого можно выбрать безопасный способ передачи и определить, какие персональные, коммерческие или охраняемые законом сведения действительно нужны.
Для оценки и последующей работы подготовьте:
- цель исследования, проект вопросов, точный период и часовой пояс;
- версию и сборку PostgreSQL, операционную систему, способ размещения, топологию, расширения и связанное приложение;
- идентификаторы базы, схемы, таблицы, записи, транзакции, роли, сеанса или запроса, если они известны;
- физические копии, логические дампы, архив WAL, снимки, реплики и отчёты о резервном копировании;
- конфигурационные файлы, серверные и прикладные журналы, мониторинг, планы запросов и снимки статистики;
- DDL, исходный код функций и триггеров, сценарии миграции, сопоставления полей и контрольные выборки;
- договор, техническое задание, SLA, методику испытаний, акты и историю согласованных изменений;
- описание получения материалов, контрольные суммы и процессуальный документ, если экспертиза уже назначена.
Пароли, закрытые ключи и полную выгрузку рабочих данных не следует отправлять обычной почтой. До передачи согласуют защищённый канал, объём доступа, необходимость обезличивания и круг лиц, которым разрешена работа с объектами.
Передача копии, в которой есть сведения о людях или охраняемая законом тайна, требует законного основания. По назначенной экспертизе объекты поступают от назначившего органа; вне процесса — от обладателя сведений и в объёме, необходимом для ответа на поставленные вопросы. Обезличивание при этом обсуждают не как уступку, а как способ передать меньше, чем есть. Эксперт не разглашает сведения, ставшие известными ему в связи с исследованием, а рабочие копии удаляет по окончании работы.
Как проводится исследование
Методика строится от вопроса и версии продукта. Сначала проверяются происхождение, целостность, совместимость и полнота копий. Затем на изолированном стенде воспроизводится нужная конфигурация, документируются команды и результаты, а альтернативные технические гипотезы проверяются по нескольким источникам.
Для сравнения данных применяются воспроизводимые SQL-запросы и контрольные суммы; для схемы — сопоставление DDL и системных каталогов; для восстановления — базовая копия и доступная последовательность WAL с фиксацией временной шкалы; для производительности — планы, статистика, ожидания, блокировки, настройки и инфраструктурные метрики. Утилита pg_waldump может помогать разбирать WAL, но её вывод требует интерпретации и сам по себе не устанавливает пользователя, смысл операции или прежнее значение каждой строки.
У восстановления прежних значений есть предел, и задаёт его устройство самого PostgreSQL. Изменение строки не переписывает её на месте: старая версия остаётся в файле таблицы, пока нужна другим транзакциям, а затем становится мусором. Освобождает этот мусор очистка — команда VACUUM помечает место свободным для повторного использования, VACUUM FULL перестраивает таблицу целиком, а автоочистка (autovacuum) делает первое сама, без участия человека. Как только освобождённое место занято новыми данными, прежнего значения в файле уже нет. Кроме того, PostgreSQL убирает ненужные версии строк попутно, прямо при обращении к странице, поэтому отсутствие записей об автоочистке ещё не означает, что прежние версии на месте: обычной нагрузки на чтение достаточно.
Поэтому шансы зависят от того, что успело произойти после удаления: активность записи в ту же таблицу, прошедшая очистка, перестроение, а также глубина архива WAL и полнота резервных копий. Определённого ответа «данные восстановимы» до просмотра материалов не бывает — есть предварительная оценка того, какие источники ещё живы. Именно поэтому копию снимают в первые часы, а не после переписки.
Проверка соответствия техническому заданию выносится в самостоятельные критерии; подробнее она описана на странице экспертизы базы данных на соответствие ТЗ. Если признаки указывают на компрометацию учётных данных, вредоносное ПО или путь атаки, к работе подключают специалистов по расследованию инцидентов кибербезопасности.
Примеры вопросов на экспертизу
При судебной экспертизе окончательный круг вопросов определяет суд, а в иных предусмотренных законом процедурах — орган или лицо, назначившие экспертизу. Вопросы о виновности, умысле, правовой квалификации события, нарушении договора и ответственности разрешает суд или иной уполномоченный орган. Эксперт отвечает на поставленные вопросы в пределах специальных знаний и представленных материалов; о неясности вопроса, выходе за пределы компетенции или недостаточности материалов он в установленном порядке сообщает суду, органу или лицу, назначившим экспертизу.
До назначения стороны могут использовать приведённые ниже формулировки как предложения о технических вопросах. Для PostgreSQL полезно указать кластер и базу, версию, таблицу или иной объект, временной интервал, часовой пояс и проверяемый технический критерий. Состояние данных, авторизацию, производительность, восстановление и соответствие документации целесообразно исследовать отдельными вопросами, поскольку для них нужны разные источники и методы. Примеры:
- Каковы версия и указанные параметры конфигурации представленного кластера PostgreSQL?
- Какие названные схемы, таблицы, функции, триггеры, индексы, роли и расширения имеются в представленном кластере?
- Чем различаются структура и указанные данные в двух представленных экземплярах или копиях?
- Имеются ли в сохранённых источниках технические признаки изменения или удаления указанных записей за заданный период?
- Какие операции и технические идентификаторы отражены в доступных журналах по указанному событию?
- Возможно ли восстановление исследуемой базы к заданному моменту по представленным резервным копиям и WAL?
- Каков механизм формирования значения в указанном поле с учётом функций, триггеров и запросов приложения?
- Какие технические факторы, подтверждённые представленными журналами и измерениями, вызвали зафиксированные в заданный период блокировку, ошибку, замедление или отставание реплики?
- Соответствуют ли перечисленные измеримые характеристики PostgreSQL конкретным техническим требованиям задания или SLA?
- Полно и корректно ли перенесены названные объекты и данные между исходной и целевой системами?
Эксперт оценивает, достаточны ли представленные исходные данные для ответа на каждый поставленный технический вопрос, и указывает ограничения исследования в заключении. Это оценка пригодности материалов для исследования, а не оценка достаточности доказательств по делу.
В качестве предложений сторона может сформулировать технические вопросы об операциях, ролях, сеансах, адресах и временных отметках, относящихся к указанной записи; об изменениях и идентификаторах, устанавливаемых по сохранённым WAL и журналам; о соответствии названных объектов, параметров и результатов конкретным пунктам технического задания.
Роль или сетевой адрес связывают событие с техническим контекстом, но не устанавливают физическое лицо, виновность или умысел. Правовую квалификацию и ответственность определяет уполномоченный законом субъект по совокупности доказательств. Неясные положения заключения, не требующие нового исследования, можно уточнить при допросе эксперта. Недостаточная ясность или полнота, а также новые вопросы могут стать основанием для дополнительной экспертизы. Сомнения в обоснованности, противоречия или существенные методические дефекты могут стать основанием для повторной экспертизы. Конкретное решение зависит от вида процесса и принимается назначающим субъектом.
Формат работы и предварительная оценка
Формат выбирают по стадии спора и требуемому результату. Организационный разбор отвечает, относится ли задача к компетенции эксперта и какие материалы доступны. Предварительная оценка исследуемости показывает, возможно ли применить методику, каких источников не хватает и какой предел определённости ожидается. В ходе полного исследования проверяют альтернативные технические объяснения и формулируют ответы на поставленные вопросы.
В зависимости от задачи можно выбрать:
- Консультация или справка помогает определить направление, материалы и формулировки; ответы по существу оформляют по результатам исследования.
- Внесудебное исследование проводится по договору по согласованным техническим вопросам.
- Судебная экспертиза выполняется по определению суда или постановлению следователя, дознавателя либо иного уполномоченного законом субъекта — в порядке соответствующего вида судопроизводства.
- Рецензия проверяет уже готовое заключение, его объекты, методы, ограничения и связь результатов с выводами; подробнее — на странице рецензирования экспертизы баз данных и СУБД.
Если судебная экспертиза уже назначена, назначенный по делу эксперт не принимает от одной стороны напрямую дополнительные дампы, WAL или логи и не даёт ей частную оценку по существу поручения: вопросы, доступ и новые материалы идут через назначившего субъекта. Это не исключает обращения стороны к другому, не назначенному по делу специалисту — за консультацией или рецензией по законно полученным материалам. Предшествующую содержательную работу специалиста для одной стороны раскрывают при рассмотрении его кандидатуры; допустимость назначения и возможный отвод решает уполномоченный субъект с учётом мнения участников. Чтобы снизить риски, роли консультанта стороны и кандидата в судебные эксперты целесообразно разделять.
Что вы получите и как использовать результат
Заключение описывает объекты и их происхождение, версию среды, методы, выполненные команды и запросы, полученные данные, проверенные альтернативы, ограничения и ответы. Таблицы сравнения, временная шкала и иллюстрации должны позволять проследить путь от исходного материала к каждому выводу.
Документ можно представить в суд, использовать в претензионной работе или переговорах, но он не имеет заранее установленной доказательственной силы. Суд оценивает его вместе с другими материалами. Если источников недостаточно, предварительная оценка определяет, какие дополнительные материалы следует запросить и какие виды исследования остаются возможными.
От чего зависят стоимость и срок
На трудоёмкость влияют число кластеров и версий, объём данных и WAL, длина исследуемого периода, состояние резервных копий, сложность топологии, количество вопросов, необходимость восстановления нескольких временных точек, облачные ограничения, нагрузочные испытания и участие специалистов по программному обеспечению или информационной безопасности. Ориентир для судебной экспертизы — от 100 000 ₽, срок — от 10 рабочих дней; точные условия определяются после просмотра материалов.
При первом обращении подготовьте описание события, проект вопросов, версию PostgreSQL и перечень доступных копий, журналов и документов. Позвоните по номеру 8 (800) 333-24-09 или оставьте заявку: мы проверим компетенцию, предложим безопасный порядок первичного просмотра и сообщим, каких данных не хватает для расчёта.
Проведение экспертизы по уголовному делу
Судебная экспертиза по уголовному делу производится государственными судебными экспертами и иными экспертами из числа лиц, обладающих специальными знаниями.
Негосударственными судебно-экспертными учреждениями постановление Пленума Верховного Суда Российской Федерации от 21 декабря 2010 г. № 28 «О судебной экспертизе по уголовным делам» признаёт некоммерческие организации, созданные в соответствии с Гражданским кодексом Российской Федерации и Федеральным законом «О некоммерческих организациях» и осуществляющие судебно-экспертную деятельность в соответствии с принятыми ими уставами.
По сведениям организации, проведение судебных экспертиз предусмотрено её уставом (см. действующую редакцию в разделе «Документы организации»). Это само по себе не означает автоматического поручения любой экспертизы. Возможность поручить конкретное исследование определяет назначающий орган с учётом предмета дела, квалификации эксперта, оснований для отвода и действующего перечня экспертиз, выполняемых только государственными судебно-экспертными организациями.