Untuk menerapkan otentikasi dan otorisasi terpadu di tingkat gerbang, Anda dapat mengaktifkan otentikasi JWT pada gerbang sehingga hanya permintaan yang telah diautentikasi yang dapat mengakses layanan backend.
Latar Belakang
JSON Web Token (JWT) merupakan mekanisme umum untuk otentikasi dan otorisasi. JWT berisi informasi pengguna serta bidang yang menyimpan data terenkripsi. Anda dapat mendekripsi bidang tersebut dan membandingkannya dengan informasi pengguna asli untuk memverifikasi identitas pengguna. Untuk informasi selengkapnya, lihat JWT.
Prasyarat
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 Ingress Gateway, klik nama gerbang target.
-
Di panel navigasi halaman ikhtisar gerbang, pilih Gateway Security > JWT Authentication.
-
Pada wizard JWT Authentication Configuration, aktifkan sakelar Enable Gateway JWT Authentication, konfigurasikan parameter, lalu klik Next.
Parameter
Deskripsi
Issuer
Penerbit JWT. Dalam contoh ini, parameter ini diatur ke testing@secure.istio.io.
JWKS Source
Pilih jwks.
Key
Contoh:
{ "keys":[ {"e":"AQAB","kid":"DHFbpoIUqrY8t2zpA2qXfCmr5VO5ZEr4RzHU_-envvQ","kty":"RSA","n":"xAE7eB6qugXyCAG3yhh7pkDkT65pHymX-P7KfIupjf59vsdo91bSP9C8H07pSAGQO1MV_xFj9VswgsCg4R6otmg5PV2He95lZdHtOcU5DXIg_pbhLdKXbi66GlVeK6ABZOUW3WYtnNHD-91gVuoeJT_DwtGGcp4ignkgXfkiEm4sw-4sfb4qdt5oLbyVpmW6x9cfa7vs2WTfURiCrBoUqgBo_-4WTiULmmHSGZHOjzwa8WtrtOQGsAFjIbno85jp6MnGGGZPYZbDAa_b3y5u-YpW7ypZrvD8BgtKVjgtQgZhLAGezMt0ua3DRrWnKqTZ0BJ_EyxOGuHJrLsn00fnMQ"}]}Advanced options
Klik Advanced options. Di kotak dialog Advanced JWT Rule Options, Anda dapat menyesuaikan lokasi token, menentukan apakah JWT akan diteruskan, dan menentukan apakah muatan JWT akan diteruskan dalam header permintaan. Setelah selesai, klik OK.
-
Pada wizard Matching Rules, konfigurasikan parameter dan klik Submit.
Parameter
Deskripsi
Match Mode
Dalam contoh ini, dipilih Selected requests must be authenticated. Nilai yang valid:
-
Selected requests must be authenticated: Permintaan yang dipilih harus lolos otentikasi JWT.
-
Selected requests can skip authentication: Lewati otentikasi JWT untuk permintaan yang dipilih.
Matching Rules
Pilih Custom Matching Rules, aktifkan sakelar HTTP Path, dan atur Path ke /productpage. Konfigurasi ini mewajibkan permintaan ke path /productpage lolos otentikasi JWT. Permintaan ke path lain dapat melewati otentikasi ini.
CatatanUntuk permintaan lainnya, permintaan tanpa JWT berhasil, tetapi permintaan dengan JWT tidak valid gagal.
Setelah aturan otentikasi dibuat, langkah Finish wizard menampilkan pesan Gateway JWT authentication is created dan mencantumkan resource keamanan native dari Service Mesh. Anda dapat mengklik View YAML untuk melihat konfigurasi detail resource tersebut.
-
-
Verifikasi bahwa otentikasi JWT berfungsi.
-
Atur variabel lingkungan dengan menjalankan perintah berikut.
TOKEN=eyJhbGciOiJSUzI1NiIsImtpZCI6IkRIRmJwb0lVcXJZOHQyenBBMnFYZkNtcjVWTzVaRXI0UnpIVV8tZW52dlEiLCJ0eXAiOiJKV1QifQ.eyJleHAiOjQ2ODU5ODk3MDAsImZvbyI6ImJhciIsImlhdCI6MTUzMjM4OTcwMCwiaXNzIjoidGVzdGluZ0BzZWN1cmUuaXN0aW8uaW8iLCJzdWIiOiJ0ZXN0aW5nQHNlY3VyZS5pc3Rpby5pbyJ9.CfNnxWP2tcnR9q0vxyxweaF3ovQYHYZl82hAUsn21bwQd9zP7c-LS9qd_vpdLG4Tn1A15NxfCjp5f7QNBUo-KC9PJqYpgGbaXhaGx7bEdFWjcwv3nZzvc7M__ZpaCERdwU7igUmJqYGBYQ51vr2njU9ZimyKkfDe3axcyiBZde7G6dabliUosJvvKOPcKIWPccCgefSj_GNfwIip3-SsFdlR7BtbVUcqR-yv-XOxJ3UcMI0tz3uMiiZcyPV7sNCU4KRnemRIMHVOfuvHsU60_GhGbiSFzgPTAa9WTltbnarTbxudb_YEOx12JiwYToeX0DCPb43W1tzIBxgm8NxUg -
Uji akses dengan menjalankan perintah berikut.
-
Uji 1: Akses path
/productpagedengan JWT yang valid.curl -I http://${ASM_GATEWAY_IP}/productpage -H "Authorization: Bearer $TOKEN"Contoh output:
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: 17 -
Uji 2: Akses path
/productpagetanpa JWT.curl -I http://${ASM_GATEWAY_IP}/productpageContoh output:
HTTP/1.1 403 Forbidden content-length: 19 content-type: text/plain date: Tue, 17 Jan 2023 08:50:31 GMT server: istio-envoy -
Uji 3: Akses path
/productpagedengan JWT tidak valid.curl -I http://${ASM_GATEWAY_IP}/productpage -H "Authorization: Bearer invalid token"Contoh output:
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-envoy -
Uji 4: Akses path lain tanpa JWT.
curl -I http://${ASM_GATEWAY_IP}/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
Output tersebut mengonfirmasi bahwa otentikasi JWT berfungsi sesuai harapan.
Jenis
Hasil
Mengakses path
/productpagedengan JWT yang validYa
Mengakses path
/productpagetanpa JWTTidak
Mengakses path
/productpagedengan JWT tidak validTidak
Mengakses path lain tanpa JWT
Ya
-
-
Topik Terkait
-
Anda dapat menyesuaikan konten log akses gerbang ASM untuk segera mendeteksi potensi masalah keamanan. Untuk informasi selengkapnya, lihat Generate and collect ASM gateway access logs.
-
Anda dapat menggunakan fitur audit mesh untuk mencatat dan melacak operasi pengguna sehari-hari. Anda juga dapat mengonfigurasi peringatan audit untuk memberi tahu kontak tertentu ketika resource penting dimodifikasi. Untuk informasi selengkapnya, lihat Use KubeAPI operation audit dan Configure audit alerts for mesh resource operations.
-
Anda dapat mengonfigurasi otorisasi permintaan JWT pada gerbang masuk untuk mewajibkan permintaan membawa JWT demi mengakses layanan. Untuk informasi selengkapnya, lihat Perform JWT request authorization for an ingress gateway in ASM.