Спор о данных нередко зависит не только от таблиц, но и от того, как устроен конкретный кластер 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 «О судебной экспертизе по уголовным делам», негосударственными судебно-экспертными учреждениями признаются некоммерческие организации, созданные на основании Гражданского кодекса Российской Федерации и Федерального закона «О некоммерческих организациях» и ведущие судебно-экспертную деятельность согласно своим уставам.
По сведениям организации, проведение судебных экспертиз предусмотрено её уставом (см. действующую редакцию в разделе «Документы организации»). Это само по себе не означает автоматического поручения любой экспертизы. Возможность поручить конкретное исследование определяет назначающий орган.
Если по уголовному делу выбирают именно негосударственное судебно-экспертное учреждение, это решение должно быть мотивировано. Пункт 5 постановления № 28 связывает такой выбор с невозможностью провести исследование в государственном учреждении, обслуживающем соответствующую территорию: например, из-за отсутствия нужного специалиста, материально-технической базы или специальных условий, либо с отводом компетентных государственных учреждений. Дополнительно учитываются квалификация эксперта, основания для отвода и действующий перечень экспертиз, выполняемых только государственными судебно-экспертными организациями.