Service Extensions memungkinkan Load Balancer Aplikasi mengirimkan callout ke layanan backend untuk menyisipkan pemrosesan kustom di jalur pemrosesan. Ekstensi otorisasi berjalan di jalur pemrosesan permintaan saat load balancer menerima header permintaan dan setelah peta URL memilih layanan backend. Halaman ini menjelaskan cara mengonfigurasi ekstensi otorisasi untuk menggunakan mesin otorisasi kustom yang ditentukan dalam kebijakan otorisasi.
Untuk mengetahui ringkasan tentang ekstensi Load Balancer Aplikasi, lihat Ringkasan ekstensi Cloud Load Balancing.
Pengantar
Cloud Load Balancing memungkinkan Anda mengonfigurasi kebijakan otorisasi yang menerapkan kontrol akses pada traffic yang masuk ke load balancer. Terkadang, keputusan otorisasi yang kompleks tidak dapat dengan mudah dinyatakan menggunakan kebijakan otorisasi.
Anda dapat mengonfigurasi kebijakan otorisasi dengan ekstensi otorisasi untuk mendelegasikan keputusan otorisasi ke mesin otorisasi kustom. Di jalur data, ekstensi otorisasi dijalankan setelah ekstensi rute, tetapi sebelum ekstensi traffic. Untuk mengetahui informasi selengkapnya tentang kebijakan otorisasi, lihat Ringkasan kebijakan otorisasi.
Untuk setiap permintaan otorisasi, proxy meneruskan header permintaan ke ekstensi. Bergantung pada respons dari penyedia, proxy akan meneruskan atau menolak permintaan.
Dalam Pratinjau, untuk Load Balancer Aplikasi eksternal regional dan Load Balancer Aplikasi internal regional, Anda dapat mengonfigurasi ekstensi otorisasi secara terpisah untuk kebijakan otorisasi permintaan dan kebijakan otorisasi konten. Ekstensi yang didasarkan pada kebijakan otorisasi permintaan dikonfigurasi untuk dijalankan sebelum ekstensi yang didasarkan pada kebijakan otorisasi konten.
Untuk mengetahui informasi tentang batas yang terkait dengan ekstensi Load Balancer Aplikasi, lihat halaman Kuota dan batas.
Mengonfigurasi ekstensi otorisasi dasar
Contoh berikut menunjukkan cara mengonfigurasi ekstensi otorisasi,
my-authz-ext, dengan kebijakan otorisasi untuk mendelegasikan keputusan otorisasi
untuk Load Balancer Aplikasi eksternal global.
gcloud
Buat resource yang diperlukan seperti yang dijelaskan dalam Mengonfigurasi layanan backend callout.
Untuk latihan ini, buat Load Balancer Aplikasi eksternal global. Beri nama layanan
authz-servicedan aturan penerusanfr1.Konfigurasi ekstensi otorisasi.
Tentukan ekstensi dalam file YAML yang mengaitkannya dengan layanan backend,
authz-service. Gunakan nilai sampel yang diberikan.cat >authz-extension.yaml <<EOF name: my-authz-ext authority: ext11.com loadBalancingScheme: EXTERNAL_MANAGED service: https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendServices/authz-service forwardHeaders: - Authorization failOpen: false timeout: "0.1s" forwardAttributes: - request.mcp_param - connection.client_cert_leaf EOFGanti
PROJECT_IDdengan project ID.Untuk mengetahui informasi selengkapnya tentang kolom dalam file YAML, lihat ExtensionChain dalam dokumentasi API. Untuk mengetahui informasi tentang atribut yang didukung, lihat Atribut yang didukung.
Impor ekstensi otorisasi. Gunakan perintah
gcloud service-extensions authz-extensions importdengan nilai contoh berikut.gcloud service-extensions authz-extensions import my-authz-ext \ --source=authz-extension.yaml \ --location=globalJika Anda ingin menyetel protokol ke
ext_authz, gunakan perintahgcloud beta service-extensions authz-extensions importsebagai gantinya.
Konfigurasi kebijakan otorisasi dengan ekstensi.
Tentukan kebijakan otorisasi yang mengaitkan ekstensi
my-authz-extdengan aturan penerusanfr1. Gunakan nilai sampel yang diberikan. TindakanCUSTOMmenunjukkan bahwa ekstensi sedang digunakan.cat >authz-policy.yaml <<EOF name: my-authz-policy target: loadBalancingScheme: EXTERNAL_MANAGED resources: - "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/forwardingRules/fr1" action: CUSTOM customProvider: authzExtension: resources: - "projects/PROJECT_ID/locations/global/authzExtensions/my-authz-ext" EOFImpor kebijakan otorisasi ke project. Gunakan perintah
gcloud network-security authz-policies importdengan nilai contoh berikut.gcloud network-security authz-policies import my-authz-policy \ --source=authz-policy.yaml \ --location=global
Mengonfigurasi ekstensi otorisasi berdasarkan profil
Anda dapat mengonfigurasi ekstensi otorisasi secara terpisah untuk kebijakan otorisasi permintaan dan konten.
Untuk kebijakan otorisasi permintaan
Contoh berikut menunjukkan cara mengonfigurasi ekstensi otorisasi yang
menerapkan kebijakan otorisasi permintaan ke aturan penerusan di us-west1. Kebijakan
ini mewajibkan traffic untuk melewati autentikasi TLS bersama dari pokok
tertentu sebelum diizinkan mencapai tujuan, example.com/mcp.
gcloud
Konfigurasi layanan backend panggilan bernama
lb-request-authz-servicedius-west1dengan aturan penerusan bernamafr2.Untuk layanan ini, siapkan Load Balancer Aplikasi eksternal regional dengan backend grup instance VM.
Konfigurasi ekstensi otorisasi.
Tentukan ekstensi dalam file YAML yang mengaitkan ekstensi dengan layanan backend,
lb-request-authz-service. Gunakan nilai contoh yang diberikan.cat >lb-request-authz-extension.yaml <<EOF name: my-lb-request-authz-ext authority: ext11.com loadBalancingScheme: INTERNAL_MANAGED service: https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/backendServices/lb-authz-request-service forwardHeaders: - Authorization failOpen: false timeout: "0.1s" wireFormat: EXT_AUTHZ_GRPC EOFGanti
PROJECT_IDdengan project ID.Ekstensi harus berada di region yang sama dengan layanan backend Anda.
Secara default, semua panggilan Ekstensi Layanan menggunakan protokol Pemrosesan Eksternal Envoy atau
ext_proc. Dalam kasus anotasi otorisasi, protokol Otorisasi Eksternal atauext_authzjuga didukung dalam Pratinjau. Jika opsiwireFormatdisetel keEXT_AUTHZ_GRPC, info menggunakan protokolext_authz. Jika opsi tidak ditentukan, balon panggilan akan menggunakan protokolext_proc.Untuk kebijakan otorisasi permintaan, nilai
wireFormatdapat berupaEXT_AUTHZ_GRPCsehingga balon menggunakan protokolext_authzmeskipun protokolext_procjuga didukung.Secara default,
failOpendisetel kefalse. Jika waktu tunggu ekstensi habis atau gagal, pemrosesan permintaan akan berhenti. Opsi default ini lebih disukai jika memprioritaskan keamanan atau integritas daripada ketersediaan.Impor ekstensi otorisasi. Gunakan perintah
gcloud beta service-extensions authz-extensions importdengan nilai contoh berikut.gcloud beta service-extensions authz-extensions import my-lb-request-authz-ext \ --source=lb-request-authz-extension.yaml \ --location=us-west1
Dalam project yang sama, konfigurasi kebijakan otorisasi dengan ekstensi.
Untuk setiap permintaan ke
example.com/mcp, kebijakan ini memerlukan autentikasi TLS bersama dari prinsipal tertentu dan selanjutnya mendelegasikan keputusan otorisasi ke ekstensi otorisasi,my-lb-authz-request-ext.Tentukan kebijakan otorisasi yang mengaitkan ekstensi
my-lb-request-authz-extdengan aturan penerusanfr2. Gunakan nilai sampel yang diberikan.cat >lb-request-authz-policy.yaml <<EOF name: my-lb-request-authz-policy target: resources: - "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/forwardingRules/fr2" policyProfile: REQUEST_AUTHZ httpRules: - to: operations: - hosts: - exact: "example.com" - paths: - prefix: "/mcp" from: sources: - principals: - principal_selector: CLIENT_CERT_DNS_NAME_SANS principal: exact: "spiffe://p.global.123.workload.id.goog/ns/ns1/sa/hellomcp" action: CUSTOM customProvider: authzExtension: resources: - "projects/PROJECT_ID/locations/us-west1/authzExtensions/my-lb-request-authz-ext" EOFUntuk kebijakan otorisasi permintaan, nilai
policyProfileharus berupaREQUEST_AUTHZ. Nilai ini menunjukkan bahwa penyedia kebijakan kustom bertindak atas permintaan untuk mengizinkan atau menolak traffic.Tindakan
CUSTOMmenunjukkan bahwa ekstensi dikaitkan dengan proxy.Untuk mengetahui informasi selengkapnya tentang resource kebijakan otorisasi, lihat dokumentasi referensi
authzPolicy.Impor kebijakan otorisasi ke project. Gunakan perintah
gcloud beta network-security authz-policies importdengan nilai contoh berikut.gcloud beta network-security authz-policies import my-lb-request-authz-policy \ --source=lb-request-authz-policy.yaml \ --location=us-west1
Untuk kebijakan otorisasi konten
Contoh berikut menunjukkan cara mengonfigurasi ekstensi otorisasi yang menerapkan kebijakan otorisasi konten ke aturan penerusan di us-west1. Kebijakan ini mewajibkan layanan pembersihan konten untuk melakukan pemeriksaan mendalam pada payload aplikasi Anda guna mengizinkan atau menolak permintaan atau mengubah permintaan dan respons, sebagaimana diperlukan.
gcloud
Konfigurasi layanan backend panggilan bernama
lb-content-authz-servicedius-west1dengan aturan penerusan bernamafr3.Untuk layanan ini, siapkan Load Balancer Aplikasi eksternal regional dengan backend grup instance VM.
Konfigurasi server ekstensi dengan protokol
ext_procdalamFULL_DUPLEX_STREAMEDmode pemrosesan isi dan mendukung semua peristiwa.Konfigurasi ekstensi otorisasi.
Tentukan ekstensi dalam file YAML yang mengaitkan ekstensi dengan layanan backend,
lb-content-authz-service. Gunakan nilai contoh yang diberikan.cat >lb-content-authz-extension.yaml <<EOF name: my-lb-content-authz-ext authority: ext11.com loadBalancingScheme: INTERNAL_MANAGED service: https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/backendServices/lb-authz-sdp-service failOpen: false timeout: "0.1s" EOFUntuk kebijakan otorisasi konten, nilai
policyProfileharus berupaCONTENT_AUTHZ.Untuk kebijakan
CONTENT_AUTHZ, nilaiwireFormattidak perlu ditetapkan secara eksplisit sebagaiEXT_PROC_GRPC. Secara default, balon teks menggunakan protokolext_proc.Impor ekstensi otorisasi. Gunakan perintah
gcloud beta service-extensions authz-extensions importdengan nilai contoh berikut.gcloud beta service-extensions authz-extensions import my-lb-content-authz-ext \ --source=lb-content-authz-extension.yaml \ --location=us-west1
Konfigurasi kebijakan otorisasi dengan ekstensi.
Tentukan kebijakan otorisasi yang mengaitkan ekstensi
my-lb-content-authz-extdengan aturan penerusan,fr3. Gunakan nilai contoh yang diberikan.cat >lb-content-authz-policy.yaml <<EOF name: lb-content-authz-policy target: resources: - "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/forwardingRules/fr3" policyProfile: CONTENT_AUTHZ httpRules: - to: operations: - hosts: - exact: "example.com" - paths: - prefix: "/sensitive-stuff" action: CUSTOM customProvider: authzExtension: resources: - "projects/PROJECT_ID/locations/us-west1/authzExtensions/my-lb-authz-content-ext" EOFNilai
policyProfileharusCONTENT_AUTHZ.Impor kebijakan otorisasi ke project. Gunakan perintah
gcloud beta network-security authz-policies importdengan nilai contoh berikut.gcloud beta network-security authz-policies import my-lb-content-authz-policy \ --source=lb-content-authz-policy.yaml \ --location=us-west1
Batasan untuk ekstensi otorisasi
Berikut beberapa batasan ekstensi otorisasi:
- Kebijakan otorisasi hanya dapat memiliki satu ekstensi otorisasi.
- Aturan penerusan dapat digunakan dengan beberapa kebijakan otorisasi yang hanya satu di antaranya dapat berupa kebijakan otorisasi kustom.
Untuk batasan yang berlaku untuk semua ekstensi, lihat Batasan untuk ekstensi.
Langkah berikutnya
- Lihat contoh Python dan Go server
ext_authzdanext_procdi repositori GitHub Service Extensions. - Mengonfigurasi ekstensi rute
- Mengonfigurasi ekstensi traffic
- Mengelola ekstensi