Common Expression Language (CEL) adalah
bahasa open source non-Turing lengkap yang menerapkan semantik umum untuk
evaluasi ekspresi. Secure Web Proxy menggunakan subset kondisi CEL untuk membuat
keputusan otorisasi boolean berdasarkan data atribut. Secara umum, ekspresi
kondisi terdiri dari satu atau beberapa pernyataan yang digabungkan dengan operator
logis (&&
, ||
, atau !
). Setiap pernyataan menyatakan aturan kontrol
berbasis atribut yang berlaku pada binding peran dan pada akhirnya menentukan apakah
akses diizinkan.
Atribut
Atribut sesi dan atribut aplikasi digunakan saat menentukan kebijakan Secure Web Proxy untuk menjelaskan atribut sesi atau atribut aplikasi yang menjadi sasaran kebijakan.
Atribut sesi, yang dijelaskan
oleh SessionMatcher
, berlaku untuk atribut khusus sesi, seperti alamat IP sumber atau
tujuan, host, atau rentang IP. Atribut aplikasi, yang dijelaskan oleh
ApplicationMatcher
, berlaku untuk atribut aplikasi, seperti header permintaan,
metode permintaan HTTP, atau jalur permintaan.
Atribut yang tersedia di SessionMatcher
dan ApplicationMatcher
Tabel berikut menjelaskan atribut yang berlaku untuk SessionMatcher
dan
ApplicationMatcher
.
Atribut | Jenis atribut | Deskripsi |
---|---|---|
source.ip |
string | Alamat IP klien yang mengirim permintaan. |
source.port |
bilangan bulat | Port klien yang mengirim permintaan. |
destination.port |
bilangan bulat | Port upstream tempat instance Secure Web Proxy mengirim traffic. |
host() |
string | Nilai host yang digunakan untuk resolusi DNS dan koneksi upstream.
Hal ini tidak termasuk port.
Nilai ditentukan oleh hal berikut:
|
source.matchTag(SECURE_TAG) |
boolean |
Argumen adalah ID permanen tag aman, seperti
|
source.matchServiceAccount(SERVICE_ACCOUNT) |
boolean | True jika sumber dikaitkan dengan
SERVICE_ACCOUNT , seperti
source.matchServiceAccount('x@my-project.iam.gserviceaccount.com') .
|
inUrlList(HOST_OR_URL, NAMED_LIST) |
boolean |
Saat pola |
inIpRange(IP_ADDRESS, |
boolean | True jika IP_ADDRESS terdapat
dalam IP_RANGE seperti
inIpRange(source.ip, '1.2.3.0/24') . Subnet mask untuk alamat IPv6
tidak boleh lebih besar dari /64.
|
Atribut hanya tersedia untuk ApplicationMatcher
Tabel berikut menjelaskan atribut yang hanya berlaku untuk
ApplicationMatcher
.
Atribut | Jenis atribut | Deskripsi |
---|---|---|
request.headers |
map | Peta string-ke-string dari header permintaan HTTP. Jika header berisi beberapa nilai, nilai dalam peta ini adalah string yang dipisahkan koma dari semua nilai header. Semua kunci dalam peta ini menggunakan huruf kecil. |
request.method |
string | Metode Permintaan HTTP, seperti GET atau POST. |
request.host |
string | Kemudahan setara dengan Sebaiknya gunakan |
request.path |
string | Jalur URL HTTP yang diminta. |
request.query |
string | Kueri URL HTTP dalam format
Tidak ada decoding yang dilakukan. |
request.scheme |
string | Skema URL HTTP, seperti HTTP atau HTTPS. Nilai untuk atribut ini semuanya dalam huruf kecil. |
request.url() |
string | Kenyamanan untuk Ini tidak termasuk port dan menggunakan nilai host yang mungkin berbeda dengan header host. |
request.useragent() |
string | Kemudahan setara dengan request.headers['user-agent'] . |
Operator
Secure Web Proxy mendukung beberapa operator yang dapat digunakan untuk membuat ekspresi logika
yang kompleks dari pernyataan ekspresi sederhana. Secure Web Proxy mendukung
operator logika, seperti &&
, ||,
, dan !
, serta operator manipulasi
string, seperti x.contains('y')
.
Operator logika memungkinkan Anda memverifikasi beberapa variabel dalam ekspresi
kondisional. Misalnya,
request.method == 'GET' && host().matches('.*\.example.com')
menggabungkan dua
pernyataan, dan mengharuskan kedua pernyataan tersebut menjadi True
untuk menghasilkan
hasil keseluruhan True
.
Operator manipulasi string mencocokkan string atau substring yang Anda tentukan, dan memungkinkan Anda mengembangkan aturan untuk mengontrol akses ke resource tanpa mencantumkan setiap kemungkinan kombinasi.
Operator logika
Tabel berikut menjelaskan operator logika yang didukung Proxy Web Aman.
Contoh ekspresi | Deskripsi |
---|---|
x == "foo" |
Menampilkan True jika x sama dengan argumen literal string konstan. |
x == R"fo'o" |
Menampilkan True jika x sama dengan literal string mentah yang diberikan yang tidak menafsirkan urutan escape. Literal string
mentah mudah digunakan untuk mengekspresikan string yang harus
digunakan kode untuk meng-escape karakter urutan. |
x == y |
Menampilkan True jika x sama dengan
y . |
x != y |
Menampilkan True jika x tidak sama dengan
y . |
x && y |
Menampilkan True jika x dan y adalah True . |
x || y |
Menampilkan True jika x , y , atau keduanya
adalah True . |
!x |
Menampilkan True jika nilai boolean x adalah
False , atau menampilkan False jika nilai boolean
x adalah True . |
m['k'] |
Jika kunci k ada, nilai pada kunci
k akan ditampilkan dalam peta string ke string m . Jika kunci
k tidak ada, akan menampilkan error yang
menyebabkan aturan yang sedang dievaluasi tidak cocok. |
Operator manipulasi string
Tabel berikut menjelaskan operator manipulasi string yang didukung oleh Secure Web Proxy.
Ekspresi | Deskripsi |
---|---|
x.contains(y) |
Menampilkan True jika string x berisi
substring y . |
x.startsWith(y) |
Menampilkan True jika string x dimulai dengan
substring y . |
x.endsWith(y) |
Menampilkan True jika string x diakhiri dengan
substring y . |
x.matches(y) |
Menampilkan Pola RE2 dikompilasi menggunakan opsi RE2::Latin1 yang menonaktifkan fitur Unicode. |
x.lower() |
Menampilkan nilai huruf kecil dari string x . |
x.upper() |
Menampilkan nilai huruf besar dari string x . |
x + y |
Menampilkan string yang digabungkan xy . |
int(x) |
Mengonversi hasil string x menjadi jenis
int . String yang dikonversi dapat digunakan untuk perbandingan bilangan bulat dengan
operator aritmetika standar seperti > dan
<= . Hal ini hanya berfungsi untuk nilai yang dapat berupa bilangan bulat. |