Как перечислить все известные корневые ключи в Docker (Docker Content Trust)

Как я могу перечислить все корневые ключи Docker Content Trust в моей системе?

Я настраиваю процесс CI, который будет использовать debian:stable-slimобраз докера для создания выпусков моего приложения в экземплярах эфемерного облака. Я хочу быть уверен, что каждый раз, когда моя новая система сборки docker pull debian:stable-slim, он не просто слепо TOFU корневого открытого ключа, используемого для подписи образов докеров Debian, тем самым разрушая всю модель безопасности DCT.

Перед загрузкой данного образа докеры, как я могу проверить, есть ли в системе уже открытый корневой ключ образа или нет?

1 ответ

Решение

Чтобы узнать, какие ключи у вас уже есть в вашей системе (успешно / вслепую / незаметно полученные с помощью TOFU, если вы сами не поместили их туда), проверьте $HOME/.docker/trust/tuf/docker.io/library

Например:

root@disp9131:~# export DOCKER_CONTENT_TRUST=1
root@disp9131:~#

root@disp9131:~# docker pull debian:stable-slim
Pull (1 of 1): debian:stable-slim@sha256:89ff9e144a438f6bdf89fba6a1fdcb614b6d03bc14433bbb937088ca7c7a7b6d
sha256:89ff9e144a438f6bdf89fba6a1fdcb614b6d03bc14433bbb937088ca7c7a7b6d: Pulling from library/debian
696098ac4087: Pull complete 
Digest: sha256:89ff9e144a438f6bdf89fba6a1fdcb614b6d03bc14433bbb937088ca7c7a7b6d
Status: Downloaded newer image for debian@sha256:89ff9e144a438f6bdf89fba6a1fdcb614b6d03bc14433bbb937088ca7c7a7b6d
Tagging debian@sha256:89ff9e144a438f6bdf89fba6a1fdcb614b6d03bc14433bbb937088ca7c7a7b6d as debian:stable-slim
root@disp9131:~# 

root@disp9131:~# ls $HOME/.docker/trust/tuf/docker.io/library
debian
root@disp9131:~# 

root@disp9131:~# docker pull ubuntu:latest
Pull (1 of 1): ubuntu:latest@sha256:bc2f7250f69267c9c6b66d7b6a81a54d3878bb85f1ebb5f951c896d13e6ba537
sha256:bc2f7250f69267c9c6b66d7b6a81a54d3878bb85f1ebb5f951c896d13e6ba537: Pulling from library/ubuntu
d72e567cc804: Pull complete 
0f3630e5ff08: Pull complete 
b6a83d81d1f4: Pull complete 
Digest: sha256:bc2f7250f69267c9c6b66d7b6a81a54d3878bb85f1ebb5f951c896d13e6ba537
Status: Downloaded newer image for ubuntu@sha256:bc2f7250f69267c9c6b66d7b6a81a54d3878bb85f1ebb5f951c896d13e6ba537
Tagging ubuntu@sha256:bc2f7250f69267c9c6b66d7b6a81a54d3878bb85f1ebb5f951c896d13e6ba537 as ubuntu:latest
root@disp9131:~# 

root@disp9131:~# ls $HOME/.docker/trust/tuf/docker.io/library
debian  ubuntu
root@disp9131:~# 

ПРЕДУПРЕЖДЕНИЕ! Обратите внимание, что доверие к содержимому докеров по умолчанию отключено. Даже после того, как он включен, он будет молча загружать и безмолвно доверять любым полученным корневым ключам. Следовательно, если вы используете Docker в эфемерной системе сборки, которая запускается заново при каждом выполнении, то DCT полностью представляет собой театр безопасности и будет уязвим для атак MITM при каждом запуске.

Смотрите также

  1. https://docs-stage.docker.com/engine/security/trust/content_trust/
  2. https://github.com/docker/cli/issues/2752
  3. Инициализация доверия Docker
  4. https://security.stackexchange.com/questions/238529/how-to-list-all-of-the-known-root-keys-in-docker-docker-content-trust
Другие вопросы по тегам