Information in this document may be out of date
This document has an older update date than the original, so the information it contains may be out of date. If you're able to read English, see the English version for the most up-to-date information: Cloud Native Security and Kubernetes
Kubernetes berdasarkan pada arsitektur cloud-native dan mengikuti saran dari CNCF tentang praktik terbaik untuk keamanan informasi cloud-native.
Baca halaman ini untuk gambaran umum tentang bagaimana Kubernetes dirancang untuk membantu kamu menerapkan platform cloud-native yang aman.
Whitepaper CNCF white paper tentang keamanan cloud-native yang mendefinisikan kontrol keamanan dan praktik yang sesuai untuk berbagai fase siklus hidup.
Untuk mencapainya, kamu dapat:
Untuk mencapainya, kamu dapat:
Pastikan pembatasan yang sesuai pada apa yang dapat diterapkan, siapa yang dapat menerapkannya, dan di mana itu dapat diterapkan. kamu dapat menerapkan langkah-langkah dari fase distribute, seperti memverifikasi identitas kriptografi dari artefak container image.
Saat kamu menerapkan Kubernetes, kamu juga menetapkan fondasi untuk lingkungan runtime aplikasi kamu: sebuah klaster Kubernetes (atau beberapa klaster). Infrastruktur TI tersebut harus memberikan jaminan keamanan yang diharapkan oleh lapisan yang lebih tinggi.
Fase Runtime mencakup tiga area penting: akses, komputasi, dan penyimpanan.
API Kubernetes adalah inti dari klaster kamu. Melindungi API ini adalah kunci untuk memberikan keamanan klaster yang efektif.
Halaman lain dalam dokumentasi Kubernetes memiliki detail lebih lanjut tentang cara mengatur aspek kontrol akses tertentu. Daftar periksa keamanan memiliki serangkaian pemeriksaan dasar yang disarankan untuk klaster kamu.
Selain itu, mengamankan klaster kamu berarti menerapkan autentikasi dan otorisasi yang efektif untuk akses API. Gunakan ServiceAccounts untuk menyediakan dan mengelola identitas keamanan untuk beban kerja dan komponen klaster.
Kubernetes menggunakan TLS untuk melindungi lalu lintas API; pastikan untuk menerapkan klaster menggunakan TLS (termasuk untuk lalu lintas antara node dan control plane), dan lindungi kunci enkripsi. Jika kamu menggunakan API Kubernetes untuk CertificateSigningRequests, berikan perhatian khusus untuk membatasi penyalahgunaan di sana.
Container menyediakan dua hal: isolasi antara aplikasi yang berbeda, dan mekanisme untuk menggabungkan aplikasi yang terisolasi tersebut untuk dijalankan pada komputer host yang sama. Kedua aspek ini, isolasi dan agregasi, berarti bahwa keamanan runtime melibatkan mengidentifikasi trade-off dan menemukan keseimbangan yang sesuai.
Kubernetes mengandalkan container runtime untuk benar-benar mengatur dan menjalankan container. Proyek Kubernetes tidak merekomendasikan runtime container tertentu, dan kamu harus memastikan bahwa runtime yang kamu pilih memenuhi kebutuhan keamanan informasi kamu.
Untuk melindungi komputasi kamu saat runtime, kamu dapat:
Menerapkan standar keamanan Pod untuk aplikasi, untuk membantu memastikan mereka berjalan hanya dengan hak istimewa yang diperlukan.
Menjalankan sistem operasi khusus pada node kamu yang dirancang khusus untuk menjalankan beban kerja yang dikontainerisasi. Biasanya ini berbasis pada sistem operasi hanya-baca (immutable image) yang hanya menyediakan layanan penting untuk menjalankan container.
Sistem operasi khusus container membantu mengisolasi komponen sistem dan menghadirkan permukaan serangan yang lebih kecil jika terjadi pelarian container.
Mendefinisikan ResourceQuotas untuk mengalokasikan sumber daya bersama secara adil, dan menggunakan mekanisme seperti LimitRanges untuk memastikan bahwa Pod menentukan persyaratan sumber daya mereka.
Membagi beban kerja di berbagai node. Gunakan mekanisme isolasi node, baik dari Kubernetes itu sendiri atau dari ekosistem, untuk memastikan bahwa Pod dengan konteks kepercayaan yang berbeda dijalankan pada set node yang terpisah.
Gunakan container runtime yang menyediakan pembatasan keamanan.
Pada node Linux, gunakan modul keamanan Linux seperti AppArmor atau seccomp.
Untuk melindungi penyimpanan untuk klaster kamu dan aplikasi yang berjalan di sana, kamu dapat:
Untuk kunci enkripsi, menghasilkan kunci ini dalam perangkat keras khusus memberikan perlindungan terbaik terhadap risiko pengungkapan. Sebuah hardware security module dapat memungkinkan kamu melakukan operasi kriptografi tanpa memungkinkan kunci keamanan untuk disalin ke tempat lain.
Kamu juga harus mempertimbangkan langkah-langkah keamanan jaringan, seperti NetworkPolicy atau service mesh. Beberapa plugin jaringan untuk Kubernetes menyediakan enkripsi untuk jaringan klaster kamu, menggunakan teknologi seperti virtual private network (VPN) overlay. Secara desain, Kubernetes memungkinkan kamu menggunakan plugin jaringan kamu sendiri untuk klaster kamu (jika kamu menggunakan Kubernetes yang dikelola, orang atau organisasi yang mengelola klaster kamu mungkin telah memilih plugin jaringan untuk kamu).
Plugin jaringan yang kamu pilih dan cara kamu mengintegrasikannya dapat memiliki dampak besar pada keamanan informasi dalam transit.
Kubernetes memungkinkan kamu memperluas klaster kamu dengan alat tambahan. kamu dapat mengatur solusi pihak ketiga untuk membantu kamu memantau atau memecahkan masalah aplikasi kamu dan klaster tempat mereka berjalan. kamu juga mendapatkan beberapa fitur observabilitas dasar yang sudah ada di Kubernetes itu sendiri. Kode kamu yang berjalan dalam container dapat menghasilkan log, menerbitkan metrik, atau menyediakan data observabilitas lainnya; pada waktu penerapan, kamu perlu memastikan klaster kamu memberikan tingkat perlindungan yang sesuai di sana.
Jika kamu mengatur dasbor metrik atau sesuatu yang serupa, tinjau rantai komponen yang mengisi data ke dalam dasbor tersebut, serta dasbor itu sendiri. Pastikan bahwa seluruh rantai dirancang dengan ketahanan yang cukup dan perlindungan integritas yang cukup sehingga kamu dapat mengandalkannya bahkan selama insiden di mana klaster kamu mungkin mengalami degradasi.
Jika sesuai, terapkan langkah-langkah keamanan di bawah tingkat Kubernetes itu sendiri, seperti boot yang diukur secara kriptografis, atau distribusi waktu yang diautentikasi (yang membantu memastikan keandalan log dan catatan audit).
Untuk lingkungan dengan jaminan tinggi, terapkan perlindungan kriptografi untuk memastikan bahwa log tidak dapat diubah dan tetap rahasia.