Belajar Docker bagian 10
Eko Susilo Harjo October 3, 2024

Keamanan adalah aspek penting dalam semua proses pengembangan perangkat lunak, termasuk penggunaan Docker containers. Meskipun Docker memudahkan pengelolaan dan deployment aplikasi, ada beberapa langkah yang harus diambil untuk memastikan bahwa container Anda aman dari potensi serangan atau eksploitasi. Artikel ini akan membahas security best practices yang harus diterapkan ketika bekerja dengan Docker, serta bagaimana menggunakan tools seperti Docker Bench for Security dan menerapkan konsep least privilege untuk memperkuat keamanan.
Menjaga Keamanan Docker Containers
Container adalah lingkungan terisolasi, namun ini tidak berarti mereka kebal dari serangan. Beberapa praktik keamanan yang baik perlu diterapkan untuk menjaga container tetap aman.
1. Gunakan Image dari Sumber yang Terpercaya
Image Docker adalah komponen dasar dari setiap container. Memastikan Anda menggunakan image resmi dari Docker Hub atau registry terpercaya sangat penting untuk mengurangi risiko menggunakan image yang berisi malware atau kerentanan keamanan.
- Selalu gunakan image yang telah diverifikasi.
- Pastikan image yang Anda gunakan selalu diperbarui dengan patch keamanan terbaru.
- Gunakan image minimalis untuk meminimalkan permukaan serangan.
Sebagai contoh, daripada menggunakan ubuntu:latest
, Anda bisa memilih image yang lebih ringan seperti alpine:latest
, yang memiliki footprint lebih kecil dan lebih sedikit dependensi, sehingga risiko keamanan juga lebih rendah.
2. Jangan Jalankan Container sebagai Root
Secara default, container Docker dijalankan dengan hak akses root, yang berpotensi membuka celah keamanan. Disarankan untuk selalu menjalankan container dengan user yang tidak memiliki hak akses root.
Untuk mengatur user non-root di Dockerfile, Anda bisa menambahkan perintah berikut:
USER nonrootuser
Dengan langkah ini, jika ada eksploitasi atau serangan terhadap container, dampaknya dapat diminimalkan karena attacker tidak akan memiliki hak akses root.
3. Batasi Resource Usage dengan Cgroups
Docker memungkinkan Anda untuk membatasi penggunaan resource (CPU, memory) oleh container. Ini dapat mencegah overuse resource dan mencegah potensi serangan yang menggunakan container untuk menghabiskan resource server Anda.
Berikut adalah contoh bagaimana Anda dapat membatasi penggunaan CPU dan memory:
docker run --cpus="1.0" --memory="512m" nama_image
Dengan cara ini, Anda dapat memastikan bahwa container tidak mengambil alih semua resource host, sehingga host tetap stabil dan aman.
Menggunakan Docker Bench for Security
Untuk membantu memverifikasi bahwa konfigurasi Docker Anda aman, Anda dapat menggunakan Docker Bench for Security, alat open-source yang memeriksa apakah Docker host Anda mengikuti best practices keamanan.
1. Apa Itu Docker Bench for Security?
Docker Bench for Security adalah skrip yang menjalankan serangkaian tes pada instalasi Docker Anda untuk mengidentifikasi potensi risiko keamanan. Tes ini mencakup aspek-aspek seperti konfigurasi daemon Docker, permission, dan pengaturan container.
2. Cara Menggunakan Docker Bench for Security
Untuk menjalankan Docker Bench for Security, Anda bisa menjalankan perintah berikut di host Docker:
docker run -it --net host --pid host --cap-add audit_control \
--label docker_bench_security \
docker/docker-bench-security
Docker Bench for Security akan memberikan laporan yang berisi hasil tes dan rekomendasi perbaikan untuk mengamankan sistem Anda.
Sebagai contoh, jika tes menemukan bahwa Docker Daemon berjalan dengan permission yang terlalu longgar, Anda bisa segera memperbaikinya untuk mencegah celah keamanan.
Menerapkan Least Privilege di Docker Containers
Prinsip least privilege adalah praktik yang memberikan hak akses seminimal mungkin kepada user atau proses untuk melakukan tugas tertentu. Ini sangat penting untuk mengurangi dampak serangan.
1. Gunakan Kapabilitas yang Minimal
Docker memungkinkan Anda untuk memberikan container akses ke kapabilitas tertentu dari kernel. Namun, secara default, container diberi terlalu banyak kapabilitas, yang mungkin tidak dibutuhkan oleh aplikasi Anda.
Dengan menggunakan flag --cap-drop
dan --cap-add
, Anda dapat membatasi akses container hanya ke kapabilitas yang dibutuhkan. Contoh:
docker run --cap-drop ALL --cap-add NET_ADMIN nama_image
Contoh ini menghapus semua kapabilitas kecuali yang diperlukan untuk mengelola jaringan (NET_ADMIN
).
2. Gunakan Read-Only Filesystem
Jika aplikasi Anda tidak memerlukan akses tulis ke filesystem, sebaiknya Anda menjalankan container dengan filesystem read-only. Ini dapat mencegah attacker menulis file berbahaya ke dalam container jika terjadi serangan.
Contoh menjalankan container dengan read-only filesystem:
docker run --read-only nama_image
Dengan filesystem yang hanya bisa dibaca, aplikasi masih dapat berjalan, namun attacker tidak bisa menyuntikkan file berbahaya ke dalam container.
Best Practices dalam Pengelolaan Docker
Berikut adalah beberapa best practices tambahan yang perlu diperhatikan untuk menjaga keamanan Docker container Anda:
- Update Secara Berkala: Pastikan Docker, image, dan container Anda selalu diperbarui dengan patch terbaru.
- Scanning Image: Gunakan tools seperti Clair atau Trivy untuk melakukan scanning image terhadap kerentanan keamanan sebelum menggunakannya dalam production.
- Jangan Gunakan Bind Mounts: Hindari penggunaan bind mounts (mounting direktori dari host ke container) kecuali benar-benar diperlukan, karena ini bisa memberikan akses tidak aman ke filesystem host.
- Gunakan Network Isolation: Pisahkan container-container yang tidak memerlukan akses langsung ke jaringan yang sama. Dengan Docker Network, Anda bisa membuat jaringan yang lebih aman dan terisolasi untuk container-container sensitif.
Kesimpulan
Keamanan Docker container harus menjadi perhatian utama ketika Anda mengelola aplikasi dalam production. Dengan mengikuti best practices, seperti menggunakan image yang terpercaya, membatasi hak akses, dan memanfaatkan tools seperti Docker Bench for Security, Anda bisa memastikan bahwa container tetap aman dari ancaman luar.
Penerapan prinsip least privilege dan resource limiting juga memberikan lapisan keamanan tambahan yang memperkuat proteksi container Anda. Dengan langkah-langkah ini, Anda bisa mengurangi risiko keamanan dan menjaga lingkungan Docker Anda tetap aman dan efisien.
Discover more from teknologi now
Subscribe to get the latest posts sent to your email.