Praktik terbaik keamanan Cloud Service Mesh

Dokumen ini menjelaskan praktik terbaik untuk membuat dan mengatur konfigurasi Cloud Service Mesh aman yang berjalan di Google Kubernetes Engine (GKE). Panduan dalam dokumen ini tidak hanya membahas setelan yang digunakan untuk mengonfigurasi dan menginstal Cloud Service Mesh, serta menjelaskan cara menggunakan Cloud Service Mesh dengan produk dan fitur Google Cloud lainnya untuk memberikan perlindungan dari ancaman keamanan yang mungkin dihadapi aplikasi dalam mesh.

Audiens yang diinginkan untuk dokumen ini mencakup administrator yang mengelola kebijakan di Cloud Service Mesh dan pengguna yang menjalankan layanan di Cloud Service Mesh. Langkah-langkah keamanan yang dijelaskan di sini juga berguna bagi organisasi yang perlu meningkatkan keamanan mesh layanannya untuk memenuhi persyaratan kepatuhan.

Dokumen ini disusun sebagai berikut:

Pengantar

Cloud Service Mesh menyediakan fitur dan alat yang membantu Anda mengamati, mengelola, dan mengamankan layanan secara terpadu. Metode ini menggunakan pendekatan yang berfokus pada aplikasi dan menggunakan identitas aplikasi tepercaya, bukan pendekatan yang berfokus pada IP jaringan. Anda dapat men-deploy mesh layanan secara transparan tanpa perlu mengubah kode aplikasi yang ada. Cloud Service Mesh menyediakan kontrol deklaratif atas perilaku jaringan, yang membantu memisahkan pekerjaan tim yang bertanggung jawab untuk mengirimkan dan merilis fitur aplikasi dari tanggung jawab administrator yang bertanggung jawab atas keamanan dan jaringan.

Cloud Service Mesh didasarkan pada mesh layanan Istio open source, yang memungkinkan konfigurasi dan topologi canggih. Bergantung pada struktur organisasi Anda, satu atau beberapa tim atau peran mungkin bertanggung jawab untuk menginstal dan mengonfigurasi mesh. Setelan Cloud Service Mesh default dipilih untuk melindungi aplikasi. Namun, dalam beberapa kasus, Anda mungkin memerlukan konfigurasi kustom atau memberikan pengecualian dengan mengecualikan aplikasi, port, atau alamat IP tertentu agar tidak berpartisipasi dalam mesh. Memiliki kontrol untuk mengatur konfigurasi mesh dan pengecualian keamanan sangat penting.

Vektor serangan dan risiko keamanan

Vektor serangan

Keamanan Cloud Service Mesh mengikuti model keamanan zero-trust yang mengasumsikan ancaman keamanan berasal dari dalam dan luar perimeter keamanan organisasi. Contoh jenis serangan keamanan yang dapat mengancam aplikasi dalam mesh layanan antara lain:

  • Serangan pemindahan data yang tidak sah. Misalnya, serangan yang menyadap data sensitif atau kredensial dari traffic layanan-ke-layanan.
  • Serangan {i>man-in-the-middle<i}. Misalnya, layanan berbahaya yang menyamar sebagai layanan sah untuk mendapatkan atau memodifikasi komunikasi antar layanan.
  • Serangan eskalasi akses. Misalnya, serangan yang menggunakan akses terlarang ke hak istimewa yang ditingkatkan untuk menjalankan operasi di jaringan.
  • Serangan {i>denial of service<i} (DoS).
  • Serangan botnet yang mencoba menyusupi dan memanipulasi layanan untuk meluncurkan serangan pada layanan lain.

Serangan ini juga dapat dikategorikan berdasarkan target serangan:

  • Serangan jaringan internal mesh. Serangan yang bertujuan untuk merusak, menyadap, atau melakukan spoofing terhadap komunikasi antarlayanan internal mesh atau komunikasi layanan-ke-kontrol-pesawat.
  • Serangan bidang kontrol. Serangan yang ditujukan untuk menyebabkan kerusakan pada bidang kontrol (seperti serangan DoS), atau pemindahan data sensitif yang tidak sah dari bidang kontrol.
  • Serangan {i>mesh edge<i}. Serangan yang bertujuan untuk merusak, menyadap, atau memalsukan komunikasi pada traffic masuk atau keluar mesh.
  • Serangan operasi mesh. Serangan yang ditujukan untuk operasi mesh. Penyerang mungkin mencoba mendapatkan hak istimewa yang ditingkatkan untuk melakukan operasi berbahaya di mesh, seperti mengubah kebijakan keamanan dan image workload.

Risiko keamanan

