Důvěryhodnost obsahu Dockeru
Azure DevOps Services
Docker Content Trust (DCT) umožňuje používat digitální podpisy pro data odesílaná do vzdálených registrů Dockeru a přijatá ze vzdálených registrů Dockeru. Tyto podpisy umožňují ověření integrity a vydavatele konkrétních značek image na straně klienta nebo za běhu.
Poznámka
Předpokladem pro podepsání image je registr Dockeru s připojeným serverem notáře (mezi příklady patří Docker Hub nebo Azure Container Registry).
Podepisování imagí v Azure Pipelines
Požadavky na počítač pro vývoj
- Použijte integrovaný generátor důvěryhodnosti Dockeru nebo ručně vygenerujte pár klíčů pro delegování. Pokud se použije integrovaný generátor , privátní klíč delegování se naimportuje do místního úložiště důvěryhodnosti Dockeru. V opačném případě bude potřeba privátní klíč ručně importovat do místního úložiště důvěryhodnosti Dockeru. Podrobnosti najdete v tématu Ruční generování klíčů .
- Pomocí klíče delegování vygenerovaného v předchozím kroku nahrajte první klíč do delegování a spusťte úložiště.
Tip
Pokud chcete zobrazit seznam místních klíčů delegování, pomocí rozhraní příkazového řádku Notary spusťte následující příkaz: $ notary key list
.
Nastavení kanálu pro podepisování imagí
Vezměte privátní klíč delegování, který je v místním úložišti důvěryhodnosti Dockeru vašeho vývojového počítače, který jste použili dříve, a přidejte stejný soubor jako zabezpečený soubor v Pipelines.
Autorizujte tento zabezpečený soubor pro použití ve všech kanálech.
Instanční objekt přidružený k
containerRegistryServiceConnection
musí mít roli AcrImageSigner v cílovém registru kontejneru.Vytvořte kanál založený na následujícím fragmentu kódu YAML:
pool: vmImage: 'Ubuntu 16.04' 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) arguments: '--disable-content-trust=false' - task: Docker@2 inputs: command: push containerRegistry: $(containerRegistryServiceConnection) repository: $(imageRepository) tags: | $(tag) arguments: '--disable-content-trust=false' env: DOCKER_CONTENT_TRUST_REPOSITORY_PASSPHRASE: $(DOCKER_CONTENT_TRUST_REPOSITORY_PASSPHRASE)
V předchozím příkladu je proměnná
DOCKER_CONFIG
nastavená příkazemlogin
v úloze Dockeru. Doporučujeme nastavitDOCKER_CONTENT_TRUST_REPOSITORY_PASSPHRASE
jako tajnou proměnnou pro váš kanál. Alternativní přístup k použití proměnné kanálu v YAML zveřejňuje přístupové heslo ve formátu prostého textu.DOCKER_CONTENT_TRUST_REPOSITORY_PASSPHRASE
v tomto příkladu odkazuje na heslo privátního klíče (ne na heslo úložiště). V tomto příkladu potřebujeme jenom heslo privátního klíče, protože úložiště už bylo inicializováno (požadavky).