Anda dapat mengaktifkan otentikasi berbasis JWT pada gateway untuk menerapkan otentikasi dan otorisasi terpusat. Dengan cara ini, hanya permintaan yang telah diautentikasi yang dapat mengakses layanan backend. JWT adalah singkatan dari JSON Web Token.
Informasi Latar Belakang
JWT umumnya digunakan untuk mengotentikasi pengguna. JWT membawa informasi pengguna dan bidang yang menyimpan informasi pengguna terenkripsi. Saat Anda menerapkan otentikasi berbasis JWT, informasi pengguna terenkripsi didekripsi dan dibandingkan dengan informasi pengguna masukan untuk memverifikasi identitas pengguna. Untuk informasi lebih lanjut, lihat JWT.
Prasyarat
Prosedur
Masuk ke Konsol ASM. Di panel navigasi sisi kiri, pilih .
Di halaman Mesh Management, klik nama instance ASM. Di panel navigasi sisi kiri, pilih .
Di halaman Ingress Gateway, klik nama gateway ingress yang ingin Anda gunakan.
Di panel navigasi ikhtisar Gateway, pilih .
Di langkah JWT Config dari wizard konfigurasi, aktifkan Enable gateway JWT authentication, konfigurasikan parameter terkait, lalu klik Next.
Parameter
Deskripsi
Issuer
Penerbit JWT. Dalam contoh ini, parameter diatur ke testing@secure.istio.io.
JWKS Source
JSON Web Key Set (JWKS) yang digunakan untuk memverifikasi JWT. Dalam contoh ini, jwks dipilih.
Key
Contoh nilai:
{ "keys":[ {"e":"AQAB","kid":"DHFbpoIUqrY8t2zpA2qXfCmr5VO5ZEr4RzHU_-envvQ","kty":"RSA","n":"xAE7eB6qugXyCAG3yhh7pkDkT65pHymX-P7KfIupjf59vsdo91bSP9C8H07pSAGQO1MV_xFj9VswgsCg4R6otmg5PV2He95lZdHtOcU5DXIg_pbhLdKXbi66GlVeK6ABZOUW3WYtnNHD-91gVuoeJT_DwtGGcp4ignkgXfkiEm4sw-4sfb4qdt5oLbyVpmW6x9cfa7vs2WTfURiCrBoUqgBo_-4WTiULmmHSGZHOjzwa8WtrtOQGsAFjIbno85jp6MnGGGZPYZbDAa_b3y5u-YpW7ypZrvD8BgtKVjgtQgZhLAGezMt0ua3DRrWnKqTZ0BJ_EyxOGuHJrLsn00fnMQ"}]}AdvancedConfig
Klik AdvancedConfig. Di kotak dialog JWT Rules Advanced Options, atur Posisi JWTToken, JWT Passthrough, dan Transmisikan Payload melalui Header sesuai kebutuhan Anda. Klik OK.
Di langkah Matching Rules dari wizard konfigurasi, konfigurasikan parameter dan klik Submit.
Parameter
Deskripsi
Match Mode
Dalam contoh ini, Auth If Matched dipilih. Nilai valid:
Auth If Matched: Otentikasi berbasis JWT dilakukan pada permintaan yang ditentukan.
Bypass Auth If Matched: Otentikasi berbasis JWT tidak diperlukan untuk permintaan yang ditentukan.
Matching Rules
Pilih Custom Matching Rules, aktifkan Path, lalu atur parameter ini ke /productpage. Konfigurasi ini menunjukkan bahwa permintaan ke path /productpage harus melewati otentikasi berbasis JWT. Permintaan ke path lain tidak diharuskan melewati otentikasi berbasis JWT.
CatatanDalam kasus ini, permintaan untuk mengakses path lain diizinkan jika mereka tidak membawa JWT atau ditolak jika mereka membawa JWT yang tidak valid.
Kemudian, pesan yang menunjukkan JWT-based authentication is successfully configured muncul, dan sumber daya keamanan Istio asli ditampilkan. Anda dapat mengklik YAML untuk melihat konfigurasi sumber daya.
Verifikasi apakah konfigurasi otentikasi berbasis JWT berlaku.
Jalankan perintah berikut untuk mengonfigurasi variabel lingkungan:
TOKEN=eyJhbGciOiJSUzI1NiIsImtpZCI6IkRIRmJwb0lVcXJZOHQyenBBMnFYZkNtcjVWTzVaRXI0UnpIVV8tZW52dlEiLCJ0eXAiOiJKV1QifQ.eyJleHAiOjQ2ODU5ODk3MDAsImZvbyI6ImJhciIsImlhdCI6MTUzMjM4OTcwMCwiaXNzIjoidGVzdGluZ0BzZWN1cmUuaXN0aW8uaW8iLCJzdWIiOiJ0ZXN0aW5nQHNlY3VyZS5pc3Rpby5pbyJ9.CfNnxWP2tcnR9q0vxyxweaF3ovQYHYZl82hAUsn21bwQd9zP7c-LS9qd_vpdLG4Tn1A15NxfCjp5f7QNBUo-KC9PJqYpgGbaXhaGx7bEdFWjcwv3nZzvc7M__ZpaCERdwU7igUmJqYGBYQ51vr2njU9ZimyKkfDe3axcyiBZde7G6dabliUosJvvKOPcKIWPccCgefSj_GNfwIip3-SsFdlR7BtbVUcqR-yv-XOxJ3Uc1MI0tz3uMiiZcyPV7sNCU4KRnemRIMHVOfuvHsU60_GhGbiSFzgPTAa9WTltbnarTbxudb_YEOx12JiwYToeX0DCPb43W1tzIBxgm8NxUgJalankan perintah berikut untuk melakukan tes akses:
Tes 1: Kirim permintaan yang membawa JWT valid untuk mengakses path
/productpage.curl -I http://${Alamat IP gateway ASM}/productpage -H "Authorization: Bearer $TOKEN"Contoh keluaran:
HTTP/1.1 200 OK content-type: text/html; charset=utf-8 content-length: 4294 server: istio-envoy date: Tue, 17 Jan 2023 08:47:34 GMT x-envoy-upstream-service-time: 17Tes 2: Kirim permintaan yang tidak membawa JWT untuk mengakses path
/productpage.curl -I http://${Alamat IP gateway ASM}/productpageContoh keluaran:
HTTP/1.1 403 Forbidden content-length: 19 content-type: text/plain date: Tue, 17 Jan 2023 08:50:31 GMT server: istio-envoyTes 3: Kirim permintaan yang membawa JWT tidak valid untuk mengakses path
/productpage.curl -I http://${Alamat IP gateway ASM}/productpage -H "Authorization: Bearer invalid token"Contoh keluaran:
HTTP/1.1 401 Unauthorized www-authenticate: Bearer realm="http://114.55.XXX.XXX/productpage", error="invalid_token" content-length: 79 content-type: text/plain date: Tue, 17 Jan 2023 08:51:47 GMT server: istio-envoyTes 4: Kirim permintaan yang tidak membawa JWT untuk mengakses path lain.
curl -I http://${Alamat IP gateway ASM}/api/v1/products/1HTTP/1.1 200 OK content-type: application/json content-length: 195 server: istio-envoy date: Tue, 17 Jan 2023 08:55:10 GMT x-envoy-upstream-service-time: 16
Tabel berikut menjelaskan hasil tes. Hasil tes sesuai harapan, yang menunjukkan bahwa otentikasi berbasis JWT berlaku.
Tes Akses
Akses diizinkan?
Kirim permintaan yang membawa JWT valid untuk mengakses path
/productpage.Ya
Kirim permintaan yang tidak membawa JWT untuk mengakses path
/productpage.Tidak
Kirim permintaan yang membawa JWT tidak valid untuk mengakses path
/productpage.Tidak
Kirim permintaan yang tidak membawa JWT untuk mengakses path lain.
Ya
Referensi
Anda dapat menyesuaikan konten log akses gateway ASM untuk mendeteksi risiko keamanan potensial secara tepat waktu. Untuk informasi lebih lanjut, lihat Konfigurasikan fitur pembuatan dan pengumpulan log akses gateway 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.
Anda dapat mengotentikasi JWT dalam permintaan pada gateway ingress. Permintaan harus berisi JWT yang valid untuk mengakses layanan tujuan. Untuk informasi lebih lanjut, lihat Konfigurasikan otentikasi JWT untuk gateway ingress di ASM.