Selain serangan keamanan, mesh juga menghadapi risiko keamanan lainnya. Daftar berikut menjelaskan beberapa kemungkinan risiko keamanan:

  • Perlindungan keamanan tidak lengkap. Mesh layanan belum dikonfigurasi dengan kebijakan autentikasi dan otorisasi untuk melindungi keamanannya. Misalnya, tidak ada kebijakan autentikasi atau otorisasi yang ditentukan untuk layanan di mesh.
  • Pengecualian kebijakan keamanan. Untuk mengakomodasi kasus penggunaan khusus, pengguna dapat membuat pengecualian kebijakan keamanan untuk traffic tertentu (internal atau eksternal) yang akan dikecualikan dari kebijakan keamanan Cloud Service Mesh. Untuk menangani kasus tersebut dengan aman, baca bagian Menangani pengecualian terhadap kebijakan dengan aman.
  • Mengabaikan upgrade gambar. Kerentanan dapat ditemukan untuk gambar yang digunakan dalam mesh. Anda harus terus mengupdate komponen mesh dan image workload dengan perbaikan kerentanan terbaru.
  • Kurangnya pemeliharaan (tidak ada keahlian atau sumber daya). Software mesh dan konfigurasi kebijakan memerlukan pemeliharaan rutin untuk memanfaatkan mekanisme perlindungan keamanan terbaru.
  • Kurangnya visibilitas. Kesalahan konfigurasi atau konfigurasi kebijakan mesh yang tidak aman dan traffic/operasi mesh yang tidak normal tidak menjadi perhatian administrator mesh.
  • Penyimpangan konfigurasi. Konfigurasi kebijakan dalam mesh menyimpang dari sumber kebenaran.

Langkah-langkah untuk melindungi mesh layanan

Bagian ini menampilkan panduan pengoperasian untuk mengamankan mesh layanan.

Arsitektur keamanan

Keamanan mesh layanan bergantung pada keamanan komponen di berbagai lapisan sistem mesh dan aplikasinya. Tujuan tingkat tinggi dari postur keamanan Cloud Service Mesh yang diusulkan adalah untuk mengamankan jaringan layanan dengan mengintegrasikan beberapa mekanisme keamanan di berbagai lapisan, yang bersama-sama mencapai keamanan sistem keseluruhan dengan model keamanan zero-trust. Diagram berikut menunjukkan postur keamanan Cloud Service Mesh yang diusulkan.

postur keamanan Cloud Service Mesh

Cloud Service Mesh memberikan keamanan di beberapa lapisan, termasuk:

  • Keamanan edge mesh
    • Keamanan ingress Cloud Service Mesh menyediakan kontrol akses untuk traffic eksternal dan mengamankan akses eksternal ke API yang diekspos oleh layanan di mesh.
    • Keamanan keluar Cloud Service Mesh mengatur traffic keluar dari workload internal.
    • Autentikasi Pengguna Cloud Service Mesh terintegrasi dengan infrastruktur Google untuk mengautentikasi panggilan eksternal dari browser web ke layanan yang menjalankan aplikasi web.
    • Pengelolaan sertifikat gateway Cloud Service Mesh melindungi dan merotasi kunci pribadi dan sertifikat X.509 yang digunakan oleh gateway masuk dan keluar Cloud Service Mesh menggunakan Certificate Authority Service.
    • Cloud Armor dapat melindungi dari serangan Distributed Denial of Service (DDoS) dan Lapisan 7 eksternal. Firewall Aplikasi ini berfungsi sebagai Web Application Firewall (WAF) untuk melindungi mesh dari serangan jaringan. Misalnya, serangan injeksi dan eksekusi kode jarak jauh.
    • Kontrol Layanan VPC dan VPC melindungi edge mesh melalui kontrol akses jaringan pribadi.
  • Keamanan cluster
    • Cloud Service Mesh mutual TLS (mTLS) menerapkan enkripsi dan autentikasi traffic workload ke-beban kerja.
    • CA terkelola, seperti certificate authority Cloud Service Mesh dan Certificate Authority Service, menyediakan dan mengelola sertifikat yang digunakan oleh workload dengan aman.
    • Otorisasi Cloud Service Mesh menerapkan kontrol akses untuk layanan mesh berdasarkan identitas mereka dan atribut lainnya.
    • Dasbor keamanan GKE Enterprise menyediakan pemantauan konfigurasi kebijakan keamanan dan Kebijakan Jaringan Kubernetes untuk workload.
    • Kebijakan Jaringan Kubernetes menerapkan kontrol akses Pod berdasarkan alamat IP, label Pod, namespace, dan lainnya.
    • Keamanan bidang kontrol melindungi dari serangan pada bidang kontrol. Perlindungan ini mencegah penyerang memodifikasi, mengeksploitasi, atau membocorkan data konfigurasi mesh dan layanan.
  • Keamanan workload
    • Dapatkan info terbaru tentang rilis keamanan Cloud Service Mesh untuk memastikan biner Cloud Service Mesh yang berjalan di mesh Anda bebas dari kerentanan yang diketahui secara publik.
    • Workload Identity memungkinkan workload memperoleh kredensial untuk memanggil layanan Google dengan aman.
    • Cloud Key Management Service (Cloud KMS) mengamankan data atau kredensial sensitif melalui Hardware Security Module (HSM). Misalnya, workload dapat menggunakan Cloud KMS untuk menyimpan kredensial atau data sensitif lainnya. Layanan CA—digunakan untuk menerbitkan sertifikat untuk workload mesh—mendukung kunci penandatanganan per pelanggan dan yang didukung HM yang dikelola oleh Cloud KMS.
    • CNI (Container Network Interface) Kubernetes mencegah serangan eskalasi akses dengan meniadakan kebutuhan akan container init Cloud Service Mesh dengan hak istimewa.
  • Keamanan operator
    • Kontrol akses berbasis peran (RBAC) Kubernetes membatasi akses ke resource Kubernetes dan membatasi izin operator untuk memitigasi serangan yang berasal dari operator berbahaya atau peniruan identitas operator.
    • Pengontrol Kebijakan GKE Enterprise memvalidasi dan mengaudit konfigurasi kebijakan di mesh untuk mencegah kesalahan konfigurasi.
    • Otorisasi Biner Google Cloud memastikan bahwa image workload dalam mesh adalah image yang diizinkan oleh administrator.
    • Google Cloud Audit Logging mengaudit operasi mesh.

