Kepercayaan Konten Docker
Azure DevOps
Docker Content Trust (DCT) memungkinkan Anda menggunakan tanda tangan digital untuk data yang dikirim dan diterima dari pendaftar Docker jarak jauh. Tanda tangan ini memungkinkan verifikasi sisi klien atau runtime integritas dan penerbit tag gambar tertentu.
Catatan
Prasyarat untuk menandatangani gambar adalah Docker Registry dengan server Notaris yang dilampirkan (contoh termasuk Docker Hub atau Azure Container Registry)
Menandatangani gambar di Azure Pipelines
Prasyarat pada mesin pengembangan
- Gunakan generator bawaan Docker trust atau buat pasangan kunci delegasi secara manual. Jika generator bawaan digunakan, kunci pribadi delegasi diimpor ke toko kepercayaan Docker lokal. Lain, kunci pribadi perlu diimpor secara manual ke toko kepercayaan Docker lokal. Lihat Membuat Kunci Secara Manual untuk detailnya.
- Menggunakan kunci delegasi yang dihasilkan dari langkah di atas, unggah kunci pertama ke delegasi dan mulai repositori
Tip
Untuk melihat daftar kunci Delegasi lokal, gunakan NOTARY CLI untuk menjalankan perintah berikut: $ notary key list.
Menyiapkan alur untuk menandatangani gambar
Ambil kunci pribadi delegasi, yang ada di toko kepercayaan Docker lokal dari mesin pengembangan Anda yang digunakan sebelumnya, dan tambahkan yang sama dengan file aman di Pipelines.
Otorisasi file aman ini untuk digunakan di semua alur.
Perwakilan layanan yang terkait dengan
containerRegistryServiceConnectionharus memiliki peran AcrImageSigner dalam registri kontainer target.Buat alur berdasarkan cuplikan YAML berikut:
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)Dalam contoh sebelumnya,
DOCKER_CONFIGvariabel diatur olehloginperintah dalam tugas Docker. Sebaiknya SiapkanDOCKER_CONTENT_TRUST_REPOSITORY_PASSPHRASEsebagai variabel rahasia untuk alur Anda. Pendekatan alternatif menggunakan variabel alur di YAML mengekspos frasa sandi dalam teks biasa. Kita hanya perlu frasa sandi repositori dalam contoh ini karena repositori telah dimulai (prasyarat).