Действительно ли дайджесты образов Docker безопасны?

Как докер обрабатывает дайджесты?

Когда я запускаю docker image --inspect, я вижу в обычном тексте дайджест изображения. Кроме того, локальные образы не имеют дайджеста, пока я не отправлю их в реестр (и, насколько мне известно, если я отправлю образ в разные реестры, у него будут разные дайджесты, но я никогда этого не пробовал).

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

Есть ли способ сказать докеру: Эй, я хочу, чтобы ты прямо сейчас перепроверил хэш содержимого изображения. Они точно такие же, как когда я впервые создал образ? Или кто-то манипулировал им когда-либо?

И: действительно ли докер вычисляет этот хэш каждый раз, когда запускается образ (по дайджесту) или, по крайней мере, каждый раз, когда образ извлекается (по дайджесту)?


person alx    schedule 12.04.2021    source источник


Ответы (1)


Дайджест рассчитывается при отправке и извлечении в реестр. Это контрольная сумма sha256 манифеста образа, которая в текущих версиях Docker не зависит от реестра (синтаксис старой схемы v1 включал репозиторий/тег в манифест, что приводило к изменению дайджеста в зависимости от имени образа). Дайджесты слоев включены в этот манифест, и эти дайджесты в реестре представляют собой сжатые tar-файлы. После того, как файлы были извлечены на локальном механизме докера, они не проверяются повторно, и я пока не знаю команды, которая проверяла бы, что файлы под /var/lib/docker не были изменены с момента извлечения образа.

person BMitch    schedule 12.04.2021
comment
Итак, docker pull использование дайджеста безопасно даже для ненадежного реестра, учитывая, что локальный движок вычисляет контрольную сумму содержимого sha256 и проверяет, соответствуют ли они тому, что вы просили, верно? - person alx; 12.04.2021
comment
@alx да, дайджест гарантирует, что то, что вы извлекаете, не было изменено. Вот как работает Notary v1, проверяя, что тег указывает на дайджест, а механизм докера проверяет все остальное автоматически. - person BMitch; 12.04.2021