Diagram di bawah menunjukkan alur komunikasi dan konfigurasi dengan solusi keamanan terintegrasi di Cloud Service Mesh.

diagram keamanan arus traffic

Keamanan cluster

Mengaktifkan TLS bersama yang ketat

Serangan man in the middle (MitM) mencoba memasukkan entitas berbahaya di antara dua pihak yang berkomunikasi untuk menyadap atau memanipulasi komunikasi. Cloud Service Mesh melindungi dari serangan MitM dan pemindahan data yang tidak sah dengan menerapkan enkripsi dan autentikasi mTLS untuk semua pihak yang berkomunikasi. Mode permisif menggunakan mTLS jika kedua belah pihak mendukungnya, tetapi mengizinkan koneksi tanpa mTLS. Sebaliknya, mTLS yang ketat mengharuskan traffic dienkripsi dan diautentikasi dengan mTLS dan tidak mengizinkan traffic teks biasa.

Cloud Service Mesh memungkinkan Anda mengonfigurasi versi TLS minimum untuk koneksi TLS di antara workload guna memenuhi persyaratan keamanan dan kepatuhan.

Untuk mengetahui informasi selengkapnya, lihat Cloud Service Mesh menggunakan contoh: mTLS | Menerapkan mTLS seluruh mesh.

Mengaktifkan kontrol akses

Kebijakan keamanan Cloud Service Mesh (seperti kebijakan autentikasi dan otorisasi) harus diterapkan pada semua traffic yang masuk dan keluar dari mesh kecuali jika ada justifikasi kuat untuk mengecualikan layanan atau Pod dari kebijakan keamanan Cloud Service Mesh. Dalam beberapa kasus, pengguna mungkin memiliki alasan yang sah untuk mengabaikan kebijakan keamanan Cloud Service Mesh untuk beberapa port dan rentang IP. Misalnya, untuk membuat koneksi native dengan layanan yang tidak dikelola oleh Cloud Service Mesh. Untuk mengamankan Cloud Service Mesh dalam kasus penggunaan tersebut, lihat Menangani pengecualian kebijakan Cloud Service Mesh dengan aman.

Kontrol akses layanan sangat penting untuk mencegah akses tidak sah ke layanan. Penerapan mTLS mengenkripsi dan mengautentikasi permintaan, tetapi mesh masih memerlukan kebijakan otorisasi Cloud Service Mesh untuk menerapkan kontrol akses pada layanan. Misalnya, menolak permintaan tidak sah yang berasal dari klien terautentikasi.

Kebijakan otorisasi Cloud Service Mesh memberikan cara yang fleksibel untuk mengonfigurasi kontrol akses untuk melindungi layanan Anda dari akses yang tidak sah. Kebijakan otorisasi Cloud Service Mesh harus diterapkan berdasarkan identitas terautentikasi yang berasal dari hasil autentikasi. Autentikasi berbasis mTLS atau JSON Web Token (JWT) harus digunakan bersama sebagai bagian dari kebijakan otorisasi Cloud Service Mesh.

Menerapkan kebijakan autentikasi Cloud Service Mesh

Token Web JSON (JWT)

Selain autentikasi mTLS, administrator mesh dapat mewajibkan layanan untuk mengautentikasi dan mengizinkan permintaan berdasarkan JWT. Cloud Service Mesh tidak bertindak sebagai penyedia JWT, tetapi mengautentikasi JWT berdasarkan endpoint set kunci web JSON (JWKS) yang dikonfigurasi. Autentikasi JWT dapat diterapkan ke gateway masuk untuk traffic eksternal atau ke layanan internal untuk traffic in-mesh. Autentikasi JWT dapat digabungkan dengan autentikasi mTLS jika JWT digunakan sebagai kredensial untuk mewakili pemanggil akhir dan layanan yang diminta memerlukan bukti bahwa JWT dipanggil atas nama pemanggil akhir. Menerapkan autentikasi JWT melindungi dari serangan yang mengakses layanan tanpa kredensial yang valid dan atas nama pengguna akhir yang sebenarnya.

Autentikasi pengguna Cloud Service Mesh

Autentikasi pengguna Cloud Service Mesh adalah solusi terintegrasi untuk autentikasi pengguna akhir berbasis browser dan kontrol akses ke workload Anda. Alat ini mengintegrasikan mesh layanan dengan Penyedia Identitas (IdP) yang ada untuk menerapkan alur izin dan login OpenID Connect (OIDC) berbasis web standar serta menggunakan kebijakan otorisasi Cloud Service Mesh untuk kontrol akses.

Menerapkan kebijakan otorisasi

