Проверка целостности
Эта статья описывает, как проверить целостность Docker-образов, Helm chart и RPM-пакетов VK Business Analytics перед их установкой или обновлением. Проверка целостности позволяет убедиться, что артефакты не были повреждены при скачивании и не были изменены (в том числе злоумышленником) между публикацией и получением артефакта.
Актуальные контрольные суммы (дайджесты) для всех образов и Helm chart каждого релиза опубликованы в разделе Список артефактов.
Каждому Docker-образу, опубликованному в реестре registry-pm.taxmon.ru, соответствует уникальный дайджест SHA-256, вычисляемый на основе содержимого манифеста и слоёв образа. Дайджест указан в таблице Образы Docker раздела Список артефактов для каждой версии релиза.
Docker самостоятельно вычисляет и проверяет контрольные суммы SHA-256 всех слоёв образа при выполнении команды docker pull, поэтому повреждение данных при передаче по сети обнаруживается автоматически, и команда завершится ошибкой, если данные повреждены.
Чтобы дополнительно убедиться, что скачанный образ соответствует ожидаемой версии, воспользуйтесь дайджестом образа. Получить дайджест локально скачанного образа можно следующей командой:
docker images --digests registry-pm.taxmon.ru/vkbi-admin:26.3.0# Ожидаемый вывод:REPOSITORY TAG DIGEST IMAGE ID CREATED SIZEregistry-pm.taxmon.ru/vkbi-admin 26.3.0 sha256:15af039f3782c01d18ed023537baf72dc4c90f550a097e2334b7c9b3d1bf4ff2 1a2b3c4d5e6f 2 weeks ago 412MB
Также можно использовать команду docker inspect:
docker inspect --format='{{index .RepoDigests 0}}' registry-pm.taxmon.ru/vkbi-admin:26.3.0# Ожидаемый вывод:registry-pm.taxmon.ru/vkbi-admin@sha256:15af039f3782c01d18ed023537baf72dc4c90f550a097e2334b7c9b3d1bf4ff2
Сравните полученный дайджест sha256:... с эталонным значением из раздела Список артефактов. Совпадение подтверждает, что вы получили именно тот образ, который был опубликован разработчиком, без подмены или искажения содержимого.
Пример успешной проверки — дайджест локального образа совпадает с эталонным:
- Эталон: sha256:15af039f3782c01d18ed023537baf72dc4c90f550a097e2334b7c9b3d1bf4ff2
- Локально: sha256:15af039f3782c01d18ed023537baf72dc4c90f550a097e2334b7c9b3d1bf4ff2
- Результат: OK, дайджесты совпадают.
Пример неуспешной проверки — дайджесты не совпадают:
- Эталон: sha256:15af039f3782c01d18ed023537baf72dc4c90f550a097e2334b7c9b3d1bf4ff2
- Локально: sha256:9e4d2a7c1b0f83a5d6c9e0b1a2f3c4d5e6f708192a3b4c5d6e7f8091a2b3c4d5
- Результат: MISMATCH, дайджесты не совпадают.
После загрузки и запуска образа Docker не отслеживает целостность файлов контейнера в реальном времени: если файлы контейнера были изменены (например, пользователем с правами root на хосте), Docker выполнит изменённый код без предупреждения. Чтобы убедиться, что файловая система работающего контейнера не была изменена по сравнению с исходным образом, используйте команду docker diff:
docker diff <имя_или_id_контейнера>
Вывод команды содержит список изменённых файлов с одним из следующих признаков:
Признак | Значение |
|---|---|
A | Файл добавлен |
D | Файл удалён |
C | Файл изменён (может свидетельствовать об аномалии, если изменение не ожидалось) |
Если команда docker diff для только что запущенного контейнера возвращает изменения, не связанные с ожидаемой инициализацией приложения (например, изменения конфигурационных файлов, бинарных файлов приложения и т. п.), это может свидетельствовать о вмешательстве в целостность образа.
Для дополнительной защиты от вмешательства во время работы контейнера рекомендуется запускать production-контейнеры с файловой системой в режиме "только чтение":
docker run --read-only <имя_образа>
Файл Helm chart (.tgz) распространяется вместе с контрольной суммой SHA-256, указанной в таблице Helm Chart соответствующей версии релиза.
Для проверки целостности скачанного файла на управляющем узле с ОС Linux выполните команду sha256sum, указав путь к файлу chart'а:
sha256sum vkba-26.3.0.tgz
Сравните полученное значение с эталонным значением из раздела Список артефактов для соответствующей версии.
Пример успешной проверки. Если вычисленная сумма совпадает с эталонной, вывод команды будет содержать точное совпадение хеша:
$ sha256sum vkba-26.3.0.tgz03c78a3de4107c513d71a2fc400729608395eb68cd19af00568c4a20b8d56917 vkba-26.3.0.tgz
Для автоматизации сравнения можно использовать флаг проверки по эталонному файлу, содержащему ожидаемую сумму:
echo "03c78a3de4107c513d71a2fc400729608395eb68cd19af00568c4a20b8d56917 vkba-26.3.0.tgz" > vkba-26.3.0.tgz.sha256sha256sum -c vkba-26.3.0.tgz.sha256# Ожидаемый вывод:vkba-26.3.0.tgz: OK
Пример неуспешной проверки. Если файл был повреждён или изменён при передаче, вычисленное значение хеша не совпадёт с эталонным:
$ sha256sum vkba-26.3.0.tgza1b2c3d4e5f60718293a4b5c6d7e8f90112233445566778899aabbccddeeff0 vkba-26.3.0.tgz
При использовании режима проверки по файлу с эталонной суммой несовпадение отображается явно:
$ sha256sum -c vkba-26.3.0.tgz.sha256vkba-26.3.0.tgz: FAILEDsha256sum: WARNING: 1 computed checksum did NOT match
Если установка VK Business Analytics выполняется с использованием RPM-пакетов, то каждый пакет поставляется в комплекте с файлом контрольной суммы .sha256, содержащим эталонное значение хеша SHA-256 для данного пакета.
Для проверки целостности RPM-пакета выполните команду sha256sum -c, указав соответствующий файл контрольной суммы:
sha256sum -c vkbi-admin-26.3.0.x86_64.rpm.sha256# Ожидаемый вывод:vkbi-admin-26.3.0.x86_64.rpm: OK
Если пакет был повреждён или изменён при передаче, команда сообщит о несовпадении:
$ sha256sum -c vkbi-admin-26.3.0.x86_64.rpm.sha256vkbi-admin-26.3.0.x86_64.rpm: FAILEDsha256sum: WARNING: 1 computed checksum did NOT match
Если вычисленная контрольная сумма (SHA-256) файла Helm chart, RPM-пакета или дайджест Docker-образа не совпадает с эталонным значением:
- Не устанавливайте и не запускайте проверяемый артефакт — его целостность не подтверждена, а происхождение и содержимое считаются недоверенными.
- Убедитесь, что для сравнения используется эталонное значение, соответствующее правильной версии релиза.
- Удалите скачанный файл, образ или пакет и повторите его получение (загрузку/
docker pull) из доверенного источника, после чего повторите проверку. - Если контрольная сумма не совпадает после повторного скачивания, обратитесь в службу поддержки VK Business Analytics, приложив к обращению:
- версию релиза и наименование артефакта (образ, Helm chart или RPM-пакет);
- эталонное значение контрольной суммы;
- фактическое значение контрольной суммы, полученное при проверке;
- способ и источник получения артефакта.
Для направления обращения используйте один из следующих каналов связи:
Служба поддержки поможет установить причину несовпадения и предоставит доверенную копию артефакта при необходимости.