Untuk melakukan otentikasi identitas dan kontrol otorisasi dalam Service Mesh (ASM), Anda dapat mengonfigurasi kebijakan keamanan ASM yang menerapkan otentikasi berbasis JSON Web Token (JWT). Dengan cara ini, hanya permintaan dengan JWT valid yang dapat mengakses sumber daya terlindungi, sehingga meningkatkan keamanan dan perlindungan privasi komunikasi antar-layanan.
Informasi Latar Belakang
JWT adalah standar terbuka yang biasanya digunakan untuk otentikasi dan otorisasi pengguna. JWT membawa informasi pengguna serta bidang yang menyimpan informasi terenkripsi. Saat menerapkan otentikasi berbasis JWT, informasi terenkripsi didekripsi lalu dibandingkan dengan informasi masukan pengguna untuk memverifikasi identitasnya.
Prasyarat
Aplikasi telah diterapkan di kluster yang ditambahkan ke instance ASM.
Gateway masuk telah diterapkan, dan alamat IP gateway masuk telah diperoleh.
Gateway Istio dan layanan virtual telah dibuat untuk memastikan bahwa jalur berikut dapat diakses. Untuk informasi lebih lanjut, lihat Langkah 1 hingga Langkah 3 di Gunakan Sumber Daya Istio untuk Mengarahkan Lalu Lintas ke Versi Layanan yang Berbeda.
http://${IP address of the ingress gateway}/productpage http://${IP address of the ingress gateway}/api/v1/products/1 http://${IP address of the ingress gateway}/static/jquery.min.js
Prosedur
Masuk ke Konsol ASM. Di panel navigasi kiri, pilih .
Di halaman Mesh Management, klik nama instance ASM. Di panel navigasi kiri, pilih .
Di halaman ASMSecurityPolicy, klik Create.
Di kotak dialog Create ASMSecurityPolicy, klik JWT lalu klik OK.
Di langkah JWT Config dari panduan konfigurasi, atur parameter dan klik Next.
Parameter
Contoh
ASMSecurityPolicyName
test-jwt
Certification Rules
Issuer
testing@secure.istio.io
JWKS Source
jwks
Key
{ "keys":[ {"e":"AQAB","kid":"DHFbpoIUqrY8t2zpA2qXfCmr5VO5ZEr4RzHU_-envvQ","kty":"RSA","n":"xAE7eB6qugXyCAG3yhh7pkDkT65pHymX-P7KfIupjf59vsdo91bSP9C8H07pSAGQO1MV_xFj9VswgsCg4R6otmg5PV2He95lZdHtOcU5DXIg_pbhLdKXbi66GlVeK6ABZOUW3WYtnNHD-91gVuoeJT_DwtGGcp4ignkgXfkiEm4sw-4sfb4qdt5oLbyVpmW6x9cfa7vs2WTfURiCrBoUqgBo_-4WTiULmmHSGZHOjzwa8WtrtOQGsAFjIbno85jp6MnGGGZPYZbDAa_b3y5u-YpW7ypZrvD8BgtKVjgtQgZhLAGezMt0ua3DRrWnKqTZ0BJ_EyxOGuHJrLsn00fnMQ"}]}Di langkah Workload and Match Rules dari panduan konfigurasi, klik Add Workload Group. Di kotak dialog New Workload Group, atur parameter, klik OK, lalu klik Submit.
Tabel berikut menjelaskan cara mengonfigurasi parameter dalam contoh ini.
Parameter
Deskripsi
Workload Group Name
Atur parameter menjadi test-policy.
Workload List
Klik Add Workload.
Di kotak dialog Add Workload, pilih Gateway Scope.
Di kotak Select workloads, pilih workload yang ingin ditambahkan, klik ikon
untuk menambahkan workload terpilih ke kotak selected, lalu klik OK.
Match Rule List
Dua mode pencocokan berikut tersedia:
Auth If Matched: Hanya permintaan yang membawa JWT valid yang diizinkan.
Bypass Auth If Matched: Permintaan yang membawa JWT valid atau tidak membawa JWT diizinkan. Permintaan yang membawa JWT tidak valid ditolak.
Untuk contoh ini, pilih Auth If Matched, atur Matching Rules menjadi Custom Matching Rules, klik Add Match Rule, lalu konfigurasikan aturan berikut:
Aturan 1: Nyalakan saklar Path dan atur parameter menjadi /static/*.
Aturan 2: Nyalakan saklar Path dan atur parameter menjadi /api/*.

Di langkah Complete dari panduan konfigurasi, pesan "Pembuatan ASMSecurityPolicy berhasil" muncul, menunjukkan bahwa kebijakan keamanan ASM telah dibuat. Anda dapat mengklik YAML untuk melihat sumber daya yang dibuat, atau klik Complete untuk kembali ke halaman ASMSecurityPolicy untuk melihat kebijakan keamanan yang dibuat.
Verifikasi apakah konfigurasi otentikasi berbasis JWT berlaku.
Jalankan perintah berikut untuk melakukan tes akses:
curl -I http://${IP address of the ingress gateway}/productpage # Kode status 200 dikembalikan. curl -I http://${IP address of the ingress gateway}/api/v1/products/1 # Kode status 403 dikembalikan. curl -I http://${IP address of the ingress gateway}/static/jquery.min.js # Kode status 403 dikembalikan. # Konfigurasikan JWT. TOKEN=eyJhbGciOiJSUzI1NiIsImtpZCI6IkRIRmJwb0lVcXJZOHQyenBBMnFYZkNtcjVWTzVaRXI0UnpIVV8tZW52dlEiLCJ0eXAiOiJKV1QifQ.eyJleHAiOjQ2ODU5ODk3MDAsImZvbyI6ImJhciIsImlhdCI6MTUzMjM4OTcwMCwiaXNzIjoidGVzdGluZ0BzZWN1cmUuaXN0aW8uaW8iLCJzdWIiOiJ0ZXN0aW5nQHNlY3VyZS5pc3Rpby5pbyJ9.CfNnxWP2tcnR9q0vxyxweaF3ovQYHYZl82hAUsn21bwQd9zP7c-LS9qd_vpdLG4Tn1A15NxfCjp5f7QNBUo-KC9PJqYpgGbaXhaGx7bEdFWjcwv3nZzvc7M__ZpaCERdwU7igUmJqYGBYQ51vr2njU9ZimyKkfDe3axcyiBZde7G6dabliUosJvvKOPcKIWPccCgefSj_GNfwIip3-SsFdlR7BtbVUcqR-yv-XOxJ3Uc1MI0tz3uMiiZcyPV7sNCU4KRnemRIMHVOfuvHsU60_GhGbiSFzgPTAa9WTltbnarTbxudb_YEOx12JiwYToeX0DCPb43W1tzIBxgm8NxUg # Kode status 200 dikembalikan untuk semua permintaan berikut: curl -I http://${IP address of the ingress gateway}/productpage -H "Authorization: Bearer $TOKEN" curl -I http://${IP address of the ingress gateway}/api/v1/products/1 -H "Authorization: Bearer $TOKEN" curl -I http://${IP address of the ingress gateway}/static/jquery.min.js -H "Authorization: Bearer $TOKEN"Sesuai dengan mode pencocokan dan aturan pencocokan yang ditentukan, permintaan diizinkan mengakses jalur yang dimulai dengan
/staticatau/apihanya saat mereka membawa JWT valid, sedangkan permintaan diizinkan mengakses jalur yang dimulai dengan/productpagehanya saat mereka membawa JWT valid atau tidak membawa JWT. Hasil akses sesuai harapan. Ini menunjukkan bahwa konfigurasi otentikasi berbasis JWT berlaku.Ubah mode pencocokan dan aturan pencocokan otentikasi berbasis JWT.
Di halaman ASMSecurityPolicy, temukan kebijakan otentikasi berbasis JWT yang ingin Anda ubah dan klik Edit di kolom Actions.
Di langkah JWT Config dari panduan konfigurasi, klik Next.
Di langkah Workload and Match Rules, temukan grup workload yang ingin Anda ubah dan klik Edit di kolom Operator.
Di kotak dialog New Workload Group, ubah mode pencocokan dan aturan pencocokan, klik OK, lalu klik Submit.
Tabel berikut menjelaskan pengaturan parameter setelah modifikasi.
Parameter
Deskripsi
Match Mode
Pilih Bypass Auth If Matched.
Matching Rules
Hapus aturan pencocokan
/api/*dan tinggalkan hanya aturan pencocokan/static/*.
Jalankan perintah berikut untuk memeriksa apakah konfigurasi otentikasi berbasis JWT yang dimodifikasi berlaku:
curl -I http://${IP address of the ingress gateway}/productpage # Kode status 403 dikembalikan. curl -I http://${IP address of the ingress gateway}/api/v1/products/1 # Kode status 403 dikembalikan. curl -I http://${IP address of the ingress gateway}/static/jquery.min.js # Kode status 200 dikembalikan. # Konfigurasikan JWT. TOKEN=eyJhbGciOiJSUzI1NiIsImtpZCI6IkRIRmJwb0lVcXJZOHQyenBBMnFYZkNtcjVWTzVaRXI0UnpIVV8tZW52dlEiLCJ0eXAiOiJKV1QifQ.eyJleHAiOjQ2ODU5ODk3MDAsImZvbyI6ImJhciIsImlhdCI6MTUzMjM4OTcwMCwiaXNzIjoidGVzdGluZ0BzZWN1cmUuaXN0aW8uaW8iLCJzdWIiOiJ0ZXN0aW5nQHNlY3VyZS5pc3Rpby5pbyJ9.CfNnxWP2tcnR9q0vxyxweaF3ovQYHYZl82hAUsn21bwQd9zP7c-LS9qd_vpdLG4Tn1A15NxfCjp5f7QNBUo-KC9PJqYpgGbaXhaGx7bEdFWjcwv3nZzvc7M__ZpaCERdwU7igUmJqYGBYQ51vr2njU9ZimyKkfDe3axcyiBZde7G6dabliUosJvvKOPcKIWPccCgefSj_GNfwIip3-SsFdlR7BtbVUcqR-yv-XOxJ3Uc1MI0tz3uMiiZcyPV7sNCU4KRnemRIMHVOfuvHsU60_GhGbiSFzgPTAa9WTltbnarTbxudb_YEOx12JiwYToeX0DCPb43W1tzIBxgm8NxUg # Kode status 200 dikembalikan untuk semua permintaan berikut: curl -I http://${IP address of the ingress gateway}/productpage -H "Authorization: Bearer $TOKEN" curl -I http://${IP address of the ingress gateway}/api/v1/products/1 -H "Authorization: Bearer $TOKEN" curl -I http://${IP address of the ingress gateway}/static/jquery.min.js -H "Authorization: Bearer $TOKEN"Sesuai dengan mode pencocokan baru dan aturan pencocokan, permintaan diizinkan mengakses jalur yang dimulai dengan
/statichanya saat mereka tidak membawa JWT atau membawa JWT valid. Permintaan lain diizinkan hanya saat mereka membawa JWT valid. Hasil akses sesuai harapan. Ini menunjukkan bahwa konfigurasi otentikasi berbasis JWT yang baru berlaku.
Referensi
Untuk informasi lebih lanjut tentang konsep dan fitur kebijakan keamanan ASM, lihat Gambaran Umum Kebijakan Keamanan ASM.
Anda dapat mengaktifkan fitur audit mesh untuk mencatat atau melacak operasi sehari-hari dari pengguna yang berbeda. Anda juga dapat mengonfigurasi peringatan audit untuk operasi pada sumber daya ASM dan mengirim notifikasi peringatan kepada kontak peringatan secara tepat waktu ketika sumber daya penting berubah. Untuk informasi lebih lanjut, lihat Gunakan Fitur Audit Operasi KubeAPI di ASM dan Konfigurasikan Peringatan Audit untuk Operasi pada Sumber Daya ASM.