Kebijakan otorisasi Cloud Service Mesh mengontrol:

  • Siapa atau apa yang diizinkan untuk mengakses layanan.
  • Resource mana yang dapat diakses.
  • Operasi mana yang dapat dilakukan pada resource yang diizinkan.

Kebijakan otorisasi adalah cara serbaguna untuk mengonfigurasi kontrol akses berdasarkan identitas aktual yang dijalankan layanan sebagai, properti lapisan aplikasi (Lapisan 7) traffic (misalnya header permintaan), dan properti lapisan jaringan (Lapisan 3 dan Lapisan 4) seperti rentang IP dan port.

Kebijakan otorisasi Cloud Service Mesh harus diterapkan berdasarkan identitas terautentikasi yang berasal dari hasil autentikasi untuk melindungi dari akses tidak sah ke layanan atau data.

Secara default, akses ke layanan harus ditolak kecuali jika kebijakan otorisasi ditetapkan secara eksplisit untuk mengizinkan akses ke layanan. Lihat Praktik Terbaik Kebijakan Otorisasi untuk mengetahui contoh kebijakan otorisasi yang menolak permintaan akses.

Kebijakan otorisasi harus membatasi kepercayaan sebanyak mungkin. Misalnya, akses ke layanan dapat ditentukan berdasarkan setiap jalur URL yang diekspos oleh layanan sehingga hanya layanan A yang dapat mengakses jalur /admin layanan B.

Kebijakan otorisasi dapat digunakan bersama dengan Kebijakan Jaringan Kubernetes, yang hanya beroperasi pada lapisan jaringan (Lapisan 3 dan Lapisan 4) serta mengontrol akses jaringan untuk alamat IP dan port di Pod Kubernetes dan namespace Kubernetes.

Menerapkan pertukaran token untuk mengakses layanan mesh

Untuk melindungi dari serangan replay token yang mencuri token dan menggunakan kembali token yang dicuri untuk mengakses layanan mesh, token dalam permintaan dari luar mesh harus ditukarkan dengan token internal mesh berumur singkat di tepi mesh.

Permintaan dari luar mesh untuk mengakses layanan mesh harus menyertakan token, seperti JWT atau cookie, agar dapat diautentikasi dan diberi otorisasi oleh layanan mesh. Token dari luar mesh mungkin berumur panjang. Untuk melindungi dari serangan replay token, token dari luar mesh harus ditukarkan dengan token internal mesh berjangka pendek dengan cakupan terbatas di traffic masuk mesh. Layanan mesh mengautentikasi token internal mesh dan mengizinkan permintaan akses berdasarkan token internal mesh.

Cloud Service Mesh mendukung integrasi dengan Identity-Aware Proxy (IAP), yang menghasilkan RequestContextToken (token internal mesh berumur singkat yang dipertukarkan dari token eksternal) yang digunakan di Cloud Service Mesh untuk otorisasi. Dengan pertukaran token, penyerang tidak dapat menggunakan token yang dicuri di mesh untuk mengakses layanan. Cakupan yang terbatas dan masa pakai token yang dipertukarkan sangat mengurangi peluang serangan replay token.

Menangani pengecualian kebijakan Cloud Service Mesh dengan aman

Anda mungkin memiliki kasus penggunaan khusus untuk mesh layanan Anda. Misalnya, Anda mungkin perlu mengekspos porta jaringan tertentu ke lalu lintas teks polos. Untuk mengakomodasi skenario penggunaan tertentu, terkadang Anda mungkin perlu membuat pengecualian untuk mengizinkan traffic internal atau eksternal tertentu dikecualikan dari kebijakan keamanan Cloud Service Mesh, yang menimbulkan masalah keamanan.

Anda mungkin memiliki alasan yang sah untuk mengabaikan kebijakan keamanan Cloud Service Mesh untuk beberapa port dan rentang IP. Anda dapat menambahkan anotasi (seperti, excludeInboundPorts, excludeOutboundPorts, excludeOutboundIPRanges) ke Pod untuk mengecualikan traffic agar tidak ditangani oleh file bantuan Envoy. Selain anotasi untuk mengecualikan traffic, Anda dapat mengabaikan mesh secara keseluruhan dengan men-deploy aplikasi dengan injeksi file bantuan dinonaktifkan. Misalnya, dengan menambahkan label sidecar.istio.io/inject="false" ke Pod aplikasi.

Mengabaikan kebijakan keamanan Cloud Service Mesh akan berdampak negatif pada keamanan sistem secara keseluruhan. Misalnya, jika kebijakan otorisasi dan mTLS Cloud Service Mesh diabaikan untuk port jaringan melalui anotasi, tidak akan ada kontrol akses untuk traffic di port tersebut dan penyadapan atau modifikasi traffic mungkin dapat dilakukan. Selain itu, mengabaikan kebijakan Cloud Service Mesh juga akan memengaruhi kebijakan non-keamanan, seperti kebijakan jaringan.

