Halaman ini menunjukkan cara menyiapkan kebijakan otorisasi untuk Load Balancer Aplikasi.
Sebelum memulai
- Pahami Ringkasan kebijakan otorisasi.
-
- Network Security API
- Network Services API
Menyiapkan load balancer
Jika Anda belum membuat load balancer, lihat halaman berikut untuk menyiapkan Load Balancer Aplikasi pilihan Anda:
- Untuk membuat Load Balancer Aplikasi eksternal global, lihat Menyiapkan Load Balancer Aplikasi eksternal global dengan backend grup instance VM.
Untuk membuat Load Balancer Aplikasi eksternal regional, lihat Menyiapkan Load Balancer Aplikasi eksternal regional dengan backend grup instance VM.
Untuk membuat Load Balancer Aplikasi internal regional, lihat Menyiapkan Load Balancer Aplikasi internal regional dengan backend grup instance VM.
- Untuk membuat Load Balancer Aplikasi internal lintas-region, lihat Menyiapkan Load Balancer Aplikasi internal lintas-region dengan backend grup instance VM.
Membuat kebijakan otorisasi
Untuk membuat kebijakan otorisasi, Anda membuat file YAML yang
menentukan target dan aturan, lalu mengimpor file menggunakan perintah
gcloud network-security authz-policies.
Bagian ini memberikan petunjuk untuk membuat kebijakan otorisasi yang dilampirkan ke aturan penerusan Load Balancer Aplikasi.
Untuk mempelajari lebih lanjut cara membuat kebijakan otorisasi untuk Agent Gateway yang mendelegasikan otorisasi menggunakan Service Extensions, lihat Mendelegasikan otorisasi dengan Service Extensions.
Untuk mempelajari lebih lanjut cara membuat kebijakan otorisasi untuk Secure Web Proxy, lihat Menyiapkan kebijakan otorisasi untuk Secure Web Proxy.
Kebijakan otorisasi untuk menolak permintaan
Bagian ini memberikan contoh kebijakan otorisasi yang menolak permintaan berdasarkan atribut permintaan tertentu.
Menolak permintaan berdasarkan rentang alamat IP
Bagian ini memberikan contoh kebijakan otorisasi yang menolak permintaan berdasarkan permintaan yang berasal dari rentang alamat IP tertentu.
Global dan lintas region
Tentukan kebijakan otorisasi dalam file YAML.
Contoh berikut membuat file
authz-policy-deny.yamluntuk aturan penerusanLB_FORWARDING_RULEdi lokasiglobal. Kebijakan ini menolak akses klien dengan alamat IP dalam rentang10.0.0.0/24ke jalur URL/api/payments.cat >authz-policy-deny.yaml <<EOF name: my-authz-policy-deny target: loadBalancingScheme: LB_SCHEME resources: - "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/forwardingRules/LB_FORWARDING_RULE" httpRules: - from: sources: - ipBlocks: - prefix: "10.0.0.0" length: "24" - to: operations: - paths: - prefix: "/api/payments" action: DENY EOFGanti kode berikut:
LB_SCHEME: skema load balancing. Untuk Load Balancer Aplikasi eksternal global, tetapkan skema keEXTERNAL_MANAGED. Untuk Load Balancer Aplikasi internal lintas region, tetapkan skema keINTERNAL_MANAGED.PROJECT_ID: ID Google Cloud project Anda.LB_FORWARDING_RULE: nama aturan penerusan load balancer.
Buat kebijakan otorisasi dengan mengimpor file YAML kebijakan otorisasi menggunakan perintah gcloud network-security authz-policies import.
gcloud network-security authz-policies import my-authz-policy-deny \ --source=authz-policy-deny.yaml \ --location=global
Regional
Tentukan kebijakan otorisasi dalam file YAML.
Contoh berikut membuat file
authz-policy-deny.yamluntuk aturan penerusanLB_FORWARDING_RULEdi region Google Cloud . Kebijakan ini menolak akses klien dengan alamat IP dalam rentang10.0.0.0/24ke jalur URL/api/payments.cat >authz-policy-deny.yaml <<EOF name: my-authz-policy-deny target: loadBalancingScheme: LB_SCHEME resources: - "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/LOCATION/forwardingRules/LB_FORWARDING_RULE" httpRules: - from: sources: - ipBlocks: - prefix: "10.0.0.0" length: "24" - to: operations: - paths: - prefix: "/api/payments" action: DENY EOFGanti kode berikut:
LB_SCHEME: skema load balancing. Untuk Load Balancer Aplikasi eksternal regional, tetapkan skema keEXTERNAL_MANAGED. Untuk Load Balancer Aplikasi internal regional, tetapkan skema keINTERNAL_MANAGED.PROJECT_ID: ID Google Cloud project Anda.LB_FORWARDING_RULE: nama aturan penerusan load balancer.
Buat kebijakan otorisasi dengan mengimpor file YAML kebijakan otorisasi menggunakan perintah gcloud network-security authz-policies import.
gcloud network-security authz-policies import my-authz-policy-deny \ --source=authz-policy-deny.yaml \ --location=global
Menolak permintaan berdasarkan prinsipal sertifikat klien
Bagian ini memberikan contoh kebijakan otorisasi yang menolak permintaan berdasarkan akun utama sertifikat klien.
Global dan lintas region
Tentukan kebijakan otorisasi dalam file YAML.
Contoh berikut membuat file
authz-policy-deny.yamluntuk aturan penerusanLB_FORWARDING_RULEdi lokasiglobal.Kebijakan ini menolak akses ke jalur URL/api/paymentsbagi klien yang memilikiwww.example.comdi SAN nama DNS sertifikat klien mereka.cat >authz-policy-deny.yaml <<EOF name: my-authz-policy-deny target: loadBalancingScheme: LB_SCHEME resources: - "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/forwardingRules/LB_FORWARDING_RULE" httpRules: - from: sources: - principals: - principalSelector: CLIENT_CERT_DNS_NAME_SAN principal: exact: "www.example.com" to: operations: - paths: - prefix: "/api/payments" action: DENY EOFGanti kode berikut:
LB_SCHEME: skema load balancing. Untuk Load Balancer Aplikasi eksternal global, tetapkan skema keEXTERNAL_MANAGED. Untuk Load Balancer Aplikasi internal lintas region, tetapkan skema keINTERNAL_MANAGED.PROJECT_ID: ID Google Cloud project Anda.LB_FORWARDING_RULE: nama aturan penerusan load balancer.
Buat kebijakan otorisasi dengan mengimpor file YAML kebijakan otorisasi menggunakan perintah gcloud network-security authz-policies import.
gcloud network-security authz-policies import my-authz-policy-deny \ --source=authz-policy-deny.yaml \ --location=global
Regional
Tentukan kebijakan otorisasi dalam file YAML.
Contoh berikut membuat file
authz-policy-deny.yamluntuk aturan penerusanLB_FORWARDING_RULEdi regionGoogle Cloud . Kebijakan ini menolak akses ke jalur URL/api/paymentsbagi klien yang memilikiwww.example.comdi SAN nama DNS sertifikat klien mereka.cat >authz-policy-deny.yaml <<EOF name: my-authz-policy-deny target: loadBalancingScheme: LB_SCHEME resources: - "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/LOCATION/forwardingRules/LB_FORWARDING_RULE" policyProfile: REQUEST_AUTHZ httpRules: - from: sources: - principals: - principalSelector: CLIENT_CERT_DNS_NAME_SAN principal: exact: "www.example.com" to: operations: - paths: - prefix: "/api/payments" action: DENY EOFGanti kode berikut:
LB_SCHEME: skema load balancing. Untuk Load Balancer Aplikasi eksternal regional, tetapkan skema keEXTERNAL_MANAGED. Untuk Load Balancer Aplikasi internal regional, tetapkan skema keINTERNAL_MANAGED.PROJECT_ID: ID Google Cloud project Anda.LOCATION: Google Cloud region Anda.LB_FORWARDING_RULE: nama aturan penerusan load balancer.
Buat kebijakan otorisasi dengan mengimpor file YAML kebijakan otorisasi menggunakan perintah gcloud network-security authz-policies import.
gcloud beta network-security authz-policies import my-authz-policy-deny \ --source=authz-policy-deny.yaml \ --location=LOCATION
Kebijakan otorisasi untuk mengizinkan permintaan
Bagian ini memberikan contoh kebijakan otorisasi yang mengizinkan permintaan yang berasal dari rentang alamat IP tertentu.
Global dan lintas region
Jika Anda menggunakan Load Balancer Aplikasi eksternal global atau Load Balancer Aplikasi internal lintas region, ikuti langkah-langkah berikut untuk membuat kebijakan otorisasi:
Tentukan kebijakan otorisasi dalam file YAML.
Contoh berikut membuat file
authz-policy-allow.yamluntuk aturan penerusanLB_FORWARDING_RULEdi lokasiglobal. Kebijakan ini memungkinkan klien dengan alamat IP dalam rentang10.0.0.0/24mengakses jalur URL/api/payments.cat >authz-policy-allow.yaml <<EOF name: my-authz-policy-allow target: loadBalancingScheme: LB_SCHEME resources: - "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/forwardingRules/LB_FORWARDING_RULE" httpRules: - from: sources: - ipBlocks: - prefix: "10.0.0.0" length: "24" to: operations: - paths: - exact: "/api/payments" action: ALLOW EOFGanti kode berikut:
LB_SCHEME: skema load balancing. Untuk Load Balancer Aplikasi eksternal global, tetapkan skema keEXTERNAL_MANAGED. Untuk Load Balancer Aplikasi internal lintas region, tetapkan skema keINTERNAL_MANAGED.PROJECT_ID: ID Google Cloud project Anda.LB_FORWARDING_RULE: nama aturan penerusan load balancer.
Buat kebijakan otorisasi dengan mengimpor file YAML kebijakan otorisasi menggunakan perintah gcloud network-security authz-policies import.
gcloud network-security authz-policies import my-authz-policy-allow \ --source=authz-policy-allow.yaml \ --location=global
Regional
Jika Anda menggunakan Load Balancer Aplikasi eksternal regional atau Load Balancer Aplikasi internal regional, ikuti langkah-langkah berikut untuk membuat dan mengimpor kebijakan otorisasi:
Tentukan kebijakan otorisasi dalam file YAML.
Contoh berikut membuat file
authz-policy-allow.yamluntuk aturan pengalihanLB_FORWARDING_RULEdi region Google Cloud tertentu. Kebijakan ini memungkinkan klien dengan alamat IP dalam rentang10.0.0.0/24mengakses jalur URL/api/payments.cat >authz-policy-allow.yaml <<EOF name: my-authz-policy-allow target: loadBalancingScheme: LB_SCHEME resources: - "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/LOCATION/forwardingRules/LB_FORWARDING_RULE" policyProfile: REQUEST_AUTHZ httpRules: - from: sources: - ipBlocks: - prefix: "10.0.0.0" length: "24" to: operations: - paths: - exact: "/api/payments" action: ALLOW EOFGanti kode berikut:
LB_SCHEME: skema load balancing. Untuk Load Balancer Aplikasi eksternal regional, tetapkan skema keEXTERNAL_MANAGED. Untuk Load Balancer Aplikasi internal regional, tetapkan skema keINTERNAL_MANAGED.PROJECT_ID: ID Google Cloud project Anda.LOCATION: Google Cloud region Anda.LB_FORWARDING_RULE: nama aturan penerusan load balancer.
Buat kebijakan otorisasi dengan mengimpor file YAML kebijakan otorisasi menggunakan perintah gcloud network-security authz-policies import.
gcloud beta network-security authz-policies import my-authz-policy-allow \ --source=authz-policy-allow.yaml \ --location=LOCATION
Kebijakan otorisasi berdasarkan akun layanan atau tag
Anda dapat menerapkan kebijakan otorisasi berdasarkan akun layanan atau tag aman yang dilampirkan ke berbagai Google Cloud resource.
Contoh ini mengasumsikan bahwa Anda telah melakukan tindakan berikut:
membuat akun layanan dan melampirkannya ke resource Google Cloud .
membuat tag aman dan melampirkannya ke resource Google Cloud sebagai pasangan nilai kunci. Saat membuat tag, tetapkan flag
--purposekeGCE_FIREWALL. Kebijakan otorisasi memerlukan tujuanGCE_FIREWALLuntuk menerapkan tag.
Akun layanan
Tentukan kebijakan otorisasi dalam file YAML.
Contoh berikut membuat file
authz-policy-deny.yamluntuk aturan penerusanLB_FORWARDING_RULEdari Load Balancer Aplikasi internal regional. Kebijakan dikonfigurasi untuk menolak permintaan dari resource Google Cloud , seperti VM Compute Engine, dengan akun layananmy-sa-123@PROJECT_ID.iam.gserviceaccount.comuntuk mencapai jalur/api/payments.cat >authz-policy-deny.yaml <<EOF name: my-authz-policy-deny target: loadBalancingScheme: LB_SCHEME resources: - "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/LOCATION/forwardingRules/LB_FORWARDING_RULE" policyProfile: REQUEST_AUTHZ httpRules: - from: sources: - resources: - iamServiceAccount: exact: "my-sa-123@PROJECT_ID.iam.gserviceaccount.com" to: operations: - paths: - prefix: "/api/payments" action: DENY EOFGanti kode berikut:
LB_SCHEME: skema load balancing. Untuk Load Balancer Aplikasi internal regional dan Load Balancer Aplikasi internal lintas region, tetapkan skema keINTERNAL_MANAGED.PROJECT_ID: ID Google Cloud project Anda.LOCATION: Google Cloud region Anda.LB_FORWARDING_RULE: nama aturan penerusan load balancer.
Buat kebijakan otorisasi dengan mengimpor file YAML kebijakan otorisasi menggunakan perintah gcloud network-security authz-policies import.
gcloud beta network-security authz-policies import my-authz-policy-deny \ --source=authz-policy-deny.yaml \ --location=LOCATIONGanti
LOCATIONdengan region Google Cloud Anda.
Tag
Tentukan kebijakan otorisasi dalam file YAML.
Contoh berikut membuat file
authz-policy-allow.yamluntuk aturan penerusanLB_FORWARDING_RULELoad Balancer Aplikasi internal regional. Kebijakan ini hanya mengizinkan permintaan yang berasal dari resource Google Cloud , seperti VM Compute Engine, dengan nilai tag amanTAG_VALUE_PERMANENT_IDuntuk mengakses jalur URL/api/payments.cat >authz-policy-allow.yaml <<EOF name: my-authz-policy-allow target: loadBalancingScheme: LB_SCHEME resources: - "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/LOCATION/forwardingRules/LB_FORWARDING_RULE" policyProfile: REQUEST_AUTHZ httpRules: - from: sources: resources: - tagValueIdSet: - ids: "TAG_VALUE_PERMANENT_ID" to: operations: - paths: - exact: "/api/payments" action: ALLOW EOFGanti kode berikut:
LB_SCHEME: skema load balancing. Untuk Load Balancer Aplikasi internal regional dan Load Balancer Aplikasi internal lintas region, tetapkan skema keINTERNAL_MANAGED.PROJECT_ID: ID Google Cloud project Anda.LOCATION: Google Cloud region Anda.LB_FORWARDING_RULE: nama aturan penerusan load balancer.TAG_VALUE_PERMANENT_ID: ID permanen nilai tag.
Buat kebijakan otorisasi dengan mengimpor file YAML kebijakan otorisasi menggunakan perintah gcloud network-security authz-policies import.
gcloud beta network-security authz-policies import my-authz-policy-allow \ --source=authz-policy-allow.yaml \ --location=LOCATIONGanti kode berikut:
LOCATION: Google Cloud region Anda.
Kebijakan otorisasi untuk mendelegasikan keputusan otorisasi
Contoh di bagian ini membuat kebijakan otorisasi yang mendelegasikan keputusan otorisasi ke layanan berikut melalui Service Extensions:
- Layanan yang dikelola pengguna
- Layanan yang dikelola Google
Mendelegasikan keputusan otorisasi ke layanan yang dikelola pengguna
Anda dapat mengonfigurasi kebijakan otorisasi untuk mendelegasikan keputusan otorisasi ke layanan yang dikelola pengguna melalui Service Extensions, khususnya ekstensi otorisasi.
Untuk load balancer global dan lintas region, ekstensi otorisasi dapat berjalan di layanan backend yang dikelola pengguna Google Cloud .
Untuk load balancer regional, ekstensi otorisasi dapat berjalan di layanan backend yang dikelola pengguna dan layanan berbasis FQDN. Google Cloud
Penyiapan contoh ini mengasumsikan
bahwa Anda telah membuat layanan backend Google Cloud yang dikelola pengguna,
yang juga disebut sebagai layanan backend teks promosi, bernama authz-service.
Untuk mempelajari lebih lanjut cara membuatnya, lihat
Mengonfigurasi layanan backend teks singkat yang dikelola pengguna.
Untuk layanan berbasis FQDN, contoh penyiapan ini mengasumsikan bahwa layanan kustom di-deploy di VPC Anda sendiri, mendukung protokol ext_authz, dan dapat diakses oleh nama domain yang sepenuhnya memenuhi syarat mycustomauthz.internal.net.
Global dan lintas region
Jika Anda menggunakan Load Balancer Aplikasi eksternal global atau Load Balancer Aplikasi internal lintas region, ikuti langkah-langkah berikut untuk mendelegasikan keputusan otorisasi ke layanan yang dikelola pengguna.
Tentukan ekstensi otorisasi dalam file YAML. Ekstensi otorisasi berjalan di layanan backend (
authz-service) dan mendukung protokolext_authz.cat >authz-extension.yaml <<EOF name: my-authz-ext authority: ext11.com loadBalancingScheme: LB_SCHEME service: https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendServices/authz-service forwardHeaders: - Authorization failOpen: false timeout: "0.1s" wireFormat: EXT_AUTHZ_GRPC EOFBuat ekstensi otorisasi dengan mengimpor file YAML ekstensi otorisasi menggunakan perintah
gcloud service-extensions authz-extensions import.gcloud service-extensions authz-extensions import my-authz-ext \ --source=authz-extension.yaml \ --location=globalGanti kode berikut:
LB_SCHEME: skema load balancing. Untuk Load Balancer Aplikasi eksternal global, tetapkan skema keEXTERNAL_MANAGED. Untuk Load Balancer Aplikasi internal lintas region, tetapkan skema keINTERNAL_MANAGED.PROJECT_ID: ID Google Cloud project Anda.
Tentukan kebijakan otorisasi dalam file YAML. Kebijakan otorisasi mendelegasikan otorisasi ke ekstensi otorisasi di kolom
customProvider.Kebijakan ini memanggil ekstensi otorisasi
my-authz-extuntuk semua traffic ke jalur URLexample.com/api/paymentssaat permintaan berisi headerAuthorizationyang tidak kosong.cat >authz-policy-custom.yaml <<EOF name: my-authz-policy-custom target: loadBalancingScheme: LB_SCHEME resources: - "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/forwardingRules/LB_FORWARDING_RULE" httpRules: - to: operations: - hosts: - exact: "example.com" - paths: - exact: "/api/payments" when: 'request.headers["Authorization"] != ""' action: CUSTOM customProvider: authzExtension: resources: - "projects/PROJECT_ID/locations/global/authzExtensions/my-authz-ext" EOFGanti kode berikut:
LB_SCHEME: skema load balancing. Untuk Load Balancer Aplikasi eksternal global, tetapkan skema keEXTERNAL_MANAGED. Untuk Load Balancer Aplikasi internal lintas region, tetapkan skema keINTERNAL_MANAGED.PROJECT_ID: ID Google Cloud project Anda.LB_FORWARDING_RULE: nama aturan penerusan load balancer.
Buat kebijakan otorisasi dengan mengimpor file YAML kebijakan otorisasi menggunakan perintah
gcloud network-security authz-policies import.gcloud network-security authz-policies import my-authz-policy-custom \ --source=authz-policy-custom.yaml \ --location=global
Regional
Jika Anda menggunakan Load Balancer Aplikasi eksternal regional atau Load Balancer Aplikasi internal regional, ikuti langkah-langkah berikut untuk mendelegasikan keputusan otorisasi ke layanan yang dikelola pengguna.
Tentukan ekstensi otorisasi dalam file YAML. Ekstensi otorisasi dapat berjalan di layanan backend atau layanan berbasis FQDN.
cat >authz-extension.yaml <<EOF name: my-authz-ext authority: ext11.com loadBalancingScheme: LB_SCHEME service: BACKEND_SERVICE_URI_OR_FQDN forwardHeaders: - Authorization failOpen: false timeout: "0.1s" wireFormat: EXT_AUTHZ_GRPC EOFGanti kode berikut:
LB_SCHEME: skema load balancing. Untuk Load Balancer Aplikasi eksternal regional, tetapkan skema keEXTERNAL_MANAGED. Untuk Load Balancer Aplikasi internal regional, tetapkan skema keINTERNAL_MANAGED.BACKEND_SERVICE_URI_OR_FQDN: layanan dapat berupa salah satu dari berikut ini:- URI resource layanan backend regional dengan format
https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/LOCATION/backendServices/authz-service. - nama domain yang sepenuhnya memenuhi syarat
(misalnya,
mycustomauthz.extension.net) yang dapat diselesaikan oleh Cloud DNS.
- URI resource layanan backend regional dengan format
Buat ekstensi otorisasi dengan mengimpor file YAML ekstensi otorisasi menggunakan perintah
gcloud service-extensions authz-extensions import.gcloud service-extensions authz-extensions import my-authz-ext \ --source=authz-extension.yaml \ --location=LOCATIONGanti LOCATION dengan Google Cloud region tempat layanan backend info promosi dikonfigurasi.
Tentukan kebijakan otorisasi dalam file YAML. Kebijakan otorisasi mendelegasikan otorisasi ke ekstensi otorisasi di kolom
customProvider.Kebijakan ini memanggil ekstensi otorisasi
my-authz-extuntuk semua traffic ke jalur URLexample.com/api/paymentssaat permintaan berisi headerAuthorizationyang tidak kosong.cat >authz-policy-custom.yaml <<EOF name: my-authz-policy-custom target: loadBalancingScheme: LB_SCHEME resources: - "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/LOCATION/forwardingRules/LB_FORWARDING_RULE" policyProfile: REQUEST_AUTHZ httpRules: - to: operations: - paths: - exact: "/api/payments" when: 'request.headers["Authorization"] != ""' action: CUSTOM customProvider: authzExtension: resources: - "projects/PROJECT_ID/locations/LOCATION/authzExtensions/my-authz-ext" EOFGanti kode berikut:
LB_SCHEME: skema load balancing. Untuk Load Balancer Aplikasi eksternal regional, tetapkan skema keEXTERNAL_MANAGED. Untuk Load Balancer Aplikasi internal regional, tetapkan skema keINTERNAL_MANAGED.PROJECT_ID: ID Google Cloud project Anda.LOCATION: Google Cloud region.LB_FORWARDING_RULE: nama aturan penerusan load balancer.
Buat kebijakan otorisasi dengan mengimpor file YAML kebijakan otorisasi menggunakan perintah
gcloud network-security authz-policies import.gcloud beta network-security authz-policies import my-authz-policy-custom \ --source=authz-policy-custom.yaml \ --location=LOCATIONGanti LOCATION dengan Google Cloud region tempat load balancer dikonfigurasi.
Untuk mengetahui informasi selengkapnya tentang ekstensi otorisasi, lihat Mengonfigurasi ekstensi otorisasi.
Mendelegasikan keputusan otorisasi ke Model Armor
Anda dapat mengonfigurasi kebijakan otorisasi untuk mendelegasikan keputusan otorisasi ke Model Armor.
Sebelum memulai, buat template Model Armor. Dalam penyiapan contoh ini, kebijakan otorisasi mengarah ke ekstensi otorisasi, yang pada gilirannya mengarah ke Model Armor.
Jika Anda menggunakan Load Balancer Aplikasi eksternal regional atau Load Balancer Aplikasi internal regional, ikuti langkah-langkah berikut untuk mendelegasikan keputusan otorisasi ke Model Armor.
Regional
Tentukan ekstensi otorisasi dalam file YAML. Ekstensi otorisasi mengarah ke template permintaan dan respons Model Armor.
cat >authz-extension.yaml <<EOF name: my-authz-extension loadBalancingScheme: INTERNAL_MANAGED service: modelarmor.LOCATION.rep.googleapis.com metadata: model_armor_settings: '[ { "response_template_id": "projects/PROJECT_ID/locations/LOCATION/templates/RESPONSE_TEMPLATE_ID", "request_template_id": "projects/PROJECT_ID/locations/LOCATION/templates/REQUEST_TEMPLATE_ID" } ]' failOpen: true EOFGanti kode berikut:
- LOCATION: lokasi template
- PROJECT_ID: ID project yang memiliki template
- RESPONSE_TEMPLATE_ID: ID template respons
- REQUEST_TEMPLATE_ID: ID template permintaan
Buat ekstensi otorisasi dengan mengimpor file YAML ekstensi otorisasi menggunakan perintah
gcloud beta service-extensions authz-extensions import.gcloud beta service-extensions authz-extensions import my-authz-ext \ --source=authz-extension.yaml \ --location=LOCATION
Ganti LOCATION dengan Google Cloud region tempat load balancer berada.
Tentukan kebijakan otorisasi dalam file YAML. Kebijakan otorisasi mendelegasikan otorisasi ke ekstensi otorisasi di kolom
customProvider.Nilai
policyProfileadalahCONTENT_AUTHZ.cat >authz-policy-custom.yaml <<EOF name: my-authz-policy-custom target: loadBalancingScheme: INTERNAL_MANAGED resources: - "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/LOCATION/forwardingRules/LB_FORWARDING_RULE" policyProfile: CONTENT_AUTHZ action: CUSTOM customProvider: authzExtension: resources: - "projects/PROJECT_ID/locations/LOCATION/authzExtensions/my-authz-ext" EOFGanti kode berikut:
PROJECT_ID: ID Google Cloud project Anda.LOCATION: Google Cloud region.LB_FORWARDING_RULE: nama aturan penerusan load balancer.
Buat kebijakan otorisasi dengan mengimpor file YAML kebijakan otorisasi menggunakan perintah
gcloud beta network-security authz-policies import.gcloud beta network-security authz-policies import my-authz-policy-custom \ --source=authz-policy-custom.yaml \ --location=LOCATION
Ganti LOCATION dengan Google Cloud region tempat load balancer dikonfigurasi.
Mendelegasikan keputusan otorisasi ke Identity-Aware Proxy
Untuk Load Balancer Aplikasi eksternal global dan Load Balancer Aplikasi internal lintas-region, Anda tidak dapat mendelegasikan keputusan otorisasi ke IAP melalui ekstensi otorisasi. Untuk load balancer ini, Anda dapat mendelegasikan keputusan otorisasi ke
IAP melalui kolom customProvider pada resource kebijakan
otorisasi.
Untuk Load Balancer Aplikasi eksternal regional dan Load Balancer Aplikasi internal regional, Anda dapat mengonfigurasi kebijakan otorisasi untuk mendelegasikan keputusan otorisasi ke IAP melalui ekstensi otorisasi.
Global dan lintas region
Dalam contoh berikut, semua keputusan otorisasi didelegasikan ke
IAP untuk semua permintaan yang berasal dari blok alamat IP 10.0.0.0/24. Jika permintaan berasal dari alamat IP di luar 10.0.0.0/24, permintaan tersebut tidak cocok dengan kebijakan ini dan tidak dievaluasi oleh IAP berdasarkan aturan khusus ini.
Tentukan kebijakan otorisasi dalam file YAML. Kebijakan otorisasi mendelegasikan otorisasi ke IAP melalui kolom
customProvider.cat >authz-policy-iap.yaml <<EOF name: my-authz-policy-custom target: loadBalancingScheme: LB_SCHEME resources: - "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/forwardingRules/LB_FORWARDING_RULE" httpRules: - from: sources: - ipBlock: - prefix: "10.0.0.0" length: 24 action: CUSTOM customProvider: cloudIap: {} EOFGanti kode berikut:
LB_SCHEME: skema load balancing. Untuk Load Balancer Aplikasi eksternal global, tetapkan skema keEXTERNAL_MANAGED. Untuk Load Balancer Aplikasi internal lintas region, tetapkan skema keINTERNAL_MANAGED.PROJECT_ID: ID Google Cloud project Anda.LB_FORWARDING_RULE: nama aturan penerusan load balancer.
Buat kebijakan otorisasi dengan mengimpor file YAML kebijakan otorisasi menggunakan perintah
gcloud network-security authz-policies import.gcloud network-security authz-policies import my-authz-policy-custom \ --source=authz-policy-iap.yaml \ --location=global
Regional
Jika Anda menggunakan Load Balancer Aplikasi eksternal regional atau Load Balancer Aplikasi internal regional, ikuti langkah-langkah berikut untuk mendelegasikan keputusan otorisasi ke IAP menggunakan ekstensi otorisasi.
Tentukan ekstensi otorisasi dalam file YAML. Ekstensi otorisasi mengarah ke IAP.
cat >authz-extension.yaml <<EOF name: my-authz-ext loadBalancingScheme: LB_SCHEME service: iap.googleapis.com failOpen: false EOFGanti kode berikut:
- LB_SCHEME: skema load balancing.
Untuk Load Balancer Aplikasi eksternal regional, tetapkan skema ke
EXTERNAL_MANAGED. Untuk Load Balancer Aplikasi internal regional, tetapkan skema keINTERNAL_MANAGED.
- LB_SCHEME: skema load balancing.
Untuk Load Balancer Aplikasi eksternal regional, tetapkan skema ke
Buat ekstensi otorisasi dengan mengimpor file YAML ekstensi otorisasi menggunakan perintah
gcloud service-extensions authz-extensions import.gcloud service-extensions authz-extensions import my-authz-ext \ --source=authz-extension.yaml \ --location=LOCATIONGanti LOCATION dengan Google Cloud region tempat ekstensi otorisasi dikonfigurasi.
Tentukan kebijakan otorisasi dalam file YAML. Kebijakan otorisasi mendelegasikan otorisasi ke ekstensi otorisasi di kolom
customProvider.cat >authz-policy-custom.yaml <<EOF name: my-authz-policy-custom target: loadBalancingScheme: LB_SCHEME resources: - "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/LOCATION/forwardingRules/LB_FORWARDING_RULE" policyProfile: REQUEST_AUTHZ action: CUSTOM customProvider: authzExtension: resources: - "projects/PROJECT_ID/locations/LOCATION/authzExtensions/my-authz-ext" EOFGanti kode berikut:
LB_SCHEME: skema load balancing. Untuk Load Balancer Aplikasi eksternal regional, tetapkan skema keEXTERNAL_MANAGED. Untuk Load Balancer Aplikasi internal regional, tetapkan skema keINTERNAL_MANAGED.PROJECT_ID: ID Google Cloud project Anda.LOCATION: Google Cloud region.LB_FORWARDING_RULE: nama aturan penerusan load balancer.
Buat kebijakan otorisasi dengan mengimpor file YAML kebijakan otorisasi menggunakan perintah
gcloud network-security authz-policies import.gcloud beta network-security authz-policies import my-authz-policy-custom \ --source=authz-policy-custom.yaml \ --location=LOCATIONGanti LOCATION dengan Google Cloud region tempat load balancer dikonfigurasi.
Memahami log kebijakan otorisasi di Cloud Logging
Untuk memahami cara kebijakan otorisasi dicatat ke log saat permintaan diizinkan atau ditolak, tinjau bagian berikut.
Permintaan tidak sesuai dengan kebijakan ALLOW maupun DENY
Jika permintaan tidak cocok dengan kebijakan ALLOW maupun DENY, kebijakan DENY
akan mengizinkan permintaan dan mencatatnya sebagai
allowed_as_no_deny_policies_matched_request. Sebaliknya, kebijakan ALLOW menolak permintaan dan mencatatnya sebagai denied_as_no_allow_policies_matched_request. Karena salah satu kebijakan
menolak permintaan, permintaan tersebut ditolak.
Jika Anda menggunakan Load Balancer Aplikasi eksternal global,
statusDetailsdisetel kedenied_by_authz_policydalam log. Lihat contoh berikut:{ httpRequest: {8} insertId: "example-id" jsonPayload: { @type: "type.googleapis.com/google.cloud.loadbalancing.type.LoadBalancerLogEntry" authzPolicyInfo: { policies: [ 0: { details: "allowed_as_no_deny_policies_matched_request" result: "ALLOWED" } 1: { details: "denied_as_no_allow_policies_matched_request" result: "DENIED" } ] result: "DENIED" } backendTargetProjectNumber: "projects/12345567" remoteIp: "00.100.11.104" statusDetails: "denied_by_authz_policy" } logName: "projects/example-project/logs/requests" receiveTimestamp: "2024-08-28T15:33:56.046651035Z" resource: {2} severity: "WARNING" spanId: "3e1a09a8e5e3e14d" timestamp: "2024-08-28T15:33:55.355042Z" trace: "projects/example-project/traces/8c8b3dbf9a19c85954d0fa2d958ca509" }Jika Anda menggunakan Load Balancer Aplikasi internal regional, Load Balancer Aplikasi eksternal regional, atau Load Balancer Aplikasi internal lintas region,
proxyStatusdisetel keerror=\"http_request_error\"; details=\"denied_by_authz_policy\"dalam log. Lihat contoh berikut:{ httpRequest: {8} insertId: "example-id" jsonPayload: { @type: "type.googleapis.com/google.cloud.loadbalancing.type.LoadBalancerLogEntry" authzPolicyInfo: { policies: [ 0: { details: "allowed_as_no_deny_policies_matched_request" result: "ALLOWED" } 1: { details: "denied_as_no_allow_policies_matched_request" result: "DENIED" } ] result: "DENIED" } backendTargetProjectNumber: "projects/12345567" remoteIp: "00.100.11.104" proxyStatus: "error=\"http_request_error\"; details=\"denied_by_authz_policy\"" } logName: "projects/example-project/logs/requests" receiveTimestamp: "2024-08-28T15:33:56.046651035Z" resource: {2} severity: "WARNING" spanId: "3e1a09a8e5e3e14d" timestamp: "2024-08-28T15:33:55.355042Z" trace: "projects/example-project/traces/8c8b3dbf9a19c85954d0fa2d958ca509" }
Permintaan sesuai dengan kebijakan DENY
Jika permintaan cocok dengan kebijakan DENY, permintaan tersebut akan ditolak dan kebijakan yang menolak permintaan akan dicatat.
Jika Anda menggunakan Load Balancer Aplikasi eksternal global,
statusDetailsdisetel kedenied_by_authz_policydalam log dan nama kebijakan yang menolak permintaan dicatat dalampolicies. Lihat contoh berikut:{ httpRequest: {8} insertId: "example-id" jsonPayload: { @type: "type.googleapis.com/google.cloud.loadbalancing.type.LoadBalancerLogEntry" authzPolicyInfo: { policies: [ 0: { details: "name: "projects/12345567/locations/global/authzPolicies/deny-authz-policy-test"" result: "DENIED" } ] result: "DENIED" } backendTargetProjectNumber: "projects/12345567" cacheDecision: [2] remoteIp: "00.100.11.104" statusDetails: "denied_by_authz_policy" } logName: "projects/example-project/logs/requests" receiveTimestamp: "2024-08-28T15:33:56.046651035Z" resource: {2} severity: "WARNING" spanId: "3e1a09a8e5e3e14d" timestamp: "2024-08-28T15:33:55.355042Z" trace: "projects/example-project/traces/8c8b3dbf9a19c85954d0fa2d958ca509" }Jika Anda menggunakan Load Balancer Aplikasi internal regional, Load Balancer Aplikasi eksternal regional, atau Load Balancer Aplikasi internal lintas region,
proxyStatusdisetel keerror=\"http_request_error\"; details=\"denied_by_authz_policy\"dan nama kebijakan dicatat dalampolicies. Lihat contoh berikut:{ httpRequest: {8} insertId: "example-id" jsonPayload: { @type: "type.googleapis.com/google.cloud.loadbalancing.type.LoadBalancerLogEntry" authzPolicyInfo: { policies: [ 0: { details: "name: "projects/12345567/locations/$REGION/authzPolicies/deny-authz-policy-test"" result: "DENIED" } ] result: "DENIED" } backendTargetProjectNumber: "projects/12345567" remoteIp: "00.100.11.104" proxyStatus: "error=\"http_request_error\"; details=\"denied_by_authz_policy\"" } logName: "projects/example-project/logs/requests" receiveTimestamp: "2024-08-28T15:33:56.046651035Z" resource: {2} severity: "WARNING" spanId: "3e1a09a8e5e3e14d" timestamp: "2024-08-28T15:33:55.355042Z" trace: "projects/example-project/traces/8c8b3dbf9a19c85954d0fa2d958ca509" }
Permintaan tidak sesuai dengan kebijakan DENY, tetapi sesuai dengan kebijakan ALLOW
Jika permintaan tidak cocok dengan kebijakan DENY, tetapi cocok dengan kebijakan ALLOW, permintaan diizinkan. Dalam log, tindakan ini dicatat sebagai
allowed_as_no_deny_policies_matched_request untuk kebijakan DENY. Kebijakan yang mengizinkan permintaan juga dicatat.
Jika Anda menggunakan Load Balancer Aplikasi eksternal global, tidak ada
statusDetailsdalam log. Kebijakan yang mengizinkan permintaan juga dicatat dalampolicies. Lihat contoh berikut:{ httpRequest: {8} insertId: "example-id" jsonPayload: { @type: "type.googleapis.com/google.cloud.loadbalancing.type.LoadBalancerLogEntry" authzPolicyInfo: { policies: [ 0: { details: "allowed_as_no_deny_policies_matched_request" result: "ALLOWED" } 1: { details: "name: "projects/12345567/locations/global/authzPolicies/allow-authz-policy-test"" result: "ALLOWED" } ] result: "ALLOWED" } backendTargetProjectNumber: "projects/12345567" cacheDecision: [2] remoteIp: "00.100.11.104" } logName: "projects/example-project/logs/requests" receiveTimestamp: "2024-08-28T15:33:56.046651035Z" resource: {2} severity: "WARNING" spanId: "3e1a09a8e5e3e14d" timestamp: "2024-08-28T15:33:55.355042Z" trace: "projects/example-project/traces/8c8b3dbf9a19c85954d0fa2d958ca509" }Jika Anda menggunakan Load Balancer Aplikasi internal regional, Load Balancer Aplikasi eksternal regional, atau Load Balancer Aplikasi internal lintas region, tidak ada kolom
proxyStatusdalam log. Kebijakan yang mengizinkan permintaan juga dicatat dalampolicies. Lihat contoh berikut:{ httpRequest: {8} insertId: "example-id" jsonPayload: { @type: "type.googleapis.com/google.cloud.loadbalancing.type.LoadBalancerLogEntry" authzPolicyInfo: { policies: [ 0: { details: "allowed_as_no_deny_policies_matched_request" result: "ALLOWED" } 1: { details: "name: "projects/12345567/locations/$REGION/authzPolicies/allow-authz-policy-test"" result: "ALLOWED" } ] result: "ALLOWED" } backendTargetProjectNumber: "projects/12345567" cacheDecision: [2] remoteIp: "00.100.11.104" } logName: "projects/example-project/logs/requests" receiveTimestamp: "2024-08-28T15:33:56.046651035Z" resource: {2} severity: "WARNING" spanId: "3e1a09a8e5e3e14d" timestamp: "2024-08-28T15:33:55.355042Z" trace: "projects/example-project/traces/8c8b3dbf9a19c85954d0fa2d958ca509" }