O Common Expression Language (CEL) é uma
linguagem de código aberto não completa que implementa semântica comum para
avaliação da expressão. O Secure Web Proxy usa um subconjunto de condições de CEL para fazer
decisões booleanas com base nos dados do atributo. Em geral, uma condição
A expressão consiste em uma ou mais instruções unidas por elementos
(&&
, ||
ou !
). Cada instrução expressa uma função
de controle de acesso que se aplica à vinculação de papéis e, por fim, determina se
é permitido.
Atributos
Os atributos de sessão e de aplicativo são usados na definição As políticas do Secure Web Proxy para descrever os atributos ou os atributos do aplicativo a que uma política se aplica.
Os atributos de sessão, descritos
por SessionMatcher
, são aplicados a atributos específicos da sessão, como o endereço IP de origem ou
de destino, hosts ou intervalo de IP. Atributos do aplicativo, descritos por
ApplicationMatcher
, se aplicam a atributos do aplicativo, como cabeçalhos de solicitação.
método de solicitação HTTP ou caminho de solicitação.
Atributos disponíveis em SessionMatcher
e ApplicationMatcher
A tabela a seguir descreve os atributos que se aplicam às APIs SessionMatcher
e
ApplicationMatcher
.
Atributo | Tipo de atributo | Descrição |
---|---|---|
source.ip |
string | O endereço IP do cliente que enviou a solicitação. |
source.port |
integer | A porta do cliente que enviou a solicitação. |
destination.port |
integer | A porta upstream para a qual a instância do Proxy seguro da Web está enviando tráfego. |
host() |
string | O valor do host usado para resolução de DNS e conexões upstream.
Isso não inclui a porta.
O valor é determinado pelo seguinte:
|
source.matchTag(SECURE_TAG) |
booleano |
O argumento é o ID permanente da tag segura, como
|
source.matchServiceAccount(SERVICE_ACCOUNT) |
booleano | True se a origem estiver associada a
SERVICE_ACCOUNT , como
source.matchServiceAccount('x@my-project.iam.gserviceaccount.com')
|
inUrlList(HOST_OR_URL, NAMED_LIST) |
booleano |
Quando um padrão |
inIpRange(IP_ADDRESS, |
booleano | True se IP_ADDRESS estiver contido
no IP_RANGE , como
inIpRange(source.ip, '1.2.3.0/24') . Máscaras de sub-rede para IPv6
não podem ser maiores que /64.
|
Atributos disponíveis apenas para ApplicationMatcher
A tabela a seguir descreve os atributos que se aplicam apenas a
ApplicationMatcher
:
Atributo | Tipo de atributo | Descrição |
---|---|---|
request.headers |
mapa | Um mapa com cada string dos cabeçalhos de solicitação HTTP. Se um cabeçalho contiver vários valores, o valor neste mapa é separado por vírgulas string de todos os valores do cabeçalho. As chaves neste mapa são letras minúsculas. |
request.method |
string | O método de solicitação HTTP, como GET ou POST. |
request.host |
string | Conveniência equivalente a Recomendamos o uso de |
request.path |
string | O caminho do URL de HTTP solicitado. |
request.query |
string | A consulta de URL HTTP no formato de
Nenhuma decodificação é executada. |
request.scheme |
string | O esquema de URL HTTP, como HTTP ou HTTPS. Valores para este atributo são todos minúsculos. |
request.url() |
string | Conveniência para Isso não inclui a porta e usa um valor de host. que pode ser diferente do cabeçalho do host. |
request.useragent() |
string | Conveniência equivalente a request.headers['user-agent'] . |
Operadores
O Secure Web Proxy dá suporte a vários operadores que podem ser usados para criar
expressões lógicas de instruções de expressões simples. O Secure Web Proxy dá suporte
operadores lógicos, como &&
, ||,
e !
, e manipulação de string
operadores, como x.contains('y')
.
Os operadores lógicos permitem verificar diversas variáveis em uma condição
expressão. Por exemplo:
request.method == 'GET' && host().matches('.*\.example.com')
une dois
e exige que ambas sejam True
para produzir uma
resultado geral de True
.
Os operadores de manipulação de string fazem a correspondência de strings ou substrings definidas por você. e permitem que você desenvolva regras para controlar o acesso aos recursos sem listar cada uma possível combinação.
Operadores lógicos
A tabela a seguir descreve os operadores lógicos compatíveis com o Secure Web Proxy.
Expressão de exemplo | Descrição |
---|---|
x == "foo" |
Retorna True se x for igual à constante
argumento literal de string. |
x == R"fo'o" |
Retorna True se x for igual ao valor bruto informado
literal de string que não interpreta sequências de escape. String bruta
Os literais são convenientes para expressar strings que o código deve
use para escapar caracteres da sequência. |
x == y |
Retorna True se x for igual a
y |
x != y |
Retorna True se x não for igual a
y |
x && y |
Retorna True se x e y
forem True . |
x || y |
Retorna True se x , y ou ambos.
são True . |
!x |
Retorna True se o valor booleano x for
False ou False se o valor booleano
x for True . |
m['k'] |
Se a chave k estiver presente, retorna o valor na chave
k no mapa com cada string m . Chave "if"
k não está presente, retorna um erro que
faz com que a regra em avaliação não corresponda. |
Operadores de manipulação de string
A tabela a seguir descreve os operadores de manipulação de string que com suporte ao Secure Web Proxy.
Expressão | Descrição |
---|---|
x.contains(y) |
Retorna True se a string x contém o
substring y . |
x.startsWith(y) |
Retorna True se a string x começar com a
substring y . |
x.endsWith(y) |
Retorna True se a string x terminar com o
substring y . |
x.matches(y) |
Retorna O padrão RE2 é compilado usando a opção RE2::LATAM1, que desativa os recursos Unicode. |
x.lower() |
Retorna o valor em minúsculas da string x . |
x.upper() |
Retorna o valor em maiúsculas da string x . |
x + y |
Retorna a string concatenada xy . |
int(x) |
Converte o resultado da string de x em um int
não é válido. A string convertida pode ser usada para comparação de números inteiros com
operadores aritméticos padrão, como > e
<= . Isso funciona apenas para valores que podem ser números inteiros. |