Saat kebijakan keamanan Cloud Service Mesh dilewati untuk satu port atau IP (baik secara sengaja maupun tidak sengaja), harus ada langkah keamanan lain untuk mengamankan mesh dan memantau pengecualian keamanan, potensi celah keamanan, dan status penegakan keamanan secara keseluruhan. Untuk mengamankan mesh dalam skenario tersebut, Anda dapat:

  • Pastikan traffic yang mengabaikan file bantuan dienkripsi dan diautentikasi secara native untuk mencegah serangan MitM.
  • Terapkan Kebijakan Jaringan Kubernetes untuk membatasi konektivitas port dengan pengecualian kebijakan (misalnya, membatasi port dengan pengecualian kebijakan agar hanya mengizinkan traffic dari layanan lain dalam namespace yang sama) atau hanya mengizinkan traffic untuk melewati port yang menerapkan kebijakan keamanan Cloud Service Mesh.
  • Terapkan Pengontrol Kebijakan Perusahaan GKE untuk memvalidasi kebijakan Cloud Service Mesh secara otomatis. Misalnya, terapkan agar file bantuan Cloud Service Mesh selalu dimasukkan ke beban kerja.

Menerapkan Kebijakan Jaringan Kubernetes

Cloud Service Mesh dibangun berdasarkan platform yang mendasarinya (misalnya, Kubernetes). Dengan demikian, keamanan Cloud Service Mesh bergantung pada keamanan platform yang mendasarinya. Misalnya, tanpa kontrol atas siapa yang dapat mengupdate resource Kubernetes, pengguna dapat mengubah deployment Kubernetes suatu layanan untuk mengabaikan file bantuan layanan tersebut.

Guna membentuk postur keamanan yang kuat untuk mesh layanan, mekanisme keamanan platform dasar harus diterapkan agar dapat bekerja sama dengan kebijakan keamanan Cloud Service Mesh.

Kebijakan Jaringan Kubernetes beroperasi di Lapisan jaringan (L3 dan L4) untuk alamat IP dan port pada Pod dan namespace Kubernetes. Kebijakan jaringan Kubernetes dapat diterapkan bersama kebijakan Cloud Service Mesh untuk meningkatkan keamanan mesh.

Misalnya, administrator mesh dapat mengonfigurasi Kebijakan Jaringan Kubernetes agar hanya mengizinkan traffic untuk menggunakan port dengan kebijakan keamanan Cloud Service Mesh yang diterapkan. Jika semua traffic harus diterapkan dengan Cloud Service Mesh mTLS, administrator dapat mengonfigurasi kebijakan jaringan Kubernetes agar hanya mengizinkan traffic pada port yang dikonfigurasi dengan kebijakan mTLS Cloud Service Mesh. Administrator mesh juga dapat mengonfigurasi Kebijakan Jaringan Kubernetes untuk membatasi konektivitas port dengan pengecualian kebijakan. Misalnya, batasi konektivitas port tersebut agar berada dalam namespace.

Akses bidang kontrol aman

Bidang kontrol Cloud Service Mesh mengautentikasi setiap klien yang terhubung. Oleh karena itu, hanya pemanggil dengan kredensial valid (sertifikat Kubernetes JWT atau X.509 yang diterbitkan oleh CA yang diizinkan) yang dapat mengakses bidang kontrol Cloud Service Mesh. TLS mengenkripsi koneksi antara workload dan bidang kontrol Cloud Service Mesh.

Selain mekanisme autentikasi, untuk Cloud Service Mesh dalam cluster, kebijakan jaringan Kubernetes dapat di-deploy untuk mengisolasi namespace sistem Cloud Service Mesh (secara default istio-system) dari namespace yang tidak dikelola dan klien di luar mesh sekaligus mengizinkan bidang data mengakses bidang kontrol. Aturan firewall VPC dapat mencegah traffic di luar cluster menjangkau Istiod. Dengan tindakan isolasi jaringan tersebut, penyerang dari luar mesh tidak dapat mengakses bidang kontrol, meskipun penyerang memiliki kredensial yang valid. Untuk bidang kontrol terkelola, Google menangani keamanan bidang kontrol dan kebijakan isolasi jaringan untuk bidang kontrol tidak diperlukan.

Menerapkan batas namespace

Untuk mencegah pengguna dengan satu namespace mengakses/memperbarui resource di namespace tidak resmi:

Menerapkan kebijakan RBAC Kubernetes

Administrator mesh harus menerapkan kebijakan RBAC Kubernetes untuk mengontrol siapa yang diizinkan untuk mengakses dan mengupdate resource Kubernetes. Kontrol akses Kubernetes dapat memitigasi risiko keamanan di mesh. Misalnya, pengguna yang tidak berwenang tidak boleh diizinkan mengubah deployment Kubernetes dan mengabaikan penerapan kebijakan Cloud Service Mesh. Peran pengguna harus terikat dengan namespace sehingga pengguna tidak diizinkan untuk mengakses namespace selain yang diperlukan. Untuk panduan terperinci dan contoh cara mengonfigurasi RBAC, lihat Mengonfigurasi kontrol akses berbasis peran. Setelah mengaktifkan Workload Identity, Anda juga dapat mengizinkan akun layanan Kubernetes untuk bertindak sebagai akun layanan IAM.

Keamanan edge mesh

Karena sebagian besar serangan juga dapat berasal dari luar cluster, sangatlah penting untuk memastikan keamanan di tepi mesh.

Kontrol akses masuk cluster

