GNU/Linux >> Belajar Linux >  >> Panels >> Docker

Cara Menandatangani Gambar Docker Anda untuk Meningkatkan Kepercayaan

Sebagian besar gambar Docker didistribusikan tanpa verifikasi apa pun yang mereka klaim. Anda dapat meningkatkan kepercayaan pada gambar Anda dengan menandatanganinya secara digital. Ini membuktikan kepada pengguna bahwa Anda memublikasikan gambar, bukan penipu.

Sistem penandatanganan Docker dikenal sebagai kepercayaan konten. Itu terungkap melalui docker trust perintah CLI. Content Trust menggunakan kumpulan kunci untuk memungkinkan registry memverifikasi identitas calon penerbit. Pengguna gambar yang ditandatangani dapat yakin bahwa gambar tersebut berasal dari sumber yang diharapkan.

Membuat Kunci

Anda memerlukan pasangan kunci untuk mulai menggunakan Content Trust. Pasangan kunci dapat dikeluarkan oleh otoritas sertifikat atau dihasilkan oleh CLI Docker.

Jalankan docker trust key generate your-name untuk membuat kunci. Anda akan diminta untuk memasukkan frasa sandi. Ini perlu diberikan setiap kali Anda menggunakan kunci untuk menandatangani atau memverifikasi gambar. Tekan enter pada setiap prompt untuk melanjutkan.

Setelah selesai, dua file akan dibuat di ~/.docker/trust :kunci pribadi dan kunci publik yang sesuai. Sama halnya dengan kunci SSH, kunci pribadi tidak boleh dibagikan dan tidak boleh hilang. Jika Anda perlu berpindah antar mesin, Anda dapat mengimpor file kunci pribadi ke instalasi Docker lain menggunakan docker trust key load my-key.pem .

Menambahkan Kunci Publik Anda ke Registri Anda

Docker Hub mendukung semua fitur docker trust . Jika Anda menggunakan server Docker Registry pribadi, diperlukan proses penyiapan yang lebih rumit.

Server Registry tidak menawarkan dukungan tanda tangan bawaan. Anda memerlukan layanan Docker Notary terpisah yang menangani verifikasi tanda tangan untuk push dan pull gambar. Notaris memiliki tiga komponen, server, layanan penandatanganan, dan database MySQL. Itu harus diterapkan pada URL yang sama dengan server registri Anda.

Anda dapat mengaktifkan dan menjalankan Notaris dengan menggunakan file Docker Compose-nya:

git clone https://github.com/theupdateframework/notary.git
docker-compose up -d

Penerapan dasar ini akan berjalan dengan sertifikat TLS yang ditandatangani sendiri. Ini dimaksudkan untuk penggunaan pengembangan saja. Anda harus mempercayai file otoritas sertifikat fixtures/root-ca.crt di repositori sebelum klien berhasil terhubung.

sudo mkdir -p /usr/share/ca-certificates/extra
sudo cp fixtures/root-ca.crt /usr/share/ca-certificates/extra/notary.crt
sudo update-ca-certificates

Perintah di atas akan menyalin file sertifikat ke ca-certificates lokasi penyimpanan. update-ca-certificates memuat ulang semua sertifikat, menambahkan otoritas Notaris ke sistem Anda.

Jika Anda akan menjalankan Notaris dalam produksi, Anda harus menyiapkan autentikasi sehingga hanya pengguna yang berwenang yang dapat menambahkan kunci baru. NOTARY_AUTH variabel lingkungan harus disetel saat memulai layanan dengan docker-compose . Ini menerima kredensial yang disandikan Base64 di username:password format. Anda akan diminta untuk memberikan ini saat berinteraksi dengan Notaris.

export NOTARY_AUTH=$(echo "username" | base64):$(echo "password" | base64)
docker-compose up -d

Sekarang Anda siap untuk menambahkan kunci publik Anda ke server Notaris Anda. Kunci ditambahkan pada basis per-repositori. Ini memungkinkan Anda mengisolasi gambar dari satu sama lain dan memungkinkan dukungan untuk kontributor pihak ketiga yang didelegasikan. Anda dapat menambahkan orang lain dengan hak publikasi nanti dengan meminta mereka mengulangi perintah dengan kunci pribadi mereka.

docker trust signer add your-key-name registry.example.com/my-image

Anda harus memasukkan frasa sandi kunci. Kemudian akan tersedia di server registri Anda.

Menandatangani Gambar

Setelah kunci Anda ada di registri, Anda dapat mulai menandatangani gambar. Gunakan docker trust sign memerintah. Pastikan setiap gambar diberi tag dengan URL registri yang benar.

