0Pricing
Cloud & IT Cert Prep · Pelajaran

Keamanan Kontainer: Penguatan Citra dan Perlindungan Runtime

Perkuat citra Docker dengan menghapus paket yang tidak diperlukan, menjalankannya sebagai pengguna non-root, dan menggunakan alat keamanan runtime (Falco, Sysdig) untuk mendeteksi perilaku kontainer yang anomali.

Keamanan Kontainer: Penguatan Citra dan Perlindungan Runtime adalah pelajaran Cloud & IT Cert Prep gratis di CoddyKit. Ini adalah pelajaran 1 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar Cloud & IT Cert Prep, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus Cloud & IT Cert Prep mencakup 4 pelajaran total.

Dasar-Dasar Keamanan Wadah

Wadah mengemas kode aplikasi dan dependensinya ke dalam unit terisolasi yang berbagi kernel OS host, berbeda dengan VM yang menyertakan OS tamu secara lengkap. Berbagi kernel ini membuat wadah ringan dan cepat, tetapi memperkenalkan model keamanan yang berbeda: kerentanan pelolosan wadah dapat memungkinkan penyerang keluar dari wadah dan mengakses kernel host secara langsung, sehingga memengaruhi semua wadah lainnya. Keamanan wadah berfokus pada tiga lapisan: citra (apa yang disertakan di dalamnya), runtime (apa yang dapat dilakukan wadah saat berjalan), dan platform orkestrasi (bagaimana wadah dikelola).

Citra Dasar Minimal: Mengurangi Permukaan Serangan

Setiap paket yang dipasang dalam citra wadah merupakan permukaan serangan yang potensial. Prinsip citra dasar minimal berarti memulai dari fondasi sekecil mungkin: Alpine Linux (5MB, paket minimal), citra tanpa distribusi (citra milik Google yang hanya berisi runtime dan aplikasi, tanpa shell atau pengelola paket), atau scratch (benar-benar kosong, untuk biner yang dikompilasi secara statis). Wadah tanpa shell berarti penyerang yang berhasil mengeksekusi kode tidak dapat dengan mudah menjalankan wget, curl, atau alat lain untuk memperluas serangan mereka—sebuah prinsip yang disebut pertahanan melalui paparan minimal.

# Bad: starts from a full OS image
FROM ubuntu:22.04

# Better: minimal Alpine base
FROM alpine:3.18

# Best: distroless for Java apps
FROM gcr.io/distroless/java17-debian11

Menjalankan sebagai Non-Root: Aturan Pertama

Secara bawaan, wadah Docker berjalan sebagai root (UID 0). Jika penyerang mengeksploitasi kerentanan dalam aplikasi yang ditempatkan di wadah, mereka memperoleh hak istimewa root di dalam wadah. Jika wadah berbagi volume atau memiliki pemasangan dari host, root di dalam wadah dapat berarti root pada host. Solusinya sederhana: buat pengguna khusus dalam Dockerfile dan beralih ke pengguna tersebut dengan direktif USER sebelum CMD/ENTRYPOINT terakhir. Banyak alat pemindaian keamanan wadah akan menandai citra apa pun yang tidak memiliki pengguna non-root sebagai temuan.

FROM alpine:3.18
RUN addgroup -S appgroup && adduser -S appuser -G appgroup
COPY --chown=appuser:appgroup app /app/app
USER appuser
CMD ["/app/app"]

Wadah yang Tidak Dapat Diubah dan Sistem Berkas Hanya-Baca

Wadah yang tidak dapat diubah adalah wadah yang sistem berkasnya tidak dapat dimodifikasi saat runtime. Mengaktifkan --read-only di Docker (atau readOnlyRootFilesystem: true di Kubernetes) mencegah penyerang menulis perangkat lunak berbahaya ke disk, memodifikasi berkas konfigurasi, atau memasang alat di dalam wadah yang sedang berjalan. Aplikasi yang benar-benar perlu menulis data (catatan log, berkas sementara) dapat memasang volume tmpfs tertentu untuk penulisan sementara. Wadah yang tidak dapat diubah menegakkan prinsip bahwa keadaan saat runtime seharusnya hanya berasal dari citra dan konfigurasi, bukan dari modifikasi di dalam wadah yang melewati pipeline keamanan CI/CD Anda.

# Run container with read-only root filesystem
docker run --read-only \
  --tmpfs /tmp \
  --tmpfs /var/run \
  myapp:latest

Pemindaian Image: Menemukan CVE Sebelum Deployment

Alat pemindaian image Container menganalisis paket yang terpasang dalam sebuah image Docker berdasarkan basis data kerentanan (NVD, CVE), lalu melaporkan CVE yang telah diketahui. Pemindai terkemuka mencakup Trivy (Aqua Security, cepat dan gratis), Grype (Anchore), Snyk Container, dan pemindaian image AWS ECR. Pemindaian harus diintegrasikan ke dalam alur CI/CD agar image apa pun yang memiliki CVE kritis atau tinggi menggagalkan alur tersebut sebelum dikirim ke registri. Pemindai juga harus memeriksa rahasia (kunci API, kata sandi) yang tidak sengaja tertanam dalam lapisan image.

