Evaluasi aturan menentukan apakah permintaan web harus diizinkan atau ditolak dengan menggunakan aturan yang Anda tetapkan dalam kebijakan. Alat ini mempertimbangkan atribut berikut untuk membuat keputusannya:
- Prioritas aturan: Bilangan bulat yang lebih rendah menunjukkan prioritas yang lebih tinggi.
- SessionMatcher: Mencocokkan atribut tingkat sesi berikut:
- Alamat IP mesin sumber
- Akun layanan perangkat sumber
- Tag Aman mesin sumber
- Nama host mesin target
- ApplicationMatcher: Mencocokkan atribut permintaan HTTP berikut:
- URL
- Jalur
- Header permintaan
Untuk daftar semua atribut SessionMatcher
dan ApplicationMatcher
, lihat
Atribut yang tersedia di SessionMatcher
dan ApplicationMatcher
.
Cara kerja evaluasi aturan
Aturan dievaluasi dalam urutan berikut:
- Aturan berprioritas tinggi akan dievaluasi terlebih dahulu.
- Aturan prioritas tertinggi yang cocok dengan atribut
SessionMatcher
danApplicationMatcher
menentukan tindakan yang akan dilakukan pada traffic. - Jika permintaan tidak cocok dengan atribut
SessionMatcher
danApplicationMatcher
aturan tersebut, aturan berikutnya dengan prioritas tertinggi akan dievaluasi. - Proses ini berlanjut hingga ditemukan aturan yang cocok dengan permintaan, atau semua aturan telah dievaluasi. Jika tidak ditemukan kecocokan, permintaan akan ditolak.
Sebelum mengonfigurasi pemeriksaan TLS
Anda harus memahami skenario evaluasi aturan berikut sebelum mengonfigurasi pemeriksaan TLS:
Klien dapat mengirim permintaan HTTP ke server proxy. Permintaan kemudian dievaluasi menggunakan semua data yang tersedia, termasuk nama host, identitas sumber, header HTTP, dan jalur.
Jika permintaan diizinkan, traffic HTTP akan dikirim ke tujuan. Namun, jika permintaan ditolak, traffic HTTP tidak akan diizinkan untuk diteruskan.
Klien dapat mengirim permintaan HTTP CONNECT ke proxy untuk membuat terowongan TCP ke tujuan. Hal ini dilakukan saat klien ingin mengirim traffic TCP arbitrer atau membuat koneksi TLS end-to-end dengan tujuan melalui proxy, seperti halnya HTTPS.
Jika aturan memiliki atribut
SessionMatcher
yang cocok dan tidak berisi atributApplicationMatcher
, dan evaluasi aturan menghasilkan traffic yang diizinkan, tunnel ke tujuan akan dibuat dan traffic akan di-proxy-kan TCP. Ini berlaku untuk traffic HTTPS dan TCP.Jika aturan berprioritas lebih tinggi tidak dapat menentukan tindakan yang harus dilakukan pada permintaan, evaluasi aturan akan dilanjutkan. Jika evaluasi dilanjutkan ke aturan dengan atribut
ApplicationMatcher
, traffic yang di-tunnel akan ditafsirkan sebagai HTTP atau HTTPS.Jika data yang mendasarinya bukan HTTP atau HTTPS, koneksi akan gagal.
Jika data yang mendasari adalah HTTP, permintaan akan dievaluasi, termasuk nama host, identitas sumber, header HTTP, dan jalur. Berdasarkan hasil evaluasi, traffic diizinkan atau ditolak.
Untuk traffic HTTPS, aturan hanya dievaluasi jika tanda pemeriksaan TLS diaktifkan; jika tidak, aturan tersebut akan dilewati.
Untuk traffic HTTPS, aturan hanya diperiksa jika kondisi berikut terpenuhi:
- Tanda inspeksi TLS diaktifkan.
- Traffic cocok dengan atribut
SessionMatcher
.
Rekomendasi untuk mengonfigurasi aturan pemeriksaan TLS
- Jika Anda ingin mengizinkan traffic TCP, maka aturan yang mengizinkan traffic TCP harus memiliki prioritas yang lebih tinggi daripada aturan yang mengizinkan traffic HTTP.
- Aturan dengan atribut
ApplicationMatcher
harus dicakup secara erat menggunakan atributSessionMatcher
untuk meminimalkan penafsiran alur yang tidak terkait sebagai HTTP. - Aturan yang mengizinkan traffic TLS (termasuk HTTPS) tetapi tidak melakukan pemeriksaan TLS dapat ditafsirkan sebagai aturan proxy TCP.
- Untuk menghindari pemeriksaan TLS atas traffic yang tidak perlu, prioritas aturan pemeriksaan TLS harus lebih rendah daripada aturan pemeriksaan non-TLS. Atau, untuk menggagalkan dengan cepat untuk traffic yang tidak cocok, aturan pemeriksaan TLS harus dicakup secara ketat menggunakan atribut
SessionMatcher
.
Contoh konfigurasi aturan pemeriksaan TLS
Pertimbangkan dua aturan dalam contoh berikut.
Contoh 1
Dalam contoh ini, kami mengasumsikan adanya aturan berprioritas lebih rendah lainnya. Pertimbangkan dua aturan berikut:
Aturan 1
description: do not allow POST requests priority: 10 basicProfile: DENY sessionMatcher: true tlsInspectionEnabled: true applicationMatcher: request.method == 'POST'
Aturan 2
description: allow TCP proxying from tag 12345 to example.com priority: 20 basicProfile: ALLOW sessionMatcher: source.matchTag('tagValues/12345') && host() == 'example.com'
Pada contoh ini, Secure Web Proxy menafsirkan dua aturan sebagai berikut:
- Mengizinkan traffic TCP tetapi melarang jenis permintaan HTTP tertentu tidak dapat terjadi bersamaan karena traffic TCP dapat berisi permintaan POST.
- Traffic dalam aturan 2 tidak pernah diizinkan. Permintaan ini ditolak karena traffic dari tag 12345 ke example.com dicegat dan ditafsirkan sebagai HTTP untuk mengevaluasi metode HTTP.
Agar aturan 2 dapat diterapkan, Anda dapat menggunakan salah satu solusi berikut:
- Direkomendasikan: Tingkatkan prioritas aturan 2 ke tingkat yang lebih tinggi (prioritas: 5).
Aturan cakupan 1 untuk menghindari tumpang-tindih traffic yang diizinkan dengan atribut
SessionMatcher
-nya:sessionMatcher: !(source.matchTag('tagValues/12345') && host() == 'example.com')
Kami tidak merekomendasikan solusi ini karena akan sulit untuk mempertahankan banyak aturan yang tumpang-tindih.
Contoh 2
Pertimbangkan dua aturan berikut:
Aturan 1
description: allow to specific GitHub repository (TLS inspect to match specific path) priority: 10 basicProfile: ALLOW sessionMatcher: true tlsInspectionEnabled: true applicationMatcher: request.url().startsWith('github.com/grpc/grpc')
Aturan 2
description: allow TCP proxying from tag 12345 to example.com priority: 20 basicProfile: ALLOW sessionMatcher: host() == 'bankofamerica.com'
Pada contoh ini, Secure Web Proxy menafsirkan dua aturan sebagai berikut:
- Semua traffic, termasuk yang ditujukan untuk
bankofamerica.com
, diperiksa untuk TLS agar cocok denganrequest.url()
aturan prioritas tinggi 1. Untuk menghindari pemeriksaan TLS di aturan 2, Anda dapat menggunakan salah satu solusi berikut:
- Tingkatkan prioritas aturan 2 ke tingkat yang lebih tinggi (prioritas: 5).
Akibatnya, aturan 2 diterapkan sebelum mengevaluasi aturan 1, dan traffic dari
bankofamerica.com
diizinkan tanpa diperiksa TLS. Direkomendasikan: Persempit cakupan aturan 1 untuk mengizinkan pemeriksaan TLS khusus untuk domain
github.com
. Untuk mempersempit cakupan, tambahkan atributsessionMatcher
yang ditargetkan:sessionMatcher: host() == 'github.com'
- Tingkatkan prioritas aturan 2 ke tingkat yang lebih tinggi (prioritas: 5).
Akibatnya, aturan 2 diterapkan sebelum mengevaluasi aturan 1, dan traffic dari
Batasan
Anda harus mempertimbangkan batasan berikut sebelum mengonfigurasi pemeriksaan TLS:
Server hanya diverifikasi menggunakan root certificate publik. Kumpulan root certificate authority (CA) didasarkan pada Mozilla Root Program. Perilaku verifikasi sertifikat dapat berubah dan sesuai dengan cara browser web memverifikasi sertifikat.
Karena verifikasi backend saat ini tidak dapat dilakukan, traffic ke server dengan sertifikat pribadi atau yang ditandatangani sendiri tidak dapat dicegat.
Proxy Web Aman tidak menjalankan pemeriksaan daftar pencabutan sertifikat (CRL).
Agar pemeriksaan TLS berfungsi, klien saat ini harus mengirimkan Server Name Indication (SNI). SNI adalah ekstensi spesifikasi TLS yang bersifat opsional, tetapi sebagian besar klien mengaktifkannya secara default.
Pemeriksaan TLS tidak berfungsi jika klien mewajibkan Encrypted Client Hello (ECH) (sebelumnya dikenal sebagai Encrypted SNI).
ECH adalah draf standar IETF yang memungkinkan klien untuk mengenkripsi awal handshake TLS menggunakan kunci server yang sudah ditetapkan. Karena pemeriksaan TLS bertindak sebagai proxy pencegat, proxy tidak memiliki akses ke kunci server yang telah ditetapkan sebelumnya. Akibatnya, ECH tidak berfungsi.
Klien harus dikonfigurasi agar memercayai root certificate pribadi Anda.
Jika menghapus CA dari kumpulan CA pribadi, Anda akan melihat sertifikat yang di-cache yang ditandatangani oleh CA tersebut hingga 28 jam. Untuk mencegah penggunaan sertifikat yang di-cache, Anda dapat memperbarui kebijakan pemeriksaan TLS agar mengarah ke kumpulan CA baru. Akibatnya, Secure Web Proxy terpaksa membuat sertifikat baru.