Saat perlu menyesuaikan kebijakan kontrol akses sesuai kebutuhan bisnis, Anda dapat mengonfigurasi kebijakan keamanan Service Mesh (ASM) untuk menerapkan otorisasi kustom. Dalam skenario ini, permintaan akan diteruskan ke layanan otorisasi kustom yang telah Anda tentukan untuk diautentikasi. Pendekatan ini memungkinkan penerapan logika otentikasi yang kompleks, sekaligus mengurangi biaya pengembangan dan pemeliharaan serta meningkatkan efisiensi pengembangan.
Prasyarat
Prosedur
-
Masuk ke Konsol ASM. Di panel navigasi sebelah kiri, pilih .
-
Pada halaman Mesh Management, klik nama instans ASM. Di panel navigasi sebelah kiri, pilih .
-
Pada halaman ASMSecurityPolicy, klik Create. Pada kotak dialog Create ASMSecurityPolicy, klik Custom Authorization Service, lalu klik OK.
-
Pada halaman Create Custom Authorization Service, pada wizard Custom Authorization Service Configuration, pilih tab Custom authorization service (HTTP or gRPC protocol) implemented based on envoy.ext_authz. Kemudian, konfigurasikan parameter dan klik Next.
Contoh ini menggunakan konfigurasi berikut. Untuk informasi selengkapnya tentang parameter, lihat Connect to a custom authorization service that uses HTTP. Konfigurasikan parameter berikut: ASM security policy name (misalnya,
test), Protocol (HTTP atau gRPC), Service address (misalnya,ext-authz.default.svc.cluster.local), Service port (misalnya,8000), dan Timeout (misalnya,10detik). Secara opsional, aktifkan sakelar Allow requests when authorization service is unavailable dan Use custom error code when authorization service is unavailable. Aktifkan sakelar Include request headers in check (includeRequestHeadersInCheck) dan tambahkan header yang diperlukan ke daftar di bawah ini, seperticookie,authorization,x-forwarded-access-token,x-forwarded-user,x-forwarded-email,x-forwarded-proto,proxy-authorization,user-agent,x-forwarded-host,from,x-forwarded-for,accept, dan header kustomx-ext-authz. Aktifkan sakelar Override headers on allow (headersToUpstreamOnAllow) dan tambahkan header yang ingin Anda timpa, sepertiauthorization,cookie,path,x-auth-request-access-token,x-forwarded-access-token, danx-ext-authz-check-result. Aktifkan sakelar Override headers on deny (headersToDownstreamOnDeny) dan tambahkan header yang ingin Anda timpa, seperticontent-type,set-cookie, danx-ext-authz-check-result. Headerx-ext-authz-check-resultmerupakan header kustom dan harus ditambahkan ke kedua daftar, yaitu allow dan deny. -
Pada wizard Workload and Match Rules, klik Add Workload Group. Pada kotak dialog New Workload Group, konfigurasikan parameter dan klik Submit.
Tabel berikut menjelaskan cara mengonfigurasi parameter pada contoh ini.
Parameter
Deskripsi
Workload Group Name
Tetapkan nama menjadi test-policy.
Workload List
-
Klik Add Workload.
-
Pada kotak dialog Add Workload, pilih Workload Scope. Tetapkan Namespaces menjadi default dan Workload Type menjadi Service.
-
Pada area Select workloads, pilih productpage, klik ikon
untuk memindahkannya ke area selected, lalu klik OK.
Match Rule List
Tetapkan Match Mode menjadi The selected request must be authenticated. Pilih Custom Matching Rules untuk Matching Rules. Kemudian, aktifkan sakelar Path dan tetapkan path menjadi /productpage.
Setelah kebijakan dibuat, pesan "ASM security policy created successfully" muncul pada langkah Complete wizard. Anda dapat mengklik View YAML untuk melihat file YAML dari resource yang dibuat, atau klik Complete untuk kembali ke halaman ASMSecurityPolicy dan melihat kebijakan baru tersebut.
-
Periksa apakah konfigurasi otorisasi kustom telah berlaku.
Jalankan perintah berikut untuk mengirim permintaan dengan header
x-ext-authz: allowguna mengakses layanan productpage:curl -I -H "x-ext-authz: allow" http://${IP address of the ingress gateway}/productpageOutput yang diharapkan:
HTTP/1.1 200 OK content-type: text/html; charset=utf-8 content-length: 5288 server: istio-envoy date: Tue, 17 Jan 2023 07:53:14 GMT x-envoy-upstream-service-time: 20Output tersebut menunjukkan bahwa otorisasi kustom telah dipicu dan otentikasi berhasil.
Jalankan perintah berikut untuk mengirim permintaan dengan header
x-ext-authz: denyguna mengakses layanan productpage:curl -I -H "x-ext-authz: deny" http://${IP address of the ingress gateway}/productpageOutput yang diharapkan:
HTTP/1.1 403 Forbidden x-ext-authz-check-result: denied date: Tue, 17 Jan 2023 07:55:27 GMT server: istio-envoy x-envoy-upstream-service-time: 2 transfer-encoding: chunkedOutput tersebut menunjukkan bahwa otorisasi kustom telah dipicu tetapi otentikasi gagal.
Hasil di atas menunjukkan bahwa konfigurasi otorisasi kustom telah berlaku.
Referensi
Untuk informasi selengkapnya tentang konsep dan fitur kebijakan keamanan ASM, lihat Overview of ASM security policies.
Anda dapat mengaktifkan fitur audit mesh untuk mencatat atau melacak operasi harian pengguna yang berbeda. Anda juga dapat mengonfigurasi peringatan audit untuk operasi pada resource ASM dan mengirim pemberitahuan peringatan kepada kontak peringatan secara tepat waktu saat resource penting berubah. Untuk informasi selengkapnya, lihat Use the KubeAPI operation audit feature in ASM dan Configure audit alerts for operations on ASM resources.