# Scan a Docker image with Trivy
trivy image --severity HIGH,CRITICAL myapp:latest

# Fail CI pipeline if vulnerabilities found
trivy image --exit-code 1 --severity CRITICAL myapp:latest

Manajemen Rahasia: Jangan Pernah Menyimpannya di Lapisan Image

Kesalahan umum yang berbahaya adalah menanamkan rahasia (kunci API, kata sandi basis data, sertifikat TLS) di dalam image Docker—baik melalui variabel lingkungan yang ditanamkan ke dalam image maupun file yang ditambahkan melalui COPY. Rahasia ini dapat dilihat oleh siapa pun yang memiliki akses ke image melalui docker history atau dengan mengekstrak lapisan image. Meskipun lapisan berikutnya menghapus file tersebut, file itu tetap ada dalam riwayat image. Rahasia harus disisipkan saat waktu berjalan melalui variabel lingkungan dari pengelola rahasia, secret Docker, atau Secret Kubernetes yang dipasang sebagai volume.

# Never bake secrets into images
# Bad: ENV DATABASE_PASSWORD='supersecret'

# Good: inject at runtime via environment
docker run -e DATABASE_PASSWORD=$(vault read -field=password secret/db) myapp:latest

# Or use Docker secrets in Swarm/K8s

Perlindungan Saat Berjalan: Falco dan Pemantauan Panggilan Sistem

Alat keamanan saat berjalan memantau perilaku Container saat sedang berjalan dan memberi peringatan atau memblokir aktivitas yang tidak wajar. Falco (proyek CNCF) terhubung ke kernel Linux menggunakan eBPF atau modul kernel untuk mencegat panggilan sistem dan membandingkannya dengan aturan. Misalnya, sebuah aturan dapat memberi peringatan jika sebuah Container menjalankan shell (execve('/bin/sh')), membuka koneksi jaringan pada port yang tidak terduga, atau membaca /etc/shadow. Indikator perilaku ini sering menandakan serangan yang sedang berlangsung, meskipun tidak ada CVE yang diketahui yang dieksploitasi. Sysdig Secure dan Aqua Security menyediakan platform perlindungan komersial saat berjalan.

# Example Falco rule: alert on shell execution in container
# - rule: Shell Spawned in Container
#   desc: A shell was spawned in a container
#   condition: container and proc.name in (bash, sh, zsh)
#   output: Shell spawned (user=%user.name container=%container.name)
#   priority: WARNING

Kapabilitas Linux dan Profil Seccomp

Container Docker secara bawaan menanggalkan banyak kapabilitas Linux, tetapi masih mempertahankan lebih banyak kapabilitas daripada yang dibutuhkan sebagian besar aplikasi. Kapabilitas membagi hak istimewa root menjadi unit-unit terpisah (misalnya, CAP_NET_ADMIN, CAP_SYS_ADMIN). Praktik terbaiknya adalah menanggalkan semua kapabilitas dan hanya menambahkan kembali kapabilitas yang diperlukan dengan --cap-drop=ALL --cap-add=NET_BIND_SERVICE. Profil Seccomp (Secure Computing Mode) menentukan daftar putih panggilan sistem yang boleh dilakukan oleh sebuah Container—Docker menyertakan profil seccomp bawaan yang memblokir sekitar 44 panggilan sistem berbahaya. Profil seccomp khusus untuk aplikasi tertentu dapat membatasi hal ini lebih jauh dengan memblokir semua panggilan sistem yang tidak pernah digunakan aplikasi secara sah.

# Drop all capabilities, add only what's needed
docker run \
  --cap-drop=ALL \
  --cap-add=NET_BIND_SERVICE \
  --security-opt seccomp=/etc/docker/seccomp-custom.json \
  myapp:latest

Registri Container dan Penandatanganan Image

Registri Container (Docker Hub, AWS ECR, Google Artifact Registry) menyimpan dan mendistribusikan image. Pengamanan registri mencakup: mengaktifkan pemindaian kerentanan saat push, membatasi akses push hanya untuk akun layanan CI/CD, mengaktifkan penandatanganan image menggunakan Sigstore/Cosign atau Docker Content Trust (Notary) agar lingkungan saat berjalan hanya mengambil image yang ditandatangani secara kriptografis dari sumber tepercaya, serta mengonfigurasi ketidakberubahan image agar tag tidak dapat ditimpa (sehingga menghilangkan serangan perubahan tag, ketika penyerang mengganti tag :latest tepercaya dengan image berbahaya).

# Sign a container image with Cosign
cosign sign --key cosign.key myregistry.io/myapp:v1.2.3

# Verify signature before deployment
cosign verify --key cosign.pub myregistry.io/myapp:v1.2.3

