Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Azure DevOps Services
Docker Content Trust (DCT) позволяет использовать цифровые подписи для данных, отправленных и полученных из удаленных реестров Docker. Эти сигнатуры позволяют проверить целостность и издателя определенных тегов изображений на стороне клиента или во время выполнения.
Замечание
Чтобы подписать образ, требуется реестр Docker с подключенным нотарионным сервером (например, Docker Hub или Реестр контейнеров Azure).
Подписывание образов в Azure Pipelines
Предварительные требования на компьютере разработки
- Используйте встроенный генератор Docker trust или вручную создайте пару ключей делегирования. Если используется встроенный генератор , закрытый ключ делегирования импортируется в локальное хранилище доверия Docker. В противном случае необходимо вручную импортировать закрытый ключ в локальное хранилище доверия Docker. Дополнительные сведения см. в разделе "Создание ключей вручную ".
- Используйте ключ делегирования, созданный на предыдущем шаге, чтобы загрузить первый ключ в делегирование и инициализировать репозиторий.
Подсказка
Чтобы просмотреть список ключей локального делегирования, используйте нотарийный интерфейс командной строки для выполнения следующей команды: $ notary key list
Настройка конвейера для подписывания образов
Получите закрытый ключ делегирования из локального хранилища доверия Docker на компьютере разработки и добавьте его в качестве безопасного файла в Pipelines.
Авторизовать данный безопасный файл для использования во всех конвейерах.
Учетная запись службы, связанная с
containerRegistryServiceConnection
, должна иметь роль AcrImageSigner в целевом реестре контейнеров.Создайте конвейер на основе следующего фрагмента КОДА YAML:
pool: vmImage: 'ubuntu-latest' variables: system.debug: true containerRegistryServiceConnection: serviceConnectionName imageRepository: foobar/content-trust tag: test steps: - task: Docker@2 inputs: command: login containerRegistry: $(containerRegistryServiceConnection) - task: DownloadSecureFile@1 name: privateKey inputs: secureFile: cc8f3c6f998bee63fefaaabc5a2202eab06867b83f491813326481f56a95466f.key - script: | mkdir -p $(DOCKER_CONFIG)/trust/private cp $(privateKey.secureFilePath) $(DOCKER_CONFIG)/trust/private - task: Docker@2 inputs: command: build Dockerfile: '**/Dockerfile' containerRegistry: $(containerRegistryServiceConnection) repository: $(imageRepository) tags: | $(tag) - task: Docker@2 inputs: command: push containerRegistry: $(containerRegistryServiceConnection) repository: $(imageRepository) tags: | $(tag) env: DOCKER_CONTENT_TRUST_REPOSITORY_PASSPHRASE: $(DOCKER_CONTENT_TRUST_REPOSITORY_PASSPHRASE) DOCKER_CONTENT_TRUST_ROOT_PASSPHRASE: $(rootPassphrase)
В предыдущем примере
DOCKER_CONFIG
переменная устанавливается командойlogin
в задаче Docker. НастройтеDOCKER_CONTENT_TRUST_REPOSITORY_PASSPHRASE
иDOCKER_CONTENT_TRUST_ROOT_PASSPHRASE
как секретные переменные для вашего конвейера.DOCKER_CONTENT_TRUST_REPOSITORY_PASSPHRASE
В этом примере ссылается на парольную фразу закрытого ключа (а не парольную фразу репозитория). В этом примере требуется только парольная фраза закрытого ключа, так как репозиторий уже был инициирован (предварительные требования).