Docker - Keselamatan

Hai sana, ahli keselamatan Docker masa depan! Saya begitu gembira untuk membimbing anda melalui dunia menarik keselamatan Docker. Sebagai seseorang yang telah mengajar sains komputer selama bertahun-tahun, saya dapat menjamin anda bahwa memahami keselamatan Docker tidak hanya penting tetapi juga sangat memuaskan. Jadi, mari kita mulai perjalanan ini bersama!

Docker - Security

Nama ruang kernel

Imajinilah anda di sebuah pesta besar, tetapi bukannya di satu ruangan besar, pesta itu terbagi menjadi beberapa ruangan kecil. Setiap ruangan memiliki musik, hiasan, dan tamu sendiri. Ini adalah esensi apa yang dilakukan nama ruang kernel dalam Docker!

Nama ruang kernel adalah fitur kernel Linux yang menyediakan isolasi untuk berbagai sumber daya sistem. Mereka menciptakan instance terpisah dari sumber daya sistem global sebelumnya yang dapat digunakan oleh proses dalam ruang nama itu.

Berikut adalah contoh sederhana tentang bagaimana membuat nama ruang baru dalam Docker:

docker run --rm -it --pid=host ubuntu ps aux

Perintah ini membuat sebuah kontainer baru dengan akses ke nama ruang PID host. mari kitauraikan ini:

  • docker run: Menjalankan kontainer baru
  • --rm: Secara otomatis menghapus kontainer saat itu keluar
  • -it: Menyediakan terminal interaktif
  • --pid=host: Membagi nama ruang PID host
  • ubuntu: Gambar dasar yang digunakan
  • ps aux: Perintah yang dijalankan dalam kontainer

Ketika anda menjalankan ini, anda akan melihat semua proses yang berjalan di sistem host anda, tidak hanya itu di kontainer. Ini menunjukkan bagaimana nama ruang dapat dimanipulasi untuk menyediakan pandangan berbeda dari sumber daya sistem.

Grup kendali (cgroups)

Grup kendali, atau cgroups, adalah seperti penjaga pesta kita. Mereka mengendalikan berapa banyak sumber daya host yang dapat digunakan oleh setiap kontainer.

Berikut adalah contoh tentang bagaimana mengbatasi penggunaan memori kontainer:

docker run -it --memory="512m" ubuntu

Perintah ini menjalankan sebuah kontainer Ubuntu dengan batasan memori 512 megabyte. mari kitauraikan ini:

  • docker run: Menjalankan kontainer baru
  • -it: Menyediakan terminal interaktif
  • --memory="512m": Mengatur batasan memori 512 megabyte
  • ubuntu: Gambar dasar yang digunakan

Luas Serangan Daemon Docker

Daemon Docker adalah seperti pusat kontrol utama pesta kita. Itu bertanggung jawab untuk mengelola semua kontainer, tetapi itu juga target potensial bagi penyerang.

Untuk meminimalkan luas serangan, selalu ikuti praktik terbaik berikut:

  1. Jalankan daemon Docker sebagai pengguna non-root jika memungkinkan
  2. Gunakan TLS untuk akses API jarak jauh
  3. Batasi akses jaringan ke soket Docker

Berikut adalah contoh tentang bagaimana mengaktifkan TLS untuk daemon Docker:

dockerd --tlsverify \
--tlscacert=ca.pem \
--tlscert=server-cert.pem \
--tlskey=server-key.pem \
-H=0.0.0.0:2376

Perintah ini menjalankan daemon Docker dengan verifikasi TLS diaktifkan.

Kemampuan Kernel Linux

Kemampuan Linux adalah seperti kekuatan khusus yang diberikan kepada proses. Docker menggunakan ini untuk memberikan kontrol halus tentang apa yang dapat dilakukan kontainer.

Berikut adalah contoh tentang bagaimana menambahkan kemampuan ke kontainer:

docker run --cap-add=NET_ADMIN ubuntu

Perintah ini menjalankan sebuah kontainer Ubuntu dengan kemampuan NET_ADMIN ditambahkan. Ini memungkinkan kontainer untuk melakukan berbagai operasi jaringan.

Verifikasi Tanda Tangan Keselamatan Konten Docker

Keselamatan Konten Docker adalah seperti cap kesahihan untuk gambar Docker anda. Itu memastikan bahwa gambar yang anda gunakan adalah yang anda percayai.

Untuk mengaktifkan Keselamatan Konten Docker, anda dapat mengatur variabel lingkungan:

export DOCKER_CONTENT_TRUST=1

Dengan ini diatur, Docker hanya akan mengambil gambar yang ditandatangani.

Fitur Keselamatan Kernel Lainnya

Kernel Linux menyediakan beberapa fitur keselamatan lainnya yang digunakan oleh Docker:

  1. SELinux
  2. AppArmor
  3. Seccomp

Berikut adalah contoh tentang bagaimana menggunakan AppArmor dengan Docker:

docker run --security-opt apparmor=docker-default hello-world

Perintah ini menjalankan sebuah kontainer dengan profil AppArmor default Docker.

Praktik Keselamatan Docker Terbaik

Mari rangkum beberapa praktik keselamatan Docker kunci dalam tabel yang mudah:

Praktik Deskripsi
Tetapkan Docker diperbarui Selalu gunakan versi terbaru Docker
Batasi sumber daya kontainer Gunakan cgroups untuk membatasi CPU, memori, dan sumber daya lainnya
Gunakan gambar dasar terpercaya Hanya gunakan gambar Docker resmi atau yang diverifikasi
Pindai gambar untuk kerentanan Gunakan tools seperti Pindai Keselamatan Docker
Jangan jalankan kontainer sebagai root Gunakan perintah USER dalam Dockerfile anda
Aktifkan Keselamatan Konten Docker Setel DOCKER_CONTENT_TRUST=1
Gunakan kontainer hanya-baca Gunakan flag --read-only saat menjalankan kontainer
Batasi kemampuan kontainer Hanya tambahkan kemampuan yang diperlukan

Kesimpulan

Selamat! Anda baru saja mengambil langkah pertama ke dunia keselamatan Docker. Ingat, keselamatan bukanlah tugas sekali, tetapi sebuah proses berkelanjutan. Selalu tinggal diperbarui dengan praktik keselamatan terbaru dan terus belajar.

FAQ

  1. Q: Apakah Docker aman secara default? A: Docker menyediakan level keselamatan yang bagus secara default, tetapi penting untuk mengikuti praktik terbaik untuk keselamatan optimal.

  2. Q: Apakah kontainer dapat melarikan diri dan mengakses sistem host? A: Meskipun pelarian kontainer adalah mungkin, mengikuti praktik keselamatan yang tepat secara signifikan mengurangi risiko ini.

  3. Q: Berapa sering saya harus memperbarui Docker? A: Direkomendasikan untuk memperbarui Docker segera setelah versi baru dirilis untuk memastikan Anda memiliki patch keselamatan terbaru.

  4. Q: Apakah gambar Docker resmi aman untuk digunakan? A: Gambar resmi biasanya aman, tetapi tetaplah memeriksa kerentanan sebelum penggunaan.

  5. Q: Bagaimana saya bisa belajar lebih banyak tentang keselamatan Docker? A: Docker menyediakan dokumentasi ekstensif tentang keselamatan. Selain itu, berpartisipasi dalam komunitas Docker dan menghadiri workshop adalah cara bagus untuk memperdalam pengetahuan anda.

Ingat, dunia keselamatan Docker luas dan selalu berubah. Terus mengeksplor, terus belajar, dan terutama, jaga keselamatan kontainer anda!

Credits: Image by storyset