Как использовать команду docker trust signer add для добавления подписанта

DockerDockerBeginner
Практиковаться сейчас

💡 Этот учебник переведен с английского с помощью ИИ. Чтобы просмотреть оригинал, вы можете перейти на английский оригинал

Введение

В этом практическом занятии (лабораторной работе) вы узнаете, как управлять подписантами для Docker-репозиториев с использованием Docker Content Trust. Мы начнем с проверки текущих подписантов репозитория, чтобы понять, кто имеет право подписывать образы.

После проверки вы узнаете, как добавить нового подписанта в репозиторий с помощью команды docker trust signer add. Наконец, вы убедитесь, что новый подписант успешно добавлен, тем самым гарантируя, что теперь другое лицо может подписывать образы для этого репозитория.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL docker(("Docker")) -.-> docker/ContainerOperationsGroup(["Container Operations"]) docker/ContainerOperationsGroup -.-> docker/inspect("Inspect Container") subgraph Lab Skills docker/inspect -.-> lab-555256{{"Как использовать команду docker trust signer add для добавления подписанта"}} end

Проверка текущих подписантов репозитория

На этом этапе мы узнаем, как проверить текущих подписантов Docker-репозитория. Docker Content Trust позволяет вам проверять целостность и издателя используемых вами образов. Подписанты - это субъекты, имеющие право подписывать образы для определенного репозитория.

Сначала включим Docker Content Trust. Для этого установите переменную окружения DOCKER_CONTENT_TRUST в значение 1.

export DOCKER_CONTENT_TRUST=1

Теперь, когда Content Trust включен, при скачивании (pull) образа Docker проверит его подпись. Если образ не подписан или подпись недействительна, операция скачивания завершится неудачно.

Для проверки текущих подписантов репозитория используем команду docker trust signer. Мы проверим подписантов для репозитория library/ubuntu, который представляет собой известный официальный образ.

docker trust signer library/ubuntu

Эта команда выведет список подписантов, связанных с репозиторием library/ubuntu. Вы увидите вывод, похожий на следующий, показывающий имя подписанта и его идентификатор ключа:

Signers for library/ubuntu

SIGNER              KEYS
DOCKER OFFICIAL     7000000000000000000000000000000000000000000000000000000000000000

Вывод показывает, что репозиторий library/ubuntu подписан "DOCKER OFFICIAL" с использованием определенного идентификатора ключа. Это подтверждает, что образ, который вы скачиваете из этого репозитория, официально подписан Docker.

Добавление нового подписанта в репозиторий

На этом этапе мы узнаем, как добавить нового подписанта в Docker-репозиторий. Это полезно, когда вы хотите разрешить другой стороне или системе подписывать образы для вашего репозитория.

Перед добавлением подписанта вам нужно иметь подпись ключ. Если у вас его нет, вы можете сгенерировать новую пару ключей с помощью команды docker trust key generate. В рамках этого практического занятия (лабораторной работы) мы предполагаем, что у вас есть пара ключей.

Для добавления нового подписанта используем команду docker trust signer add. Эта команда требует указания имени нового подписанта, имени репозитория и пути к открытому ключу нового подписанта.

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

echo "-----BEGIN PUBLIC KEY-----
MFkwEwYHKoZIzj0AQICYQADggEPADRUb2tlbiBmb3IgYSB0ZXN0IHNpZ25lcg==
-----END PUBLIC KEY-----" > ~/project/new_signer.pub

Эта команда создает файл с именем new_signer.pub в каталоге ~/project с некоторым фиктивным содержимым открытого ключа.

Теперь добавим нового подписанта с именем my-new-signer в гипотетический репозиторий your-dockerhub-user/my-image. Замените your-dockerhub-user на свое имя пользователя в Docker Hub, если вы выполняете это с реальным репозиторием. В рамках этого практического занятия мы используем заполнитель.

docker trust signer add my-new-signer your-dockerhub-user/my-image --key ~/project/new_signer.pub

Вам будет предложено ввести пароль для корневого ключа репозитория. Это мера безопасности, чтобы убедиться, что только авторизованные пользователи могут добавлять подписантов. Поскольку это лабораторная среда и мы не взаимодействуем с реальным Docker-реестр, вы можете ввести фиктивный пароль.

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

Adding signer "my-new-signer" to your-dockerhub-user/my-image...
Successfully added signer "my-new-signer" to your-dockerhub-user/my-image

Эта команда обновляет доверительные данные для указанного репозитория в Docker-реестр, добавляя открытый ключ нового подписанта.

Проверка добавления нового подписанта

На этом этапе мы проверим, что новый подписант, добавленный на предыдущем этапе, был успешно добавлен в доверительные данные репозитория.

Для этого мы снова используем команду docker trust signer, как и на первом этапе при проверке исходных подписантов. На этот раз мы проверим подписантов для репозитория, в который мы добавили нового подписанта.

Помните, что мы добавили подписанта my-new-signer в гипотетический репозиторий your-dockerhub-user/my-image. Проверим подписантов для этого репозитория. Не забудьте заменить your-dockerhub-user на заполнитель, использованный на предыдущем этапе.

docker trust signer your-dockerhub-user/my-image

Эта команда запросит у Docker-реестра доверительные данные, связанные с репозиторием your-dockerhub-user/my-image, и выведет список всех подписантов.

Теперь вы должны увидеть вывод, который включает как исходного подписанта (если он был), так и нового подписанта my-new-signer, добавленного на предыдущем этапе. Вывод покажет имя каждого подписанта и соответствующий ему идентификатор ключа.

Signers for your-dockerhub-user/my-image

SIGNER              KEYS
my-new-signer       <key ID of the new signer>

Присутствие my-new-signer в выводе подтверждает, что подписант был успешно добавлен в доверительные данные репозитория. Это означает, что образы, подписанные с использованием открытого ключа, связанного с my-new-signer, теперь будут считаться доверенными для этого репозитория при включенном Docker Content Trust.

Резюме

В рамках этого практического занятия (лабораторной работы) мы научились управлять подписантами для Docker-репозиториев с использованием Docker Content Trust. Мы начали с включения Docker Content Trust, чтобы обеспечить целостность образов и верификацию издателя. Затем мы практиковали проверку текущих подписантов репозитория, в частности образа library/ubuntu, с помощью команды docker trust signer, которая отображала существующего подписанта и его идентификатор ключа.

После проверки мы перешли к процессу добавления нового подписанта в репозиторий с использованием команды docker trust signer add. Этот этап является важным для разрешения другим субъектам подписывать образы для определенного репозитория. Хотя полные детали добавления подписанта не были предоставлены в выдержке, цель практического занятия - продемонстрировать эту возможность. Последний этап, проверка добавления нового подписанта, включает повторную проверку подписантов репозитория, чтобы убедиться, что новый подписант находится в списке, и тем самым подтвердить успешное завершение процесса.