Dokumen ini menjelaskan konsep keamanan jaringan GKE inti, seperti prinsip hak istimewa terendah, dan membantu Anda memilih alat yang tepat untuk mengamankan cluster Anda. Tujuan utama penerapan keamanan jaringan GKE adalah isolasi workload dan multi-tenancy yang aman. Untuk mencapai sasaran ini, Anda harus menerapkan prinsip hak istimewa terendah, pertahanan mendalam, dan menggunakan data yang dapat ditindaklanjuti untuk memandu keputusan keamanan Anda.
Di Google Kubernetes Engine (GKE), menerapkan prinsip hak istimewa terendah pada traffic jaringan berarti membatasi komunikasi hanya pada apa yang diperlukan agar aplikasi Anda berfungsi. Secara default, jaringan dalam cluster GKE terbuka, yang berarti setiap Pod dapat berkomunikasi dengan Pod lainnya.
GKE kini mendukung pendekatan hierarkis untuk keamanan jaringan dengan menggunakan ClusterNetworkPolicy untuk penegakan tingkat administratif di semua namespace.
Dokumen ini memberikan informasi yang dibutuhkan Operator, spesialis Jaringan, dan spesialis Keamanan untuk memahami dan menerapkan keamanan jaringan dalam cluster GKE. Untuk mengetahui informasi selengkapnya tentang peran umum dan contoh tugas di Google Cloud, lihat Peran dan tugas pengguna GKE umum.
Sebelum membaca dokumen ini, pastikan Anda memahami hal-hal berikut:
- Konsep jaringan GKE: untuk mengetahui ringkasannya, lihat Tentang jaringan GKE.
- Pod, Layanan, dan namespace Kubernetes: resource Kubernetes mendasar ini sangat penting untuk menentukan kebijakan keamanan jaringan. Lihat dokumentasi Kubernetes.
- Prinsip hak istimewa terendah: prinsip keamanan ini adalah konsep inti yang diterapkan di seluruh dokumen ini.
Tujuan keamanan jaringan GKE
Kebijakan keamanan jaringan GKE menyediakan kontrol traffic yang sangat detail dan kompatibel dengan Kubernetes dalam cluster Anda. Kebijakan ini merupakan elemen penting dalam strategi keamanan Anda secara keseluruhan. Untuk menerapkan keamanan jaringan yang tangguh, pertimbangkan prinsip-prinsip mendasar berikut:
- Hak istimewa terendah: memberikan hak istimewa minimum kepada sistem dan layanan yang diperlukan untuk menjalankan fungsinya. Prinsip ini mengurangi potensi dampak penyusupan. Kebijakan jaringan Kubernetes membantu Anda beralih dari jaringan terbuka default ke jaringan yang hanya mengizinkan koneksi yang diperlukan.
- Defense in depth: menerapkan beberapa kontrol keamanan yang independen. Kegagalan di satu kontrol tidak menyebabkan penyusupan sistem secara total. Misalnya, Anda menggunakan kebijakan jaringan untuk mengisolasi database, meskipun database itu sendiri memerlukan autentikasi.
- Data yang dapat ditindaklanjuti: mendasarkan keputusan keamanan pada data. Pemodelan ancaman dan penilaian risiko akan memengaruhi postur keamanan Anda. Fitur seperti logging kebijakan jaringan menyediakan data untuk memverifikasi kebijakan dan mendeteksi potensi pelanggaran.
Memilih kebijakan keamanan jaringan
Untuk memilih kebijakan yang tepat, identifikasi jenis dan cakupan traffic yang perlu Anda kontrol.
Jenis traffic
Untuk memilih kebijakan yang tepat, pertimbangkan sumber dan tujuan traffic yang ingin Anda kelola:
Komunikasi antara Pod dalam cluster: untuk mengontrol cara mikroservice berkomunikasi satu sama lain, gunakan kebijakan yang beroperasi pada label dan namespace Pod.
- Sebagai developer aplikasi, gunakan NetworkPolicy Kubernetes standar untuk menentukan aturan ingress dan egress untuk aplikasi Anda dalam namespace-nya.
- Sebagai administrator cluster, gunakan ClusterNetworkPolicy Kubernetes standar
untuk menerapkan batas keamanan wajib (tingkat
Admin) atau menetapkan default zero-trust (tingkatBaseline) di semua namespace. Resource ini didukung di cluster yang menjalankan GKE versi 1.36.1-gke.1067000 atau yang lebih baru. - Sebagai administrator cluster, gunakan
CiliumClusterwideNetworkPolicy eksklusif
untuk kontrol traffic khusus di seluruh cluster. Untuk deployment baru, gunakan
ClusterNetworkPolicynative Kubernetes, bukan kebijakan eksklusif ini.
Traffic keluar dari Pod ke layanan eksternal: untuk mengontrol traffic keluar dari Pod ke layanan eksternal berdasarkan nama domain, gunakan FQDNNetworkPolicy. Kebijakan ini berguna saat alamat IP layanan eksternal tidak statis, karena kebijakan ini secara otomatis menyelesaikan dan memperbarui alamat IP yang diizinkan berdasarkan DNS.
Enkripsi untuk semua traffic antarlayanan: untuk membantu memastikan semua komunikasi antar-layanan dienkripsi dan diautentikasi, gunakan mesh layanan. Gunakan Istio atau Anthos Cloud Service Mesh untuk menerapkan mutual TLS (mTLS), yang secara otomatis menangani enkripsi.
Tingkatan evaluasi kebijakan
GKE mengevaluasi kebijakan keamanan jaringan dalam tiga tingkat hierarkis.
- Tingkat admin (ClusterNetworkPolicy): tingkat prioritas tertinggi. Gunakan tingkatan ini untuk menerapkan mandat keamanan wajib. Aturan Tolak di tingkat ini menggantikan semua kebijakan lainnya. Aturan Terima mengizinkan traffic dan menghentikan evaluasi untuk paket tersebut.
- Tingkat NetworkPolicy: tingkat tempat developer menentukan keamanan
khusus aplikasi. Kebijakan mencakup resource
NetworkPolicy,FQDNNetworkPolicy, danCiliumClusterwideNetworkPolicystandar. - Tingkat dasar (ClusterNetworkPolicy): tingkat prioritas terendah. Gunakan tingkat ini untuk menetapkan batas keamanan "tolak secara default" yang dapat diganti secara selektif oleh developer di tingkat NetworkPolicy.
Jika tidak ada kebijakan yang cocok di tingkat mana pun, GKE akan menggunakan perilaku "izinkan semua" implisit secara default.
Ringkasan pilihan kebijakan
Tabel berikut merangkum kebijakan yang harus digunakan berdasarkan tujuan keamanan Anda.
| Sasaran | Kebijakan yang direkomendasikan |
|---|---|
| Mengontrol traffic antar-Pod menggunakan label dan namespace. | Kubernetes NetworkPolicy |
| Mengontrol traffic keluar ke layanan eksternal menurut nama domain. | FQDNNetworkPolicy |
| Enkripsi dan autentikasi semua traffic layanan-ke-layanan. | Istio atau Anthos Cloud Service Mesh (untuk mTLS) |
| Menerapkan perlindungan keamanan wajib yang tidak dapat diganti. | ClusterNetworkPolicy (Tingkat Admin) |
| Menetapkan perlindungan "zero-trust" default yang dapat diganti oleh developer. | ClusterNetworkPolicy (Tingkat dasar) |
| Mengonfigurasi kebijakan eksklusif di seluruh cluster (tidak direkomendasikan untuk deployment baru). | CiliumClusterwideNetworkPolicy |
| Mengaudit dan mencatat koneksi yang diizinkan atau ditolak oleh kebijakan. | logging kebijakan jaringan (diaktifkan untuk kebijakan apa pun) |
Mengaudit dan memecahkan masalah kebijakan jaringan
Setelah menerapkan kebijakan jaringan, verifikasi bahwa kebijakan tersebut berfungsi seperti yang diharapkan dan diagnosis masalah konektivitas. Anda dapat menggunakan Logging Kebijakan Jaringan sebagai alat utama untuk tujuan ini.
Saat Anda mengaktifkan logging kebijakan jaringan, GKE akan membuat catatan log di Cloud Logging untuk setiap koneksi yang diizinkan atau ditolak oleh kebijakan jaringan. Log ini penting untuk melakukan audit keamanan dan memecahkan masalah perilaku yang tidak terduga. Dengan meninjau log ini, Anda dapat melihat efek konkret dari aturan Anda, yang mengonfirmasi bahwa traffic yang sah mengalir sesuai yang diharapkan dan traffic yang tidak sah diblokir.
Tidak seperti kebijakan standar yang "hanya mengizinkan", resource ClusterNetworkPolicy mendukung tindakan Tolak eksplisit. Jika kebijakan administratif menurunkan traffic, log
mencatat penolakan ke kebijakan tertentu yang bertanggung jawab atas pemblokiran.
Langkah berikutnya
- Pelajari cara mengonfigurasi NetworkPolicy Kubernetes.
- Pelajari cara mengontrol traffic keluar menggunakan FQDNNetworkPolicy.
- Pelajari cara menerapkan batas aman keamanan di seluruh cluster menggunakan ClusterNetworkPolicy.
- Pelajari cara menyiapkan CiliumClusterwideNetworkPolicy untuk aturan cakupan cluster.
- Pelajari cara mengaktifkan logging kebijakan jaringan untuk mengaudit kebijakan Anda.