Cloud Service Mesh menerima traffic eksternal yang masuk melalui gateway masuk. Layanan yang diekspos oleh gateway masuk berpotensi menghadapi serangan dari sumber eksternal. Administrator keamanan harus selalu memastikan bahwa layanan yang terekspos ke traffic eksternal melalui gateway masuk cukup aman untuk melindungi dari serangan.

Traffic masuk harus menerapkan autentikasi dan otorisasi untuk layanan yang diekspos ke pemanggil eksternal.

  • Menerapkan kebijakan keamanan traffic masuk cluster. Saat cluster perlu menerima traffic eksternal, administrator mesh harus menerapkan kebijakan keamanan masuk, termasuk gateway TLS, autentikasi, dan kebijakan otorisasi Cloud Service Mesh, untuk mengautentikasi permintaan eksternal dan memverifikasi bahwa permintaan eksternal diizinkan untuk mengakses layanan yang diekspos oleh gateway masuk. Menerapkan kebijakan keamanan masuk akan melindungi dari serangan dari luar mesh yang mencoba mengakses layanan tanpa kredensial atau izin yang valid.
  • Gunakan Cloud Armor untuk berfungsi sebagai Firewall Aplikasi Web (WAF) untuk memberikan pertahanan dari serangan berbasis web (misalnya serangan injeksi dan serangan eksekusi jarak jauh). Untuk mengetahui informasi selengkapnya, lihat Dari edge ke mesh: Mengekspos aplikasi mesh layanan melalui GKE Ingress.

Mengatur traffic keluar cluster

Keamanan traffic keluar cluster sangat penting untuk keamanan mesh karena kebijakan keamanan keluar dapat melindungi dari serangan pemindahan data yang tidak sah, menerapkan pemfilteran traffic keluar, dan menerapkan asal TLS untuk traffic keluar. Administrator keamanan harus mengatur dan mengaudit traffic keluar cluster.

Selain menggunakan dinding firewall VPC untuk membatasi traffic keluar, administrator mesh juga harus menerapkan kebijakan keamanan keluar untuk cluster dan mengonfigurasi traffic keluarnya untuk melewati gateway keluar.

Kebijakan traffic keluar dapat memitigasi serangan berikut:

  • Serangan pemindahan data yang tidak sah.
  • Pod Layanan dapat dieksploitasi oleh penyerang jika CVE-nya tidak di-patch. Pod yang disusupi dapat menjadi botnet yang dikontrol oleh penyerang untuk mengirim spam atau meluncurkan serangan DoS.

Kebijakan otorisasi yang diterapkan ke gateway keluar dapat memastikan bahwa hanya layanan yang diotorisasi yang diizinkan untuk mengirim traffic ke host tertentu di luar mesh. Sementara itu, untuk traffic yang keluar dari mesh, daripada menangani asal TLS di setiap file bantuan, TLS dapat berasal dari gateway keluar. Cara ini memberikan cara yang seragam dan lebih aman untuk memulai traffic TLS karena sertifikat klien untuk mTLS dapat diisolasi dari namespace tempat aplikasi berjalan.

Gunakan cluster pribadi atau Kontrol Layanan VPC untuk mengunci akses eksternal

Selain menerapkan kebijakan keamanan traffic masuk dan keluar, kunci akses eksternal menggunakan cluster pribadi atau Kontrol Layanan VPC jika memungkinkan. Meskipun kebijakan keamanan dikontrol oleh administrator keamanan mesh, konfigurasi cluster pribadi atau Kontrol Layanan VPC dapat diberlakukan oleh administrator keamanan organisasi.

Kontrol Layanan VPC dapat diterapkan untuk menentukan perimeter keamanan bagi layanan guna:

  • Membatasi layanan agar tidak mengakses resource luar.
  • Membatasi orang luar agar tidak mengakses layanan di perimeter keamanan.

Kontrol Layanan VPC membantu melindungi data dari serangan pemindahan data yang tidak sah dan mencegah penyerang eksternal mengakses layanan di dalam mesh.

Melindungi Anda dari serangan DDoS eksternal

Serangan DDoS eksternal dapat membebani gateway masuk dan layanan backend, sehingga permintaan yang sah tidak dapat ditangani. Cloud Armor dapat digunakan untuk melindungi dari serangan DDoS. Cloud Armor tidak hanya melindungi dari serangan DDoS lapisan jaringan (L3 dan L4), tetapi juga serangan DDoS lapisan aplikasi (L7).

Keamanan untuk administrasi dan otomatisasi mesh

Sebaiknya pertimbangkan keamanan untuk operasi administratif dan otomatisasi apa pun yang Anda bangun di mesh Anda, misalnya CI/CD. Praktik berikut bertujuan untuk memastikan bahwa mesh dapat dioperasikan dengan aman tanpa risiko mengekspos layanan terhadap serangan tambahan.

Menyegmentasikan peran yang digunakan untuk operasi mesh

Dengan mengikuti prinsip yang sama seperti kontrol akses berbasis peran, pengguna mesh harus diklasifikasikan menurut perannya. Setiap peran hanya boleh diberi kumpulan hak istimewa minimum yang diperlukan oleh peran tersebut.

Misalnya, kumpulan pengguna yang melakukan deployment layanan tidak boleh memiliki hak istimewa untuk memperbarui kebijakan autentikasi dan otorisasi.

