Dokumen ini menjelaskan praktik terbaik untuk membuat dan mengatur konfigurasi Anthos Service Mesh aman yang berjalan di Google Kubernetes Engine (GKE). Panduan dalam dokumen ini tidak hanya berisi setelan yang digunakan untuk mengonfigurasi dan menginstal Anthos Service Mesh, serta menjelaskan cara menggunakan Anthos Service Mesh dengan produk dan fitur Google Cloud lainnya untuk melindungi dari ancaman keamanan yang mungkin dihadapi aplikasi dalam mesh.
Audiens yang dituju untuk dokumen ini mencakup administrator yang mengelola kebijakan di Anthos Service Mesh dan pengguna yang menjalankan layanan di Anthos Service Mesh. Langkah-langkah keamanan yang dijelaskan di sini juga berguna bagi organisasi yang perlu meningkatkan keamanan mesh layanan mereka untuk memenuhi persyaratan kepatuhan.
Dokumen ini disusun sebagai berikut:
- Pengantar
- Vektor serangan dan risiko keamanan
- Tindakan untuk melindungi mesh layanan
- Arsitektur keamanan
- Keamanan cluster
- Keamanan edge mesh
- Keamanan untuk administrasi dan otomatisasi mesh
- Keamanan beban kerja
- Keamanan untuk kredensial dan data pengguna yang sensitif
Pengantar
Anthos Service Mesh menyediakan fitur dan alat yang membantu Anda mengamati, mengelola, dan mengamankan layanan secara terpadu. Dibutuhkan pendekatan yang berpusat 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. Anthos Service Mesh memberikan kontrol deklaratif atas perilaku jaringan, yang membantu memisahkan pekerjaan tim yang bertanggung jawab untuk memberikan dan merilis fitur aplikasi dari tanggung jawab administrator yang bertanggung jawab atas keamanan dan jaringan.
Anthos 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 Anthos 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 bersifat penting.
Vektor serangan dan risiko keamanan
Vektor serangan
Keamanan Anthos 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 meliputi:
- Serangan pemindahan data yang tidak sah. Misalnya, serangan yang menyadap data atau kredensial sensitif 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 antarlayanan.
- Serangan eskalasi akses. Misalnya, serangan yang menggunakan akses terlarang ke hak istimewa yang ditingkatkan untuk melakukan operasi di jaringan.
- Serangan denial of service (DoS).
- Serangan {i>botnet<i} yang mencoba menyusupi dan memanipulasi layanan untuk meluncurkan serangan pada layanan lain.
Serangan tersebut juga dapat dikategorikan berdasarkan target serangan:
- Serangan jaringan internal mesh. Serangan yang bertujuan untuk merusak, menyadap, atau memalsukan komunikasi layanan-ke-layanan atau layanan-ke-kontrol-bidang internal.
- Serangan bidang kontrol. Serangan yang bertujuan menyebabkan bidang kontrol mengalami malfungsi (seperti serangan DoS), atau memindahkan data sensitif dari bidang kontrol.
- Serangan mesh. Serangan yang bertujuan untuk merusak, menyadap, atau memalsukan komunikasi yang masuk atau keluar melalui mesh.
- Serangan operasi mesh. Serangan yang ditujukan untuk operasi {i>mesh<i}. Penyerang mungkin mencoba mendapatkan hak istimewa yang ditingkatkan untuk melakukan operasi berbahaya dalam mesh, seperti mengubah kebijakan keamanan dan image workload-nya.
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 mereka, pengguna dapat membuat pengecualian kebijakan keamanan untuk traffic tertentu (internal atau eksternal) agar dikecualikan dari kebijakan keamanan Anthos Service Mesh. Untuk menangani kasus tersebut dengan aman, lihat bagian Menangani pengecualian kebijakan dengan aman.
- Abaikan 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). Konfigurasi kebijakan dan software mesh memerlukan pemeliharaan rutin untuk memanfaatkan mekanisme perlindungan keamanan terbaru.
- Kurangnya visibilitas. Kesalahan konfigurasi atau konfigurasi mesh yang tidak aman dan traffic/operasi mesh yang tidak normal tidak akan menjadi perhatian administrator mesh.
- Penyimpangan konfigurasi. Konfigurasi kebijakan dalam mesh menyimpang dari sumber kebenaran.
Langkah-langkah untuk melindungi mesh layanan
Bagian ini menyajikan 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 Anthos Service Mesh yang diusulkan adalah mengamankan mesh layanan melalui integrasi beberapa mekanisme keamanan di berbagai lapisan, yang secara bersama-sama mencapai keamanan sistem secara keseluruhan di bawah model keamanan zero-trust. Diagram berikut menunjukkan postur keamanan Anthos Service Mesh yang diusulkan.
Anthos Service Mesh menyediakan keamanan di berbagai lapisan, termasuk:
- Keamanan edge mesh
- Keamanan ingress Anthos Service Mesh menyediakan kontrol akses untuk traffic eksternal dan mengamankan akses eksternal ke API yang diekspos oleh layanan di mesh.
- Keamanan traffic keluar Anthos Service Mesh mengatur traffic keluar dari workload internal.
- Anthos Service Mesh User Auth terintegrasi dengan infrastruktur Google untuk mengautentikasi panggilan eksternal dari browser web ke layanan yang menjalankan aplikasi web.
- Pengelolaan sertifikat gateway Anthos Service Mesh melindungi dan merotasi kunci pribadi serta sertifikat X.509 yang digunakan oleh gateway masuk dan keluar Anthos Service Mesh menggunakan Certificate Authority Service.
- Cloud Armor dapat memberikan perlindungan dari serangan Distributed Denial of Service (DDoS) eksternal dan Lapisan 7. Firewall ini berfungsi sebagai Firewall Aplikasi Web (WAF) untuk melindungi mesh dari serangan jaringan. Misalnya, serangan eksekusi kode jarak jauh dan injeksi.
- Kontrol Layanan VPC dan VPC melindungi tepi mesh melalui kontrol akses jaringan pribadi.
- Keamanan cluster
- Anthos Service Mesh bersama TLS (mTLS) menerapkan enkripsi dan autentikasi traffic workload-to-workload.
- CA terkelola, seperti certificate authority Anthos Service Mesh (Mesh CA) dan Certificate Authority Service, menyediakan dan mengelola sertifikat yang digunakan oleh workload dengan aman.
- Otorisasi Anthos Service Mesh menerapkan kontrol akses untuk layanan mesh berdasarkan identitas 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 pesawat kontrol melindungi dari serangan di pesawat kontrol. Perlindungan ini mencegah penyerang memodifikasi, mengeksploitasi, atau membocorkan layanan dan data konfigurasi mesh.
- Keamanan workload
- Dapatkan info terbaru terkait rilis keamanan Anthos Service Mesh untuk memastikan biner Anthos Service Mesh yang berjalan di mesh Anda bebas dari kerentanan yang diketahui publik.
- Workload Identity memungkinkan beban kerja mendapatkan kredensial untuk memanggil layanan Google dengan aman.
- Cloud Key Management Service (Cloud KMS) mengamankan data atau kredensial sensitif melalui Hardware Security Modules (HSM). Misalnya, workload dapat menggunakan Cloud KMS untuk menyimpan kredensial atau data sensitif lainnya. CA Service—digunakan untuk menerbitkan sertifikat untuk workload mesh—mendukung kunci penandatanganan per pelanggan dan yang didukung HSM yang dikelola oleh Cloud KMS.
- Kubernetes CNI (Container Network Interface) mencegah serangan eskalasi hak istimewa dengan menghilangkan kebutuhan akan container init Anthos Service Mesh dengan hak istimewa.
- Keamanan operator
- Role-based access control (RBAC) Kubernetes membatasi akses ke resource Kubernetes dan izin operator untuk memitigasi serangan yang berasal dari operator berbahaya atau peniruan identitas operator.
- GKE Enterprise Policy Controller memvalidasi dan mengaudit konfigurasi kebijakan dalam mesh untuk mencegah kesalahan konfigurasi.
- Otorisasi Biner Google Cloud memastikan bahwa image workload di 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 Anthos Service Mesh.
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 tersebut. Anthos Service Mesh memberikan perlindungan dari serangan MitM dan pemindahan data yang tidak sah dengan menerapkan autentikasi dan enkripsi mTLS untuk semua pihak yang berkomunikasi. Mode permisif menggunakan mTLS jika kedua belah pihak mendukungnya, tetapi memungkinkan koneksi tanpa mTLS. Sebaliknya, mTLS yang ketat mengharuskan traffic dienkripsi dan diautentikasi dengan mTLS dan tidak mengizinkan traffic teks biasa.
Untuk informasi selengkapnya, lihat Anthos Service Mesh melalui contoh: mTLS | Menerapkan mTLS di seluruh mesh.
Mengaktifkan kontrol akses
Kebijakan keamanan Anthos Service Mesh (seperti kebijakan autentikasi dan otorisasi) harus diterapkan pada semua traffic masuk dan keluar mesh kecuali ada justifikasi kuat untuk mengecualikan layanan atau Pod dari kebijakan keamanan Anthos Service Mesh. Dalam beberapa kasus, pengguna mungkin memiliki alasan yang sah untuk mengabaikan kebijakan keamanan Anthos Service Mesh untuk beberapa port dan rentang IP. Misalnya, untuk membuat koneksi native dengan layanan yang tidak dikelola oleh Anthos Service Mesh. Untuk mengamankan Anthos Service Mesh dalam kasus penggunaan tersebut, lihat Menangani pengecualian kebijakan Anthos Service Mesh dengan aman.
Kontrol akses layanan sangat penting dalam mencegah akses tidak sah ke layanan. Penerapan mTLS mengenkripsi dan mengautentikasi permintaan, tetapi mesh masih memerlukan kebijakan otorisasi Anthos Service Mesh untuk menerapkan kontrol akses pada layanan. Misalnya, menolak permintaan tidak sah yang berasal dari klien yang diautentikasi.
Kebijakan otorisasi Anthos Service Mesh menyediakan cara yang fleksibel untuk mengonfigurasi kontrol akses guna melindungi layanan Anda dari akses tanpa izin. Kebijakan otorisasi Anthos 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 Anthos Service Mesh.
Menerapkan kebijakan autentikasi Anthos Service Mesh
Token Web JSON (JWT)
Selain autentikasi mTLS, administrator mesh dapat meminta layanan untuk mengautentikasi dan mengizinkan permintaan berdasarkan JWT. Anthos Service Mesh tidak bertindak sebagai penyedia JWT, tetapi mengautentikasi JWT berdasarkan endpoint set kunci web (JWKS) JSON yang dikonfigurasi. Autentikasi JWT dapat diterapkan ke gateway masuk untuk traffic eksternal atau ke layanan internal untuk traffic dalam 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 akan melindungi Anda dari serangan yang mengakses layanan tanpa kredensial yang valid dan atas nama pengguna akhir yang sebenarnya.
Autentikasi pengguna Anthos Service Mesh
Autentikasi pengguna Anthos Service Mesh adalah solusi terintegrasi untuk autentikasi pengguna akhir berbasis browser dan kontrol akses ke workload Anda. Fitur ini mengintegrasikan mesh layanan dengan Identity Provider (IdP) yang ada untuk menerapkan alur izin dan login OpenID Connect (OIDC) berbasis web standar, serta menggunakan kebijakan otorisasi Anthos Service Mesh untuk kontrol akses.
Kontrol kebijakan otorisasi Anthos Service Mesh:
- 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, properti lapisan aplikasi (Lapisan 7) dari traffic (misalnya header permintaan), dan properti lapisan jaringan (Lapisan 3 dan Lapisan 4), seperti port dan rentang IP.
Kebijakan otorisasi Anthos 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 ditentukan 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 ditukar dengan token internal mesh berjangka pendek 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 ditukar dengan token internal mesh berumur pendek dengan cakupan terbatas saat masuknya mesh. Layanan mesh mengautentikasi token internal mesh dan mengizinkan permintaan akses berdasarkan token internal mesh.
Anthos Service Mesh mendukung integrasi dengan Identity-Aware Proxy (IAP), yang menghasilkan RequestContextToken
(token internal mesh berumur pendek yang ditukar dari token eksternal) yang digunakan di Anthos Service Mesh untuk otorisasi. Dengan pertukaran token, penyerang tidak dapat menggunakan token yang dicuri di mesh untuk mengakses layanan. Cakupan terbatas dan masa pakai token yang dipertukarkan sangat mengurangi
kemungkinan serangan replay token.
Menangani pengecualian kebijakan Anthos 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 biasa. Untuk mengakomodasi skenario penggunaan tertentu, terkadang Anda mungkin perlu membuat pengecualian untuk mengizinkan traffic internal atau eksternal tertentu dikecualikan dari kebijakan keamanan Anthos Service Mesh, yang akan menimbulkan masalah keamanan.
Anda mungkin memiliki alasan yang sah untuk mengabaikan kebijakan keamanan Anthos 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 melewati semua mesh
dengan men-deploy aplikasi dengan
injeksi file bantuan dinonaktifkan.
Misalnya, dengan menambahkan label sidecar.istio.io/inject="false"
ke Pod aplikasi.
Menghindari kebijakan keamanan Anthos Service Mesh memiliki dampak negatif terhadap keamanan sistem secara keseluruhan. Misalnya, jika mTLS dan kebijakan otorisasi Anthos Service Mesh diabaikan untuk port jaringan melalui anotasi, maka tidak akan ada kontrol akses untuk traffic pada port dan penyadapan atau modifikasi traffic mungkin dapat dilakukan. Selain itu, mengabaikan kebijakan Anthos Service Mesh juga akan memengaruhi kebijakan non-keamanan, seperti kebijakan jaringan.
Saat kebijakan keamanan Anthos Service Mesh diabaikan untuk port atau IP (baik secara sengaja maupun tidak), harus ada tindakan 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 melewati sidecar telah dienkripsi dan diautentikasi secara native untuk mencegah serangan MitM.
- Menerapkan Kebijakan Jaringan Kubernetes untuk membatasi konektivitas port dengan pengecualian kebijakan (misalnya, membatasi port yang memiliki pengecualian kebijakan agar hanya mengizinkan traffic dari layanan lain di namespace yang sama) atau hanya mengizinkan traffic yang melewati port yang menerapkan kebijakan keamanan Anthos Service Mesh.
- Terapkan GKE Enterprise Policy Controller untuk memvalidasi kebijakan Anthos Service Mesh secara otomatis. Misalnya, terapkan agar sidecar Anthos Service Mesh selalu dimasukkan ke beban kerja.
Menerapkan Kebijakan Jaringan Kubernetes
Anthos Service Mesh di-build berdasarkan platform yang mendasarinya (misalnya, Kubernetes). Oleh karena itu, keamanan Anthos Service Mesh bergantung pada keamanan platform yang mendasarinya. Misalnya, tanpa kontrol atas siapa yang dapat mengupdate resource Kubernetes, pengguna dapat mengubah deployment layanan Kubernetes untuk mengabaikan file bantuan layanan.
Guna membentuk postur keamanan yang kuat untuk mesh layanan, mekanisme keamanan platform dasar harus diterapkan agar dapat bekerja sama dengan kebijakan keamanan Anthos Service Mesh.
Kebijakan Jaringan Kubernetes beroperasi di Lapisan jaringan (L3 dan L4) untuk alamat IP dan port di Kubernetes Pod dan namespace. Kebijakan jaringan Kubernetes dapat diterapkan bersamaan dengan kebijakan Anthos Service Mesh untuk meningkatkan keamanan mesh.
Misalnya, administrator mesh dapat mengonfigurasi Kebijakan Jaringan Kubernetes agar hanya mengizinkan traffic untuk menggunakan port dengan menerapkan kebijakan keamanan Anthos Service Mesh. Jika semua traffic harus diterapkan dengan mTLS Anthos Service Mesh, administrator dapat mengonfigurasi kebijakan jaringan Kubernetes untuk hanya mengizinkan traffic pada port yang dikonfigurasi dengan kebijakan mTLS Anthos 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 Anthos Service Mesh mengautentikasi setiap klien yang terhubung. Dengan demikian, hanya pemanggil dengan kredensial yang valid (sertifikat Kubernetes JWT atau X.509 yang diterbitkan oleh CA yang diizinkan) yang dapat mengakses bidang kontrol Anthos Service Mesh. TLS mengenkripsi koneksi antara workload dan bidang kontrol Anthos Service Mesh.
Selain mekanisme autentikasi, untuk Anthos Service Mesh dalam cluster, kebijakan jaringan Kubernetes dapat di-deploy untuk mengisolasi namespace sistem Anthos Service Mesh (secara default istiosistem) dari klien dan namespace tidak terkelola di luar mesh sekaligus mengizinkan bidang data mengakses bidang kontrol. Aturan firewall VPC dapat mencegah traffic di luar cluster mencapai Istiod. Dengan tindakan isolasi jaringan tersebut, penyerang dari luar mesh tidak akan dapat mengakses bidang kontrol, meskipun jika penyerang memiliki kredensial yang valid. Untuk bidang kontrol yang dikelola Google, Google menangani keamanan untuk bidang kontrol dan kebijakan isolasi jaringan untuk bidang kontrol tersebut tidak diperlukan.
Menerapkan batas namespace
Untuk mencegah pengguna satu namespace mengakses/mengupdate resource di namespace tidak sah:
- Menerapkan kontrol akses.
- Menerapkan Kebijakan Jaringan Kubernetes. Jika layanan dalam namespace tidak memiliki traffic di luar namespace, administrator mesh harus men-deploy kebijakan jaringan Kubernetes yang hanya mengizinkan traffic di dalam namespace: tidak ada traffic masuk atau keluar dari namespace.
- Menerapkan kebijakan RBAC Kubernetes.
- Peran administrator aplikasi harus terikat dengan namespace.
- Hanya izinkan administrator mesh memiliki ClusterRole.
Menerapkan kebijakan RBAC Kubernetes
Administrator mesh harus menerapkan kebijakan Kubernetes RBAC untuk mengontrol siapa yang diizinkan mengakses dan mengupdate resource Kubernetes. Kontrol akses Kubernetes dapat mengurangi risiko keamanan di mesh. Misalnya, pengguna yang tidak sah seharusnya tidak diizinkan untuk mengubah deployment Kubernetes dan mengabaikan penegakan kebijakan Anthos Service Mesh. Peran pengguna harus terikat dengan namespace sehingga pengguna tidak diizinkan untuk mengakses namespace selain yang perlu diakses. Untuk panduan dan contoh mendetail tentang 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, memastikan keamanan di edge mesh sangatlah penting.
Kontrol akses masuk cluster
Anthos 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 terlindung dari serangan.
Ingress harus menerapkan autentikasi dan otorisasi untuk layanan yang terekspos ke pemanggil eksternal.
- Menerapkan kebijakan keamanan cluster ingress. Saat cluster perlu menerima traffic eksternal, administrator mesh harus menerapkan kebijakan keamanan ingress, termasuk gateway TLS, autentikasi, dan kebijakan otorisasi Anthos Service Mesh, untuk mengautentikasi permintaan eksternal dan memverifikasi bahwa permintaan eksternal diizinkan untuk mengakses layanan yang diekspos oleh gateway masuk. Menerapkan kebijakan keamanan ingress akan melindungi dari serangan dari luar mesh yang mencoba mengakses layanan tanpa kredensial atau izin yang valid.
- Gunakan Cloud Armor agar berfungsi sebagai Web Application Firewall (WAF) untuk melindungi dari serangan berbasis web (misalnya, serangan injeksi dan serangan eksekusi jarak jauh). Untuk mengetahui informasi selengkapnya, lihat Dari tepi 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 traffic keluar dapat melindungi dari serangan pemindahan data yang tidak sah, menerapkan pemfilteran traffic keluar, dan menerapkan origin 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 agar 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 resmi yang diizinkan untuk mengirim traffic ke host tertentu di luar mesh. Sementara itu, untuk traffic yang keluar dari mesh, alih-alih menangani origin TLS di setiap file bantuan, TLS dapat berasal dari gateway keluar. Hal ini memberikan cara yang seragam dan lebih aman untuk menghasilkan traffic TLS karena sertifikat klien untuk mTLS dapat diisolasi dari namespace tempat aplikasi dijalankan.
Menggunakan cluster pribadi atau Kontrol Layanan VPC untuk mengunci akses eksternal
Selain menerapkan kebijakan keamanan 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 diterapkan oleh administrator keamanan organisasi.
Kontrol Layanan VPC dapat diterapkan untuk menentukan perimeter keamanan bagi layanan untuk:
- Membatasi layanan agar tidak mengakses resource luar.
- Membatasi pihak luar agar tidak mengakses layanan dalam perimeter keamanan.
Kontrol Layanan VPC membantu memberikan perlindungan dari serangan pemindahan data yang tidak sah dan mencegah penyerang eksternal mengakses layanan di dalam mesh.
Melindungi dari serangan DDoS eksternal
Serangan DDoS eksternal dapat membebani gateway masuk dan layanan backend, sehingga mencegah penanganan permintaan yang sah. Cloud Armor dapat digunakan untuk memberikan pertahanan dari serangan DDoS. Cloud Armor tidak hanya melindungi dari serangan DDoS lapisan jaringan (L3 dan L4), tetapi juga terhadap serangan DDoS lapisan aplikasi (L7).
Keamanan untuk administrasi dan otomatisasi mesh
Anda harus mempertimbangkan keamanan untuk operasi administratif dan otomatisasi apa pun yang Anda build di sekitar mesh, misalnya CI/CD. Praktik berikut bertujuan memastikan bahwa mesh dapat dioperasikan dengan aman tanpa risiko mengekspos layanan ke serangan tambahan.
Menyegmentasikan peran yang digunakan untuk operasi mesh
Dengan mengikuti prinsip yang sama seperti kontrol akses berbasis peran, pengguna mesh harus diklasifikasikan sesuai dengan perannya. Setiap peran hanya boleh diberi kumpulan hak istimewa minimum yang diperlukan oleh peran tersebut.
Misalnya, kelompok pengguna yang membuat deployment layanan tidak boleh memiliki hak istimewa untuk memperbarui kebijakan autentikasi dan otorisasi.
Ada berbagai kategori operator. Misalnya, operator cluster dan operator namespace. Penting untuk mencegah eskalasi akses dari suatu operator, yang dapat mengakibatkan akses terlarang ke resource yang tidak sah.
Kebijakan Kubernetes RBAC memungkinkan administrator mesh membatasi akses resource hanya kepada pengguna yang diotorisasi.
Validasi konfigurasi kebijakan secara otomatis
Operator dapat secara tidak sengaja salah mengonfigurasi kebijakan Anthos Service Mesh, yang dapat mengakibatkan insiden keamanan yang serius. Untuk mencegah kesalahan konfigurasi dan otomatis memvalidasi kebijakan Anthos Service Mesh, administrator mesh dapat menggunakan Pengontrol Kebijakan untuk menerapkan batasan pada konfigurasi kebijakan.
Agar tidak terlalu percaya pada individu yang memiliki izin untuk memperbarui kebijakan keamanan Anthos Service Mesh dan mengotomatiskan validasi kebijakan Anthos Service Mesh, administrator mesh harus menerapkan batasan pada kebijakan Anthos 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 memvalidasi deployment resource secara otomatis dalam mesh, seperti memvalidasi bahwa anotasi pada deployment tidak mengabaikan kebijakan Anthos Service Mesh, memvalidasi bahwa kebijakan Anthos Service Mesh sesuai harapan, dan memvalidasi bahwa deployment tidak mencakup kemampuan root (seperti NET_ADMIN
dan NET_RAW
).
Pengontrol Kebijakan juga dapat mengaudit resource Anthos Service Mesh yang ada berdasarkan batasan untuk mendeteksi kesalahan konfigurasi kebijakan.
Berikut adalah beberapa contoh Pengontrol Kebijakan GKE Enterprise yang menerapkan kebijakan keamanan:
- Mencegah Pod menjalankan container dengan hak istimewa.
- Hanya izinkan penggunaan image dari repositori tertentu untuk mencegah berjalannya image container yang tidak sah.
- Melarang penonaktifan TLS untuk semua host dan subset host di Istio DestinationRules.
- Melarang akun utama dan namespace dalam aturan Istio AuthorizationPolicy agar tidak memiliki awalan dari daftar yang ditentukan.
- Melarang pembuatan resource umum yang mengekspos beban kerja ke IP eksternal.
- Mewajibkan resource Ingress agar berupa HTTPS saja.
- Mewajibkan sistem file root hanya baca di container.
Library template batasan yang disediakan dengan Pengontrol Kebijakan berisi kumpulan template batasan yang dapat digunakan dengan paket batasan keamanan Anthos Service Mesh siap pakai untuk menerapkan praktik terbaik keamanan Anthos Service Mesh tertentu, misalnya, autentikasi, otorisasi, dan kebijakan traffic. Berikut adalah beberapa contoh batasan yang disertakan dalam paket:
- Terapkan PeerAuthentication mTLS ketat level mesh.
- Penerapan semua PeerAuthentications tidak dapat menimpa mTLS yang ketat.
- Terapkan AuthorizationPolicy penolakan default level mesh.
- Terapkan pola aman AuthorizationPolicy.
- Terapkan, sidecar Anthos Service Mesh selalu dimasukkan ke workload.
Untuk menangani pengecualian dan situasi akses darurat, administrator mesh dapat:
- Mengecualikan namespace dari penerapan webhook masuk Pengontrol Kebijakan, tetapi setiap pelanggaran masih dilaporkan dalam audit.
- Tetapkan Constraint spec.enforcementAction ke dryrun. Webhook penerimaan tidak akan mencegah perubahan, tetapi pelanggaran apa pun masih dilaporkan di audit. Security Command Center dapat digunakan untuk membuat pelanggaran audit dapat dilihat oleh tim keamanan.
- Tambahkan logika pengecualian ke Constraint Template (contoh).
Menggunakan pendekatan GitOps dengan Config Sync untuk mencegah penyimpangan konfigurasi
Penyimpangan konfigurasi terjadi saat konfigurasi kebijakan dalam mesh menyimpang dari sumber kebenarannya. Config Sync dapat digunakan untuk mencegah penyimpangan konfigurasi.
Menerapkan Logging dan pemantauan Audit
Administrator mesh harus memantau hal berikut:
- Logging Audit Cloud
- Log Audit Mesh Layanan Anthos
- Logging Audit batasan kebijakan
- Anthos Config Sync
- Log akses
- Metrik tingkat layanan
- Mengakses rekaman aktivitas
Resource kemampuan observasi ini dapat digunakan untuk memverifikasi bahwa konfigurasi keamanan berfungsi seperti yang diharapkan dan memantau setiap pengecualian untuk penerapan kebijakan keamanan. Misalnya, akses yang tidak melalui bantuan, akses yang tidak memiliki kredensial yang valid tetapi mencapai layanan.
Meskipun software kemampuan observasi open source (misalnya, Prometheus) dapat digunakan dengan Anthos Service Mesh, sebaiknya gunakan Google Cloud Operations Suite (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, Anthos Service Mesh menggunakan certificate authority (CA) yang dikelola Google yang disebut certificate authority Anthos Service Mesh (Mesh CA).
Jika Anda menggunakan certificate authority (CA) Istio yang tidak dikelola, yang dihosting
sebagai bagian dari Istiod, kunci penandatanganan CA akan disimpan dalam rahasia Kubernetes dan
dapat diakses oleh operator yang memiliki akses ke resource rahasia di
namespace istio-system
. Hal ini berisiko, karena operator mungkin dapat menggunakan
kunci CA secara independen dari CA Istiod dan berpotensi menandatangani sertifikat beban kerja
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 Mesh CA atau Certificate Authority Service (CA Service), yang dilindungi dan dikelola oleh Google (seperti, rotasi kunci CA). Dibandingkan dengan Mesh CA, CA Service mendukung kunci penandatanganan per pelanggan yang didukung HSM melalui Cloud KMS yang didukung oleh Cloud HSM.
Keamanan workload
Keamanan workload melindungi dari serangan yang membahayakan Pod workload, lalu menggunakan Pod yang 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 batasan keamanan pada Pod beban kerja untuk mencegah Pod yang disusupi agar tidak meluncurkan serangan terhadap cluster.
Untuk menerapkan prinsip hak istimewa terendah untuk beban kerja di Pod:
- Layanan yang di-deploy dalam mesh harus berjalan dengan hak istimewa sesedikit mungkin.
- Pod Kubernetes yang berjalan dalam mode 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.
- Anthos Service Mesh dapat dikonfigurasi untuk menggunakan container init guna mengonfigurasi pengalihan traffic iptables ke sidecar. Ini mengharuskan pengguna yang melakukan deployment beban kerja 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.
Mengamankan image container
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.
Memitigasi kerentanan mesh
- Container Analysis. Container Analysis dapat memindai dan menampilkan kerentanan pada workload GKE.
- Penanganan CVE (Kerentanan dan Eksposur Umum). Setelah kerentanan ditemukan dalam image container, administrator mesh harus memperbaiki kerentanan tersebut sesegera mungkin. Untuk Anthos Service Mesh yang dikelola Google dengan bidang data yang dikelola Google, Google otomatis menangani patching CVE yang memengaruhi gambar 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 untuk menyimpan kunci akun layanan dalam rahasia Kubernetes dan menggunakan kunci akun layanan untuk mengakses layanan Google tidaklah aman karena dapat berisiko kebocoran kredensial, eskalasi akses, pengungkapan informasi, dan anti-penyangkalan.
Pantau status keamanan melalui dasbor keamanan dan telemetri
Mesh layanan mungkin memiliki pengecualian keamanan dan potensi celah. Mesh sangat penting untuk menampilkan dan memantau status keamanan mesh, yang mencakup kebijakan keamanan yang diterapkan, pengecualian keamanan, dan potensi celah keamanan pada mesh. Dasbor keamanan GKE Enterprise dan telemetri 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 tidak normal, pemadaman layanan, topologi).
Dasbor keamanan GKE Enterprise menganalisis dan memvisualisasikan kebijakan keamanan yang diterapkan pada beban kerja 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 rentan terhadap serangan yang berasal dari Pod atau operasi berbahaya jika disimpan dalam penyimpanan persisten cluster, seperti menggunakan rahasia Kubernetes atau langsung di Pod. Objek ini 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.
- Tentukan namespace terpisah untuk Pod Kubernetes yang mengakses data sensitif dan tentukan kebijakan Kubernetes agar tidak dapat diakses dari namespace lain. Menyegmentasikan peran yang digunakan untuk operasi dan menerapkan batas namespace.
- Terapkan pertukaran token untuk mencegah pemindahan token dengan hak istimewa tinggi yang berumur panjang.
Langkah selanjutnya
- Tinjau praktik terbaik untuk menggunakan gateway keluar Anthos Service Mesh di cluster GKE
- Mengonfigurasi keamanan transportasi
- Memperbarui kebijakan otorisasi