Teknik Pelolosan dari Container dan Pertahanannya

Penyerang yang memperoleh kemampuan menjalankan kode di dalam sebuah Container dapat mencoba pelolosan dari Container untuk mencapai host. Teknik umum mencakup: mengeksploitasi Container dengan hak istimewa yang rentan (--privileged memberikan akses host yang hampir tidak terbatas), menyalahgunakan socket Docker yang terekspos (/var/run/docker.sock yang dipasang ke dalam sebuah Container memberikan akses penuh ke API Docker, termasuk membuat Container dengan hak istimewa), serta mengeksploitasi kerentanan kernel melalui kapabilitas yang tidak diamankan. Pertahanan: jangan pernah menggunakan mode dengan hak istimewa kecuali benar-benar diperlukan, jangan pernah memasang socket Docker ke dalam Container aplikasi, selalu perbarui kernel host dengan tambalan, dan gunakan gVisor atau Kata Containers untuk beban kerja yang memerlukan isolasi kuat.

# DANGEROUS: never do this in production
# docker run --privileged -v /:/host myapp:latest

# Check if a container is running privileged
docker inspect mycontainer | grep -i privileged

Kepatuhan terhadap CIS Docker Benchmark

Center for Internet Security (CIS) Docker Benchmark menyediakan panduan konfigurasi keamanan yang terperinci untuk host dan Container Docker, yang mencakup konfigurasi daemon, kebersihan image, pengaturan saat berjalan Container, dan kontrol jaringan. Alat seperti Docker Bench for Security mengotomatiskan pemeriksaan kepatuhan terhadap tolok ukur CIS dan menghasilkan laporan berskor yang berisi item lulus/gagal. Menjalankan tolok ukur ini secara berkala dan mengintegrasikannya ke dalam CI/CD memastikan perubahan konfigurasi keamanan yang tidak diinginkan dapat dideteksi dengan cepat. Peserta ujian Security+ perlu mengetahui bahwa CIS Benchmarks merupakan referensi utama untuk penguatan OS dan platform dalam konteks ujian.

# Run Docker Bench for Security
docker run -it --net host --pid host --userns host --cap-add audit_control \
  -v /var/lib:/var/lib -v /var/run/docker.sock:/var/run/docker.sock \
  -v /etc:/etc docker/docker-bench-security

Pemeriksaan Singkat

Uji pemahaman Anda mengenai konsep CompTIA Security+ (SY0-701) dari pelajaran ini.

Ringkasan Pelajaran

Dalam pelajaran ini Anda mempelajari bahwa image dasar minimal dan pengguna non-root mengurangi permukaan serangan dan tingkat hak istimewa beban kerja yang dijalankan dalam Container, alat perlindungan saat berjalan seperti Falco mendeteksi pola panggilan sistem yang tidak wajar dan mengindikasikan serangan aktif di dalam Container, serta jangan pernah menggunakan Container dengan hak istimewa atau memasang socket Docker ke dalam Container aplikasi karena konfigurasi ini memungkinkan pelolosan dari Container. Selanjutnya, kita akan membahas keamanan Kubernetes, termasuk RBAC, kebijakan jaringan, dan standar keamanan Pod.

Pertanyaan yang Sering Diajukan

Apakah pelajaran “Keamanan Kontainer: Penguatan Citra dan Perlindungan Runtime” gratis?

Ya — teks lengkap “Keamanan Kontainer: Penguatan Citra dan Perlindungan Runtime” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus Cloud & IT Cert Prep, upgrade ke CoddyKit PRO. Kursus Cloud & IT Cert Prep mencakup 4 pelajaran total.

Apa yang akan aku pelajari di “Keamanan Kontainer: Penguatan Citra dan Perlindungan Runtime”?

Perkuat citra Docker dengan menghapus paket yang tidak diperlukan, menjalankannya sebagai pengguna non-root, dan menggunakan alat keamanan runtime (Falco, Sysdig) untuk mendeteksi perilaku kontainer… Kamu berlatih Cloud & IT Cert Prep dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.

Apakah aku perlu pengalaman untuk memulai Cloud & IT Cert Prep?

Tidak diperlukan pengalaman sebelumnya. Cloud & IT Cert Prep di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 1 dari 4.

Berapa lama pelajaran “Keamanan Kontainer: Penguatan Citra dan Perlindungan Runtime” memakan waktu?

Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.

Bisakah aku menulis dan menjalankan kode dalam pelajaran Cloud & IT Cert Prep ini?

Ya. Setiap pelajaran Cloud & IT Cert Prep menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.

Semua pelajaran dalam kursus ini

  1. Keamanan Kontainer: Penguatan Citra dan Perlindungan Runtime
  2. Keamanan Kubernetes: RBAC, Kebijakan Jaringan, dan Keamanan Pod
  3. Keamanan Tanpa Server dan Fungsi
  4. Pemindaian Keamanan Infrastruktur sebagai Kode
← Kembali ke Cloud & IT Cert Prep