Untuk mengontrol otentikasi dan otorisasi dalam service mesh, konfigurasikan otentikasi JSON Web Token (JWT) dalam ASMSecurityPolicy. Hal ini memastikan bahwa hanya permintaan yang membawa JWT valid yang dapat mengakses resource yang dilindungi, sehingga meningkatkan keamanan dan privasi komunikasi antar-layanan.
Informasi latar belakang
JWT berisi klaim, seperti informasi pengguna, yang ditandatangani secara digital. Sistem dapat memverifikasi signature untuk mengonfirmasi keaslian dan integritas token, sehingga memverifikasi identitas pengguna.
Prasyarat
Sebuah aplikasi telah dideploy di kluster yang ditambahkan ke instans ASM.
-
Gerbang masuk (ingress gateway) telah dideploy dan Anda telah memperoleh alamatnya.
-
Gerbang (gateway) dan layanan virtual (virtual service) telah dibuat untuk memastikan jalur berikut dapat diakses. Untuk informasi lebih lanjut, lihat Langkah 1 hingga 3 dalam Gunakan resource Istio untuk merutekan traffic berdasarkan versi.
http://${GATEWAY_ADDRESS}/productpage http://${GATEWAY_ADDRESS}/api/v1/products/1 http://${GATEWAY_ADDRESS}/static/jquery.min.js
Prosedur
-
Masuk ke Konsol ASM. Di panel navigasi kiri, pilih .
-
Pada halaman Mesh Management, klik nama instans ASM. Di panel navigasi kiri, pilih .
-
Pada halaman ASMSecurityPolicy, klik Create.
-
Pada kotak dialog Create ASMSecurityPolicy, pilih JWT lalu klik OK.
-
Pada wizard JWT Config, konfigurasikan parameter lalu 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"}]} -
Pada halaman Workload and Match Rules, klik Add Workload Group. Pada kotak dialog New Workload Group, konfigurasikan parameter lalu klik OK. Terakhir, klik Submit.
Tabel berikut menjelaskan contoh konfigurasi.
Parameter
Deskripsi
Workload Group Name
Atur nilainya menjadi test-policy.
Workload List
-
Klik Add Workload.
-
Pada kotak dialog Add Workload, pilih Gateway Scope.
-
Pada bagian Select workloads, pilih workload target lalu klik ikon
untuk memindahkannya ke bagian selected. Kemudian, klik OK.
Match Rule List
Opsi Match Mode berikut tersedia:
-
Auth If Matched: Permintaan yang sesuai dengan aturan harus membawa JWT valid agar berhasil.
-
Bypass Auth If Matched: Permintaan yang sesuai dengan aturan dapat berhasil tanpa JWT atau dengan JWT valid. Permintaan dengan JWT tidak valid akan gagal.
Pada contoh ini, atur Match Mode menjadi Auth If Matched, atur Matching Rules menjadi Custom Matching Rules, lalu klik Add Match Rule untuk mengonfigurasi aturan berikut.
-
Aturan 1: Aktifkan sakelar Path dan atur nilainya menjadi /static/*.
-
Aturan 2: Aktifkan sakelar Path dan atur nilainya menjadi /api/*.
Pada halaman Complete, pesan sukses ASMSecurityPolicy created successfully ditampilkan. Anda dapat mengklik View YAML untuk meninjau konfigurasi resource atau mengklik Complete untuk kembali ke halaman ASMSecurityPolicy.
-
-
-
Verifikasi bahwa konfigurasi otentikasi JWT berlaku.
-
Jalankan perintah berikut untuk menguji akses.
curl -I http://${GATEWAY_ADDRESS}/productpage # Mengembalikan 200. curl -I http://${GATEWAY_ADDRESS}/api/v1/products/1 # Mengembalikan 403. curl -I http://${GATEWAY_ADDRESS}/static/jquery.min.js # Mengembalikan 403. # Atur JWT. TOKEN=eyJhbGciOiJSUzI1NiIsImtpZCI6IkRIRmJwb0lVcXJZOHQyenBBMnFYZkNtcjVWTzVaRXI0UnpIVV8tZW52dlEiLCJ0eXAiOiJKV1QifQ.eyJleHAiOjQ2ODU5ODk3MDAsImZvbyI6ImJhciIsImlhdCI6MTUzMjM4OTcwMCwiaXNzIjoidGVzdGluZ0BzZWN1cmUuaXN0aW8iLCJzdWIiOiJ0ZXN0aW5nQHNlYcsVyZS5pc3Rpby5pbyJ9.CfNnxWP2tcnR9q0vxyxweaF3ovQYHYZl82hAUsn21bwQd9zP7c-LS9qd_vpdLG4Tn1A15NxfCjp5f7QNBUo-KC9PJqYpgGbaXhaGx7bEdFWjcwv3nZzvc7M__ZpaCERdwU7igUmJqYGBYQ51vr2njU9ZimyKkfDe3axcyiBZde7G6dabliUosJvvKOPcKIWPccCgefSj_GNfwIip3-SsFdlR7BtbVUcqR-yv-XOxJ3UcMI0tz3uMiiZcyPV7sNCU4KRnemRIMHVOfuvHsU60_GhGbiSFzgPTAa9WTltbnarTbxudb_YEOx12JiwYToeX0DCPb43W1tzIBxgm8NxUg # Permintaan berikut semuanya mengembalikan 200. curl -I http://${GATEWAY_ADDRESS}/productpage -H "Authorization: Bearer $TOKEN" curl -I http://${GATEWAY_ADDRESS}/api/v1/products/1 -H "Authorization: Bearer $TOKEN" curl -I http://${GATEWAY_ADDRESS}/static/jquery.min.js -H "Authorization: Bearer $TOKEN"Berdasarkan aturan konfigurasi, permintaan untuk jalur yang dimulai dengan
/apiatau/staticharus membawa JWT valid agar berhasil. Permintaan untuk jalur/productpagetidak memerlukan JWT. Hasilnya konsisten dengan komentar dalam kode dan mengonfirmasi bahwa konfigurasi otentikasi JWT berlaku. -
Modifikasi aturan konfigurasi otentikasi JWT.
-
Pada halaman ASMSecurityPolicy, temukan kebijakan keamanan otentikasi JWT target lalu klik edit pada kolom Operator.
-
Pada wizard JWT Config, klik Next.
-
Pada halaman Workload and Match Rules, temukan grup workload target lalu klik edit pada kolom Operator.
-
Pada kotak dialog New Workload Group, modifikasi parameter, klik OK, lalu klik Submit.
Tabel berikut menjelaskan contoh konfigurasi.
Parameter
Deskripsi
Match Mode
Pilih Bypass Auth If Matched.
Matching Rules
Hapus aturan pencocokan
/api/*dan pertahankan hanya aturan pencocokan/static/*.
-
-
Jalankan perintah berikut untuk memverifikasi bahwa konfigurasi otentikasi JWT yang dimodifikasi berlaku.
curl -I http://${GATEWAY_ADDRESS}/productpage # Mengembalikan 403. curl -I http://${GATEWAY_ADDRESS}/api/v1/products/1 # Mengembalikan 403. curl -I http://${GATEWAY_ADDRESS}/static/jquery.min.js # Mengembalikan 200. # Atur JWT. TOKEN=eyJhbGciOiJSUzI1NiIsImtpZCI6IkRIRmJwb0lVcXJZOHQyenBBMnFYZkNtcjVWTzVaRXI0UnpIVV8tZW52dlEiLCJ0eXAiOiJKV1QifQ.eyJleHAiOjQ2ODU5ODk3MDAsImZvbyI6ImJhciIsImlhdCI6MTUzMjM4OTcwMCwiaXNzIjoidGVzdGluZ0BzZWN1cmUuaXN0aW8uaW8iLCJzdWIiOiJ0ZXN0aW5nQHNlY3VyZS5pc3Rpby5pbyJ9.CfNnxWP2tcnR9q0vxyxweaF3ovQYHYZl82hAUsn21bwQd9zP7c-LS9qd_vpdLG4Tn1A15NxfCjp5f7QNBUo-KC9PJqYpgGbaXhaGx7bEdFWjcwv3nZzvc7M__ZpaCERdwU7igUmJqYGBYQ51vr2njU9ZimyKkfDe3axcyiBZde7G6dabliUosJvvKOPcKIWPccCgefSj_GNfwIip3-SsFdlR7BtbVUcqR-yv-XOxJ3UcMI0tz3uMiiZcyPV7sNCU4KRnemRIMHVOfuvHsU60_GhGbiSFzgPTAa9WTltbnarTbxudb_YEOx12JiwYToeX0DCPb43W1tzIBxgm8NxUg # Permintaan berikut semuanya mengembalikan 200. curl -I http://${GATEWAY_ADDRESS}/productpage -H "Authorization: Bearer $TOKEN" curl -I http://${GATEWAY_ADDRESS}/api/v1/products/1 -H "Authorization: Bearer $TOKEN" curl -I http://${GATEWAY_ADDRESS}/static/jquery.min.js -H "Authorization: Bearer $TOKEN"Berdasarkan aturan konfigurasi yang dimodifikasi, permintaan untuk jalur yang dimulai dengan
/staticdapat berhasil tanpa JWT atau dengan JWT valid. Semua permintaan lainnya harus membawa JWT valid agar berhasil. Hasilnya konsisten dengan komentar dalam kode dan mengonfirmasi bahwa konfigurasi otentikasi JWT yang dimodifikasi berlaku.
-
Dokumen terkait
-
Untuk informasi lebih lanjut tentang konsep dan fitur ASMSecurityPolicy, lihat Ikhtisar ASMSecurityPolicy.
-
Anda dapat mengaktifkan fitur audit mesh untuk melacak operasi pengguna. Anda juga dapat mengonfigurasi alert audit untuk operasi resource guna segera memberi tahu kontak tentang perubahan pada resource penting. Untuk informasi lebih lanjut, lihat Gunakan audit operasi KubeAPI dan Konfigurasikan alert audit untuk operasi resource mesh.