Kepercayaan Konten Docker
Azure DevOps
Docker Content Trust (DCT) memungkinkan Anda menggunakan tanda tangan digital untuk data yang dikirim dan diterima dari registri 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 terpasang (contohnya termasuk Docker Hub atau Azure Container Registry)
Menandatangani gambar di Azure Pipelines
Prasyarat pada mesin pengembangan
- Gunakan generator bawaan kepercayaan Docker atau buat pasangan kunci delegasi secara manual. Jika generator bawaan digunakan, kunci privat delegasi diimpor ke penyimpanan kepercayaan Docker lokal. Jika tidak, kunci privat harus diimpor secara manual ke penyimpanan 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 privat delegasi, yang ada di penyimpanan kepercayaan Docker lokal dari komputer pengembangan Anda yang digunakan sebelumnya, dan tambahkan yang sama dengan file aman di Alur.
Otorisasi file aman ini untuk digunakan di semua alur.
Perwakilan layanan yang terkait dengan
containerRegistryServiceConnection
harus 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_CONFIG
variabel diatur olehlogin
perintah dalam tugas Docker. Kami menyarankan agar Anda menyiapkanDOCKER_CONTENT_TRUST_REPOSITORY_PASSPHRASE
sebagai variabel rahasia untuk alur Anda. Pendekatan alternatif menggunakan variabel alur di YAML mengekspos frasa sandi dalam teks biasa.DOCKER_CONTENT_TRUST_REPOSITORY_PASSPHRASE
dalam contoh ini mengacu pada frasa sandi kunci privat (bukan frase sandi repositori). Kita hanya memerlukan frasa sandi kunci privat dalam contoh ini karena repositori telah dimulai (prasyarat).