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 de autorização booleanas com base em dados de atributos. Em geral, uma expressão
condicional consiste em uma ou mais instruções unidas por operadores
lógicos (&&
, ||
ou !
). Cada instrução expressa uma regra de controle
baseada em atributo que se aplica à vinculação de papéis e, por fim, determina se
o acesso é 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.
Atributos de sessão, descritos
por SessionMatcher
, são aplicadas a atributos específicos da sessão, como a origem ou
endereços IP de destino, hosts ou intervalos 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 a 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 Secure Web Proxy 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 por:
|
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') . As máscaras de sub-rede para endereços
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 tiver vários valores, o valor neste mapa será uma string separada por vírgulas de todos os valores do cabeçalho. As chaves deste mapa ficam todas em minúsculas. |
request.method |
string | O método de solicitação HTTP, como GET ou POST. |
request.host |
string | Conveniência equivalente a Recomendamos usar |
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 Proxy seguro da Web oferece suporte a operadores lógicos, como &&
, ||,
e !
, e operadores de manipulação de strings, como x.contains('y')
.
Os operadores lógicos permitem verificar várias variáveis em uma expressão
condicional. 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 strings correspondem a strings ou substrings que você define e permitem que você desenvolva regras para controlar o acesso a recursos sem listar todas as combinações possíveis.
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 ao argumento
literal de string constante. |
x == R"fo'o" |
Retorna True se x for igual ao literal de string bruto
fornecido 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
são True . |
x || y |
Retorna True se x , y ou ambos
forem True . |
!x |
Retorna True se o valor booleano x for
False ou retorna False se o valor booleano
O valor da coluna x é 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 strings aceitos pelo 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. |