Ada berbagai kategori operator. Misalnya, operator cluster dan operator namespace. Anda harus mencegah eskalasi akses dari operator, yang dapat mengakibatkan akses terlarang ke resource yang tidak sah.

Kebijakan Kubernetes RBAC memungkinkan administrator mesh membatasi akses resource hanya untuk pengguna yang diotorisasi.

Memvalidasi konfigurasi kebijakan secara otomatis

Operator dapat secara tidak sengaja salah mengonfigurasi kebijakan Cloud Service Mesh, yang dapat mengakibatkan insiden keamanan serius. Untuk mencegah kesalahan konfigurasi dan memvalidasi kebijakan Cloud Service Mesh secara otomatis, administrator mesh dapat menggunakan Pengontrol Kebijakan untuk menerapkan batasan pada konfigurasi kebijakan.

Agar tidak terlalu memercayai individu yang memiliki izin untuk memperbarui kebijakan keamanan Cloud Service Mesh dan mengotomatiskan validasi kebijakan Cloud Service Mesh, administrator mesh harus menerapkan batasan pada kebijakan Cloud Service Mesh menggunakan Pengontrol Kebijakan.

Pengontrol Kebijakan didasarkan pada project Gatekeeper open source dan dapat dijalankan sebagai pengontrol penerimaan Kubernetes untuk menolak penerapan resource yang tidak valid atau dalam mode audit sehingga administrator dapat diberi tahu tentang pelanggaran. Pengontrol Kebijakan dapat otomatis memvalidasi deployment resource di mesh, seperti memvalidasi bahwa anotasi pada deployment tidak mengabaikan kebijakan Cloud Service Mesh, memvalidasi bahwa kebijakan Cloud Service Mesh seperti yang diharapkan, dan memvalidasi bahwa deployment tidak menyertakan kemampuan root (seperti, NET_ADMIN dan NET_RAW).

Pengontrol Kebijakan juga dapat mengaudit resource Cloud Service Mesh yang ada terhadap batasan untuk mendeteksi konfigurasi kebijakan.

Berikut adalah beberapa contoh Pengontrol Kebijakan Perusahaan GKE yang menerapkan kebijakan keamanan:

Library template batasan yang disediakan dengan Pengontrol Kebijakan berisi kumpulan template batasan yang dapat digunakan dengan paket batasan keamanan Cloud Service Mesh siap pakai untuk menerapkan praktik terbaik keamanan Cloud Service Mesh tertentu, misalnya autentikasi, otorisasi, dan kebijakan traffic. Berikut adalah beberapa contoh batasan yang disertakan dalam paket:

  • Terapkan PeerAuthentication mTLS ketat tingkat mesh.
  • Penerapan semua PeerAuthentication tidak dapat menimpa mTLS yang ketat.
  • Terapkan tolak default tingkat mesh AuthorizationPolicy.
  • Terapkan pola aman AuthorizationPolicy.
  • Terapkan file sampingan Cloud Service Mesh selalu dimasukkan ke workload.

Untuk menangani pengecualian dan situasi akses darurat, administrator mesh dapat:

Menggunakan pendekatan GitOps dengan Config Sync untuk mencegah penyimpangan konfigurasi

Penyimpangan konfigurasi terjadi saat konfigurasi kebijakan dalam mesh menyimpang dari sumber tepercayanya. Config Sync dapat digunakan untuk mencegah penyimpangan konfigurasi.

Menerapkan Logging Audit dan pemantauan

Administrator mesh harus memantau hal berikut:

Resource kemampuan observasi ini dapat digunakan untuk memverifikasi bahwa konfigurasi keamanan berfungsi seperti yang diharapkan dan memantau setiap pengecualian pada penerapan kebijakan keamanan. Misalnya, akses yang tidak melalui file bantuan, akses yang tidak memiliki kredensial valid, tetapi dapat mencapai layanan.

Meskipun software kemampuan observasi open source (misalnya, Prometheus) dapat digunakan dengan Cloud Service Mesh, sebaiknya gunakan Google Cloud Observability (sebelumnya bernama Stackdriver). Solusi kemampuan observasi bawaan untuk Google Cloud menyediakan logging, pengumpulan metrik, pemantauan, dan pemberitahuan, yang terkelola sepenuhnya dan mudah digunakan.

Melindungi certificate authority untuk sertifikat dalam cluster

Secara default, Cloud Service Mesh menggunakan certificate authority (CA) yang dikelola Google, yang disebut certificate authority Cloud Service Mesh.

Jika Anda menggunakan certificate authority (CA) Istio yang tidak dikelola, yang dihosting sebagai bagian dari Istiod, kunci penandatanganan CA disimpan dalam rahasia Kubernetes dan dapat diakses oleh operator yang memiliki akses ke resource rahasia di namespace istio-system. Hal ini merupakan risiko karena operator mungkin dapat menggunakan kunci CA secara terpisah dari CA Istiod dan berpotensi menandatangani sertifikat workload secara independen. Ada juga risiko bahwa kunci penandatanganan CA yang dikelola sendiri dapat secara tidak sengaja bocor karena error operasional.