docker trust sign registry.example.com/my-image:latest

Perintah ini akan menandatangani gambar dengan kunci Anda dan kemudian mendorongnya langsung ke registri. Tidak perlu menjalankan docker push secara manual setelah itu. Anda harus menyiapkan kunci repositori dan frasa sandi untuk melindungi data kepercayaan masing-masing gambar. Ikuti setiap perintah untuk menyiapkan kunci penandatanganan Anda.

Jika Anda sudah memiliki alur kerja menggunakan docker push , Anda dapat memilih perintah itu alih-alih docker trust . Selesaikan langkah-langkah sebelumnya untuk membuat kunci dan menambahkannya ke Notaris. Setel DOCKER_CONTENT_TRUST variabel lingkungan agar perintah Docker CLI mendeteksi Kepercayaan Konten dan menerapkannya secara otomatis.

export DOCKER_CONTENT_TRUST=1
docker push registry.example.com/my-image:latest

Anda akan melihat output shell cocok dengan docker trust sign menghasilkan. Docker melakukan tindakan yang sama seperti perintah yang lebih eksplisit.

Memverifikasi Gambar Tepercaya

DOCKER_CONTENT_TRUST variabel muncul kembali dengan kepentingan yang lebih besar dalam hal memverifikasi gambar yang Anda tarik. Docker tidak mencoba memverifikasi gambar secara default, meskipun gambar tersebut berisi data kepercayaan. Anda harus menyetel variabel lingkungan di shell Anda untuk mengaktifkan validasi kepercayaan konten.

export DOCKER_CONTENT_TRUST=1
docker pull registry.example.com/my-image:latest

Ketika variabel disetel, semua penarikan gambar akan diperiksa di server Notaris registri mereka. Jika Notaris tidak dapat memberikan data kepercayaan apa pun, gambar diperlakukan sebagai tidak ditandatangani dan penarikan akan dibatalkan. Ini melindungi Anda dari gambar yang dipublikasikan oleh aktor jahat yang menyamar sebagai penerbit asli.

Pengguna Docker Enterprise dapat mengonfigurasi pengaturan daemon opsional untuk mencegah Docker Engine bekerja dengan gambar tidak tepercaya yang sudah ada di host. Ini mungkin telah tiba di tar arsip dari sumber yang tidak aman.

Edit /etc/docker/daemon.json dan tambahkan kunci berikut:

{
    "content-trust": {
        "mode": "enforced"
    }
}

Muat ulang konfigurasi daemon Docker dengan systemctl reload docker untuk menerapkan perubahan.

Anda dapat memeriksa status kepercayaan suatu gambar menggunakan docker trust inspect . Ini akan menunjukkan tanda tangan yang terkait dengan gambar, memungkinkan Anda untuk memeriksa apakah itu telah ditandatangani.

docker trust inspect registry.example.com/my-image:latest

Jika Anda telah memublikasikan gambar yang tidak ingin Anda tanda tangani lagi, gunakan docker trust revoke memerintah. Ini akan menghapus data kepercayaan gambar, menyebabkannya gagal semua verifikasi klien Docker berikutnya.

docker trust revoke registry.example.com/my-image:latest

Ringkasan

Docker Content Trust menambahkan tanda tangan digital ke ekosistem Docker, meningkatkan keamanan saat menggunakan gambar. Jika Anda mendorong gambar ke Docker Hub, Anda sudah mendapatkan semua yang Anda butuhkan untuk menggunakan fitur ini. Setel DOCKER_CONTENT_TRUST variabel lingkungan dan gunakan perintah Docker seperti biasa.

Untuk pengguna registri yang dihosting sendiri, penyiapannya lebih rumit tetapi tetap sepadan dengan usaha di lingkungan yang kritis terhadap kepercayaan. Pada saat penulisan, Notaris masih belum mendapatkan rilis resmi yang stabil dan dokumentasinya ada di repositori GitHub-nya.


Docker
  1. Cara Memindahkan Gambar Docker antar Host

  2. Cara Memodifikasi Gambar Docker

  3. Cara Menginstal Nextcloud dengan Docker di Server Linux Anda

  1. Cara Mencari, Menarik, Mendaftar &Menghapus Gambar Docker di Linux

  2. Cara Menggunakan Gambar Docker, Wadah, dan File Docker Secara Mendalam

  3. Pengantar Gambar Docker

  1. Cara Menganalisis Dan Menjelajahi Isi Gambar Docker

  2. Cara Mengatur Pembuatan Otomatis untuk Gambar Docker di GitHub

  3. Cara Berbagi Gambar Docker Dengan Orang Lain