Daftar Keamanan Aplikasi

Panduan dasar untuk memastikan keamanan aplikasi di Kubernetes, ditujukan untuk pengembang aplikasi

Daftar ini bertujuan untuk memberikan panduan dasar dalam mengamankan aplikasi yang berjalan di Kubernetes dari perspektif pengembang. Daftar ini tidak dimaksudkan untuk menjadi lengkap dan akan terus berkembang seiring waktu.

Cara membaca dan menggunakan dokumen ini:

  • Urutan topik tidak mencerminkan urutan prioritas.
  • Beberapa item daftar dijelaskan dalam paragraf di bawah daftar setiap bagian.
  • Daftar ini mengasumsikan bahwa pengembang adalah pengguna kluster Kubernetes yang berinteraksi dengan objek dalam lingkup namespace.

Penguatan keamanan dasar

Daftar berikut memberikan rekomendasi penguatan keamanan dasar yang akan berlaku untuk sebagian besar aplikasi yang di-deploy ke Kubernetes.

Desain aplikasi

  • Ikuti prinsip keamanan yang tepat saat merancang aplikasi.
  • Aplikasi dikonfigurasi dengan kelas QoS yang sesuai melalui permintaan dan batas sumber daya.
    • Batas memori ditetapkan untuk beban kerja dengan batas yang sama atau lebih besar dari permintaan.
    • Batas CPU dapat ditetapkan pada beban kerja sensitif.

Akun layanan

  • Hindari menggunakan default ServiceAccount. Sebagai gantinya, buat ServiceAccount untuk setiap beban kerja (workloads) atau layanan mikro.
  • automountServiceAccountToken harus disetel ke false kecuali pod secara khusus memerlukan akses ke API Kubernetes untuk beroperasi.

Rekomendasi securityContext tingkat pod

  • Terapkan runAsNonRoot: true.
  • Konfigurasikan container untuk dijalankan sebagai pengguna dengan hak istimewa lebih rendah (misalnya, menggunakan runAsUser dan runAsGroup), dan konfigurasikan izin yang sesuai pada file atau direktori di dalam image container.
  • Opsional, tambahkan grup tambahan dengan fsGroup untuk mengakses volume persisten.
  • Aplikasi di-deploy ke namespace yang menerapkan standar keamanan Pod yang sesuai. Jika kamu tidak dapat mengontrol penerapan ini untuk kluster tempat aplikasi di-deploy, pertimbangkan ini melalui dokumentasi atau pertahanan tambahan secara mendalam.

Rekomendasi securityContext tingkat container

  • Nonaktifkan eskalasi hak istimewa menggunakan allowPrivilegeEscalation: false.
  • Konfigurasikan sistem file root agar hanya dapat dibaca dengan readOnlyRootFilesystem: true.
  • Hindari menjalankan container dengan hak istimewa (atur privileged: false).
  • Hapus semua kemampuan dari container dan tambahkan kembali hanya yang spesifik yang diperlukan untuk operasi container.

Kontrol Akses Berbasis Peran (RBAC)

  • Izin seperti create, patch, update, dan delete hanya boleh diberikan jika diperlukan.
  • Hindari membuat izin RBAC untuk membuat atau memperbarui peran yang dapat menyebabkan eskalasi hak istimewa.
  • Tinjau binding untuk grup system:unauthenticated dan hapus jika memungkinkan, karena ini memberikan akses kepada siapa saja yang dapat menghubungi server API pada tingkat jaringan.

Verba create, update, dan delete harus diizinkan dengan hati-hati. Verba patch jika diizinkan pada Namespace dapat mengizinkan pengguna memperbarui label pada namespace atau deployment yang dapat meningkatkan permukaan serangan.

Untuk beban kerja sensitif, pertimbangkan untuk menyediakan ValidatingAdmissionPolicy yang direkomendasikan yang lebih membatasi tindakan tulis yang diizinkan.

Keamanan image

  • Gunakan alat pemindaian image untuk memindai image sebelum mendepoy container di kluster Kubernetes.
  • Gunakan penandatanganan container untuk memvalidasi tanda tangan image container sebelum men-deploy ke kluster Kubernetes.

Kebijakan jaringan

  • Konfigurasikan NetworkPolicies untuk hanya mengizinkan lalu lintas masuk dan keluar yang diharapkan dari pod.

Pastikan bahwa kluster kamu menyediakan dan menerapkan NetworkPolicy. Jika kamu menulis aplikasi yang akan di-deploy pengguna ke kluster yang berbeda, pertimbangkan apakah kamu dapat mengasumsikan bahwa NetworkPolicy tersedia dan diterapkan.

Penguatan keamanan tingkat lanjut

Bagian ini mencakup beberapa poin penguatan keamanan tingkat lanjut yang mungkin berharga berdasarkan pengaturan lingkungan Kubernetes yang berbeda.

Keamanan container Linux

Konfigurasikan Security Context untuk pod-container.

Kelas runtime

  • Konfigurasikan kelas runtime yang sesuai untuk container.

Beberapa container mungkin memerlukan tingkat isolasi yang berbeda dari yang disediakan oleh runtime default kluster. runtimeClassName dapat digunakan dalam podspec untuk mendefinisikan kelas runtime yang berbeda.

Untuk beban kerja sensitif, pertimbangkan menggunakan alat emulasi kernel seperti gVisor, atau isolasi virtual menggunakan mekanisme seperti kata-containers.

Dalam lingkungan dengan tingkat kepercayaan tinggi, pertimbangkan menggunakan mesin virtual rahasia untuk lebih meningkatkan keamanan kluster.

Items on this page refer to third party products or projects that provide functionality required by Kubernetes. The Kubernetes project authors aren't responsible for those third-party products or projects. See the CNCF website guidelines for more details.

You should read the content guide before proposing a change that adds an extra third-party link.

Last modified April 14, 2025 at 4:04 PM PST: id: translate application security checklist (1b8baf7e69)