Untuk melindungi kunci penandatanganan CA, administrator mesh dapat mengupgrade mesh untuk menggunakan certificate authority Cloud Service Mesh atau Certificate Authority Service (CA Service), yang diamankan dan dikelola oleh Google. Dibandingkan dengan certificate authority Cloud Service Mesh, CA Service mendukung kunci penandatanganan per pelanggan melalui Cloud KMS yang didukung oleh Cloud HSM. CA Service juga mendukung workload teregulasi, sedangkan certificate authority Cloud Service Mesh tidak.

Keamanan workload

Keamanan workload melindungi dari serangan yang membahayakan Pod workload, kemudian menggunakan Pod yang telah disusupi untuk meluncurkan serangan terhadap cluster (misalnya, serangan botnet).

Membatasi hak istimewa Pod

Pod Kubernetes mungkin memiliki hak istimewa yang memengaruhi Pod lain di node atau cluster. Penting untuk menerapkan pembatasan keamanan pada Pod workload guna mencegah Pod yang disusupi meluncurkan serangan terhadap cluster.

Untuk menerapkan prinsip hak istimewa terendah untuk workload pada Pod:

  • Layanan yang di-deploy di mesh harus berjalan dengan hak istimewa sesedikit mungkin.
  • Pod Kubernetes yang berjalan dalam mode hak istimewa dapat memanipulasi stack jaringan dan kemampuan kernel lainnya di host. Pengontrol Kebijakan GKE Enterprise dapat digunakan untuk mencegah Pod menjalankan container dengan hak istimewa.
  • Cloud Service Mesh dapat dikonfigurasi agar dapat menggunakan container init untuk mengonfigurasi pengalihan traffic iptables ke file bantuan. Untuk itu, pengguna yang melakukan deployment beban kerja harus memiliki hak istimewa untuk men-deploy container dengan kemampuan NET_ADMIN dan NET_RAW. Untuk menghindari risiko menjalankan container dengan hak istimewa yang ditingkatkan, administrator mesh dapat enable plugin Istio CNI untuk mengonfigurasi pengalihan traffic ke file bantuan.

Image container yang aman

Penyerang dapat meluncurkan serangan dengan mengeksploitasi image container yang rentan. Administrator harus menerapkan Otorisasi Biner untuk memverifikasi integritas image container dan memastikan hanya image container tepercaya yang di-deploy di mesh.

Melakukan mitigasi terhadap kerentanan mesh

  • Container Analysis. Container Analysis dapat memindai dan menampilkan kerentanan di workload GKE.
  • Penanganan CVE (Kerentanan dan Eksposur Umum). Setelah kerentanan ditemukan di image container, administrator mesh harus memperbaiki kerentanan tersebut sesegera mungkin. Untuk Cloud Service Mesh terkelola dengan bidang data terkelola, Google akan otomatis menangani patching CVE yang memengaruhi image mesh.

Menggunakan Workload Identity untuk mengakses layanan Google dengan aman

Workload Identity adalah cara yang direkomendasikan bagi workload mesh untuk mengakses layanan Google dengan aman. Alternatif dari menyimpan kunci akun layanan di rahasia Kubernetes dan menggunakan kunci akun layanan untuk mengakses layanan Google tidak aman karena risiko kebocoran kredensial, eskalasi akses, pengungkapan informasi, dan non-penyangkalan.

Memantau status keamanan melalui telemetri dan dasbor keamanan

Mesh layanan mungkin memiliki pengecualian keamanan dan potensi celah. Sangat penting untuk menampilkan dan memantau status keamanan mesh, yang mencakup kebijakan keamanan yang diterapkan, pengecualian keamanan, dan potensi celah keamanan di mesh. Dasbor keamanan dan telemetri GKE Enterprise dapat digunakan untuk menampilkan dan memantau status keamanan mesh.

Telemetri memantau kondisi dan performa layanan dalam mesh, yang memungkinkan administrator mesh mengamati perilaku layanan (seperti SLO, traffic abnormal, pemadaman layanan, topologi).

Dasbor keamanan GKE Enterprise menganalisis dan memvisualisasikan kebijakan keamanan yang diterapkan pada workload dalam mesh layanan, termasuk kebijakan kontrol akses (Kebijakan Jaringan Kubernetes, kebijakan Otorisasi Biner, dan kebijakan kontrol akses layanan), serta kebijakan autentikasi (mTLS).

Keamanan untuk kredensial dan data pengguna yang sensitif

Data atau kredensial pengguna yang sensitif dapat menjadi rentan terhadap serangan yang berasal dari Pod atau operasi berbahaya jika disimpan dalam penyimpanan persisten cluster, seperti menggunakan secret Kubernetes atau langsung di Pod. Server juga rentan terhadap serangan jaringan jika ditransfer melalui jaringan untuk autentikasi ke layanan.

  • Jika memungkinkan, simpan kredensial dan data pengguna yang sensitif di penyimpanan yang dilindungi, seperti Secret Manager dan Cloud KMS.
  • Tetapkan namespace terpisah untuk Pod Kubernetes yang mengakses data sensitif dan tentukan kebijakan Kubernetes agar tidak dapat diakses dari namespace lain. Segmentasikan peran yang digunakan untuk operasi dan terapkan batas namespace.
  • Terapkan pertukaran token untuk mencegah pemindahan token yang berumur panjang dan memiliki hak istimewa tinggi yang tidak sah.

Langkah selanjutnya