Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Servizi di Azure DevOps
Docker Content Trust (DCT) consente di usare firme digitali per i dati inviati e ricevuti da registri Docker remoti. Queste firme consentono di verificare l'integrità e l'autore di tag di immagine specifici sul lato client o in fase di esecuzione.
Annotazioni
Per firmare un'immagine, è necessario un Registro Docker con un server notario collegato (ad esempio Docker Hub o Registro Azure Container).
Firma di immagini in Azure Pipelines
Prerequisiti nel computer di sviluppo
- Usare il generatore predefinito di Docker trust o generare manualmente la coppia di chiavi di delega. Se viene usato il generatore predefinito , la chiave privata di delega viene importata nell'archivio trust Docker locale. In caso contrario, è necessario importare manualmente la chiave privata nell'archivio trust Docker locale. Per informazioni dettagliate, vedere Generazione manuale delle chiavi .
- Utilizzare la chiave di delega generata nel passaggio precedente per caricare la prima chiave per una delega e avviare il repository.
Suggerimento
Per visualizzare l'elenco delle chiavi di delega locale, usare l'interfaccia della riga di comando notaria per eseguire il comando seguente: $ notary key list
.
Configurare la pipeline per la firma delle immagini
Ottenere la chiave privata di delega dall'archivio trust Docker locale nel computer di sviluppo e aggiungerla come file sicuro in Pipelines.
Autorizzare questo file sicuro per l'uso in tutte le pipeline.
L'entità principale del servizio associata a
containerRegistryServiceConnection
deve avere il ruolo AcrImageSigner nel registro contenitori di destinazione.Creare una pipeline basata sul frammento YAML seguente:
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)
Nell'esempio precedente la
DOCKER_CONFIG
variabile viene impostata dallogin
comando nell'attività Docker. ConfigurareDOCKER_CONTENT_TRUST_REPOSITORY_PASSPHRASE
eDOCKER_CONTENT_TRUST_ROOT_PASSPHRASE
come variabili segrete per la pipeline.DOCKER_CONTENT_TRUST_REPOSITORY_PASSPHRASE
in questo esempio si riferisce alla passphrase della chiave privata (non alla passphrase del repository). In questo esempio è necessaria solo la passphrase della chiave privata perché il repository è già stato avviato (prerequisiti).