Belajar Docker Bagian 11
Eko Susilo Harjo October 4, 2024

Keamanan Docker merupakan hal krusial yang tidak boleh diabaikan dalam setiap proses pengembangan dan deployment aplikasi. Meskipun Docker menawarkan isolasi container yang baik, ada beberapa langkah penting yang harus diterapkan untuk melindungi lingkungan Anda dari risiko keamanan. Artikel ini akan membahas best practices dalam keamanan Docker, penggunaan Docker Bench for Security, serta penerapan prinsip least privilege dalam mengelola Docker containers.
Menjaga Keamanan Docker Containers
Docker container memungkinkan kita untuk menjalankan aplikasi di lingkungan yang terisolasi. Meskipun begitu, container tidak otomatis aman tanpa penerapan praktik-praktik keamanan yang baik. Beberapa langkah dasar yang bisa dilakukan untuk menjaga keamanan container Anda adalah sebagai berikut:
1. Menggunakan Image yang Terpercaya
Image Docker adalah komponen inti yang digunakan untuk menjalankan containers. Pastikan image yang Anda gunakan berasal dari sumber terpercaya seperti Docker Hub atau repository resmi lainnya. Menggunakan image dari sumber tidak terpercaya bisa membahayakan karena potensi adanya malware atau kerentanan dalam image tersebut.
Contoh:
- Gunakan image resmi:
docker pull nginx:alpine
- Hindari menggunakan image yang tidak dikenali atau tidak diverifikasi.
Selain itu, pastikan Anda selalu memperbarui image untuk mendapatkan patch keamanan terbaru.
2. Update Docker Secara Berkala
Seperti perangkat lunak lainnya, Docker juga menerima pembaruan berkala yang biasanya mencakup patch keamanan. Pastikan Docker di host Anda selalu menggunakan versi terbaru untuk menghindari kerentanan yang dapat dieksploitasi oleh attacker.
Untuk memperbarui Docker, Anda dapat menggunakan perintah berikut di Linux:
bashCopy codesudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io
3. Batasi Hak Akses dengan User Non-root
Secara default, container Docker berjalan sebagai user root, yang berisiko tinggi jika container dieksploitasi oleh attacker. Disarankan untuk menjalankan container sebagai user non-root untuk membatasi hak akses.
Contoh Dockerfile untuk menjalankan container dengan user non-root:
dockerfileCopy codeFROM ubuntu:20.04
RUN groupadd -r mygroup && useradd -r -g mygroup myuser
USER myuser
Dengan cara ini, jika terjadi eksploitasi, attacker tidak memiliki akses root ke sistem host.
Menggunakan Docker Bench for Security
Docker Bench for Security adalah tool open-source yang membantu mengidentifikasi konfigurasi Docker host Anda yang mungkin memiliki potensi risiko keamanan. Ini sangat berguna untuk memastikan bahwa konfigurasi Docker Anda sesuai dengan best practices keamanan.
1. Apa itu Docker Bench for Security?
Docker Bench for Security adalah skrip yang menjalankan serangkaian tes keamanan pada instalasi Docker Anda. Tes-tes ini mencakup pemeriksaan terhadap pengaturan Docker daemon, container, network, dan konfigurasi lainnya.
2. Cara Menggunakan Docker Bench for Security
Anda dapat menjalankan Docker Bench for Security di host Docker dengan cara sebagai berikut:
bashCopy codedocker run -it --net host --pid host --cap-add audit_control \
--label docker_bench_security \
docker/docker-bench-security
Setelah dijalankan, Docker Bench akan menampilkan laporan yang merinci temuan-temuan terkait keamanan, serta memberikan rekomendasi untuk memperbaiki konfigurasi yang tidak aman.
Contoh hasil yang bisa Anda dapatkan:
- Pengaturan Docker Daemon: Jika daemon Docker dijalankan dengan parameter yang tidak aman, alat ini akan memberitahu Anda untuk mengubah konfigurasinya.
- Kontainer Tanpa Batasan Resource: Docker Bench akan mengingatkan jika container dijalankan tanpa membatasi resource CPU atau memori, yang bisa menjadi titik serangan.
Menerapkan Least Privilege di Docker Containers
Prinsip least privilege adalah memberikan hak akses paling minimal yang diperlukan oleh aplikasi atau proses untuk melakukan tugasnya. Ini penting diterapkan di Docker untuk mengurangi risiko jika ada container yang berhasil dieksploitasi.
1. Batasi Kapabilitas yang Tidak Diperlukan
Docker memberikan banyak kapabilitas kernel kepada container secara default. Anda bisa membatasi kapabilitas tersebut hanya pada yang benar-benar diperlukan menggunakan flag --cap-drop
dan --cap-add
.
Contoh:
bashCopy codedocker run --cap-drop ALL --cap-add NET_ADMIN nginx
Dalam contoh di atas, semua kapabilitas di-drop kecuali NET_ADMIN, yang dibutuhkan untuk konfigurasi jaringan.
2. Jalankan Container dengan Filesystem Read-Only
Jika aplikasi Anda tidak memerlukan hak akses tulis ke filesystem, Anda bisa menjalankan container dengan filesystem read-only. Ini akan mempersulit attacker dalam mengubah file di dalam container.
Contoh perintah untuk menjalankan container dengan read-only filesystem:
bashCopy codedocker run --read-only nginx
Dengan cara ini, aplikasi di dalam container tetap dapat berjalan, tetapi attacker tidak bisa memodifikasi file di dalam container.
3. Batasi Akses ke Network
Jika container tidak membutuhkan akses ke jaringan eksternal, Anda bisa memisahkannya dari jaringan untuk meningkatkan keamanan. Docker menyediakan beberapa opsi networking yang bisa Anda gunakan untuk membatasi akses container.
Contoh perintah untuk menjalankan container tanpa akses ke internet:
bashCopy codedocker run --network none nginx
Dengan isolasi jaringan ini, container tetap bisa berkomunikasi dengan container lain di dalam host yang sama, namun tidak dapat terhubung ke internet.
Best Practices Tambahan dalam Keamanan Docker
- Jangan Menggunakan Container yang Sudah Dikonfigurasi Sebagai Root
- Jalankan semua aplikasi di dalam container dengan user yang memiliki hak akses minimal.
- Gunakan Docker Secrets untuk Menyimpan Data Sensitif
- Hindari menyimpan password atau secret langsung di dalam environment variable. Gunakan Docker Secrets untuk mengelola data sensitif dengan aman.
- Selalu Scanning Image untuk Kerentanan
- Gunakan tools seperti Trivy atau Clair untuk memindai image Docker dari potensi kerentanan sebelum menggunakannya.
Kesimpulan
Menjaga keamanan Docker container memerlukan pendekatan yang disiplin dan konsisten. Dengan menggunakan image terpercaya, membatasi hak akses, dan menerapkan tools seperti Docker Bench for Security, Anda bisa meminimalkan risiko dan menjaga aplikasi Anda tetap aman. Penerapan prinsip least privilege dan pembatasan resource container adalah langkah-langkah penting untuk memperkuat keamanan secara menyeluruh. Dengan mengikuti best practices ini, Anda dapat menjaga container Docker Anda aman dari ancaman eksternal dan potensi serangan.
Discover more from teknologi now
Subscribe to get the latest posts sent to your email.