Akhirnya, Anda sangat mencintai Docker sehingga Anda ingin memindahkan sistem produksi kritis bisnis online Anda dengan data pelanggan yang sensitif ke Docker Swarm. Beberapa bahkan mungkin sudah melakukannya. Organisasi lain tidak mampu membelinya dengan kebijakan yang melarang proses produksi berjalan dalam mode root.
Apa yang bisa menjadi daftar periksa blok bangunan untuk dipertimbangkan bagi lingkungan produksi Docker? Seseorang tidak membutuhkan semuanya, tetapi semuanya harus penting untuk dinilai.
Penafian: Saya tahu ada kebijakan SE untuk menghindari "daftar besar tanpa akhir" tetapi saya pikir daftar periksa ini tidak boleh terlalu besar ... dan tidak ada habisnya sekarang.
Jadi - apa blok bangunan ini?
- Jika belum dikerahkan, pertimbangkan untuk menjalankan sistem host Linux dengan pengaturan keamanan tingkat lanjut - kernel yang diperkeras, SELinux dll.
- Pertimbangkan untuk menggunakan gambar dasar Docker yang kecil, seperti alpine, busybox, atau bahkan goresan misalnya, mulailah dengan gambar dasar yang kosong
- Gunakan pengaturan USER selain root
- Hati-hati menilai untuk lebih lanjut mengurangi set kemampuan kernel yang sudah menyusut yang diberikan kepada container
- Pertimbangkan hanya memiliki satu biner yang dapat dieksekusi per kontainer untuk meluncurkan proses Anda, yang terhubung secara ideal
- Mereka yang ingin membobol sistem Anda untuk mendapatkan akses shell mungkin bertanya-tanya apakah mereka menemukan wadah Anda telah menonaktifkan semua shell
- Pasang volume hanya baca jika hanya memungkinkan
Pertanyaan: apa lagi?
devsecops
?Consider using a tiny Docker base image, like alpine, busybox or even scratch e.g. start with an empty base image
meningkatkan keamanan?Jawaban:
Tuan rumah di mana wadah berjalan
Jalankan bangku keamanan buruh pelabuhan di setiap simpul yang menjalankan wadah buruh pelabuhan https://github.com/docker/docker-bench-security
Menjalankan perintah berikut pada node yang menjalankan wadah buruh pelabuhan:
mengembalikan daftar cek:
Kutipan dari repositori README:
Beberapa masalah yang dilaporkan oleh bangku keamanan dapat diselesaikan dengan membaca artikel keamanan buruh pelabuhan resmi dan membandingkannya dengan peluru yang didefinisikan dalam pertanyaan hal-hal berikut juga penting:
DOCKER_CONTENT_TRUST
variabelsumber
Docker masih dalam pengembangan.
Seperti halnya setiap bug perangkat lunak lain di-dev akan terjadi, fitur tidak aman mungkin ditambahkan, mungkin ada kekurangan arsitektur yang mengarah pada pelanggaran keamanan. Jangan meremehkan ini! Sistem Anda mungkin benar-benar aman hari ini, tetapi dengan tambalan mulai minggu depan seseorang menemukan bug, menulis exploit, dan tiba-tiba sistem Anda terbuka lebar.
Kecuali Anda harus, jangan perbarui ke versi terbaru. Sebaliknya, gunakan versi teruji yang terbaru.
Docker bukan virtualisasi
Jika seseorang melarikan diri dari wadah Docker, penyerang itu ada di mesin yang sebenarnya segera. Tidak ada gerbang kedua seperti virtualisasi yang akan mencegah pelanggaran.
Perlakukan wadah Docker seperti program lain. Jalankan dengan hak pengguna serendah mungkin, blok semua lalu lintas jaringan yang tidak diperlukan, virtualkan seluruh host Docker jika kinerja memungkinkan.
Docker tidak ada perlindungan
Kode apa pun yang dijalankan di dalam wadah Docker dijalankan tanpa pertanyaan dari Docker. Penyerang apa pun dapat menginstal perangkat lunaknya di dalam wadah, dan Docker akan menjalankannya seperti kode lainnya.
Selain hal-hal yang Anda sebutkan dalam pertanyaan, pertimbangkan untuk menggunakan metrik dan peringatan untuk mendapatkan pemberitahuan jika ada gambar Docker yang melakukan hal-hal aneh. Apakah ada lonjakan CPU yang tiba-tiba dan berkelanjutan? Apakah program tiba-tiba memindai port jaringan? Apakah ada akses disk yang mencurigakan? Anda harus mendapatkan pemberitahuan jika semua itu terjadi. Ada banyak alat yang tersedia untuk mengukur hal-hal ini, Anda harus menggunakannya.
sumber
Gambar Docker itu sendiri
Opsi tambahan adalah menggunakan Clair .
sumber
Selain poin di utas ini; berikut ini akan menjadi rekomendasi saya:
sumber
Jika Anda mengisi titik masuk buruh pelabuhan dengan
sed
perintah, pertimbangkan praktik ini:Confd akan membaca data dari banyak toko nilai kunci yang didukung dan membuat templat konfigurasi secara dinamis.
sumber
Seseorang dapat menggunakan A2D untuk memanggang aplikasi menjadi gambar buruh pelabuhan sambil mempertimbangkan hal-hal tertentu, misalnya non-root, izin, lokasi aplikasi:
pengembalian:
sumber