Docker-tartalom megbízhatósága

Azure DevOps Services

A Docker Content Trust (DCT) lehetővé teszi, hogy digitális aláírásokat használjon a távoli Docker-adatbázisokba küldött és fogadott adatokhoz. Ezek az aláírások lehetővé teszik az ügyféloldali vagy futtatókörnyezeti ellenőrzést az adott rendszerképcímkék integritásának és közzétevőjének ellenőrzéséhez.

Megjegyzés

A rendszerképek aláírásának előfeltétele a Csatolt Jegyző kiszolgálóval rendelkező Docker Registry (például Docker Hub vagy Azure Container Registry)

Rendszerképek aláírása az Azure Pipelinesban

Előfeltételek a fejlesztői gépen

  1. Használja a Docker trust beépített generátorát, vagy hozzon létre manuálisan delegálási kulcspárt. Ha a beépített generátort használja, a delegálási titkos kulcs a helyi Docker megbízhatósági tárolóba lesz importálva. Máskülönben a titkos kulcsot manuálisan kell importálni a helyi Docker megbízhatósági tárolóba. Részletekért lásd: Kulcsok manuális létrehozása .
  2. A fenti lépésben létrehozott delegálási kulcs használatával töltse fel az első kulcsot egy delegálásba, és indítsa el az adattárat

Tipp

A helyi delegálási kulcsok listájának megtekintéséhez futtassa a következő parancsot a Közjegyzői parancssori felületen: $ notary key list.

Folyamat beállítása lemezképek aláírásához

  1. Szerezze be a delegálási titkos kulcsot, amely a korábban használt fejlesztői gép helyi Docker megbízhatósági tárolójában található, és adja hozzá ugyanazt, mint egy biztonságos fájlt a Pipelinesban.

  2. Engedélyezze ezt a biztonságos fájlt az összes folyamatban való használatra.

  3. A társított containerRegistryServiceConnection szolgáltatásnévnek rendelkeznie kell az AcrImageSigner szerepkörrel a céltároló beállításjegyzékében.

  4. Hozzon létre egy folyamatot a következő YAML-kódrészlet alapján:

    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)
    

    Az előző példában a változót DOCKER_CONFIG a login Docker-feladat parancsa állítja be. Javasoljuk, hogy állítson be DOCKER_CONTENT_TRUST_REPOSITORY_PASSPHRASEtitkos változót a folyamathoz. A folyamatváltozó YAML-ben való használatának alternatív megközelítése egyszerű szövegben teszi elérhetővé a jelszót. DOCKER_CONTENT_TRUST_REPOSITORY_PASSPHRASE ebben a példában a titkos kulcs jelszavára hivatkozunk (nem az adattár jelszavára). Ebben a példában csak a titkos kulcs jelszavára van szükségünk, mert az adattár már elindult (előfeltételek).