Configurar atributos de linguagem de regras personalizadas

Cada regra de política de segurança do Google Cloud Armor tem uma prioridade, uma condição de correspondência e uma ação. O Cloud Armor executa a ação da regra de maior prioridade que corresponde a uma solicitação. As regras com prioridade menor do que a regra de correspondência de maior prioridade não são avaliadas, mesmo que tenham as mesmas condições de correspondência.

Cada regra de política de segurança aceita dois tipos de condições de correspondência:

  • Uma condição de correspondência básica contém listas de endereços IP ou de intervalos de endereços IP. As condições básicas de correspondência são definidas usando a flag --src-ip-ranges ao criar uma regra com a CLI do Google Cloud.
  • Uma condição de correspondência avançada contém uma expressão com até cinco subexpressões que podem corresponder a diversos atributos de uma solicitação recebida. As condições de correspondência avançada são definidas usando a flag --expression ao criar uma regra com a CLI do Google Cloud.

Esta página aborda as condições de correspondência avançadas e a linguagem de regras personalizadas do Cloud Armor, usada para escrever expressões nas condições de correspondência avançadas das regras de políticas de segurança. A linguagem de regras personalizadas do Cloud Armor é um subconjunto da Common Expression Language (CEL). As expressões escritas na linguagem de regras personalizadas do Cloud Armor precisam de dois componentes:

  • O atributo: os dados a serem inspecionados
  • A operação: como usar os dados

Por exemplo, a expressão a seguir usa os atributos origin.ip e 198.51.100.0/24 na operação inIpRange. Nesse caso, a expressão retornará como verdadeira se origin.ip estiver dentro do intervalo de endereços IP de 198.51.100.0/24.

inIpRange(origin.ip, '198.51.100.0/24')

Mesmo que a expressão do exemplo anterior corresponda apenas ao endereço IP do cliente, ao usá-la em uma regra de política de segurança do Cloud Armor, essa regra seria considerada em uma condição de correspondência avançada pela perspectiva de cotas. Para mais informações, consulte Cotas e limites do Cloud Armor.

Operações

A referência a seguir descreve os operadores que podem ser usados com atributos (representados por x, y e k) para definir expressões de regra.

Operações Expressões Descrição
Igualdade x == y Vai retornar verdadeiro se x for igual a y.
Igualdade, literal de string x == "foo" Vai retornar verdadeiro se x for igual à literal de string constante fornecida.
Igualdade, literal de string bruta x == R"fo'o" Vai retornar verdadeiro se x for igual à literal de string bruta fornecida que não interpreta sequências de escape. As literais de string bruta são convenientes para expressar strings que precisam usar caracteres de sequência de escape.
NOT lógico !x Vai retornar verdadeiro se o valor booleano x for falso, ou falso se o valor booleano x for verdadeiro.
Desigualdade x != y Vai retornar verdadeiro se x não for igual a y.
Concatenação x + y Vai retornar a string concatenada xy.
AND lógico x && y Vai retornar verdadeiro se x e y forem verdadeiros.
OR lógico x || y Vai retornar verdadeiro se x, y ou os dois forem verdadeiros.
Contém a substring x.contains(y) Vai retornar verdadeiro se a string x contiver a substring y.
Começa com a substring x.startsWith(y) Vai retornar verdadeiro se a string x começar com a substring y.
Termina com a substring x.endsWith(y) Retorna verdadeiro se a string x terminar com a substring y.
Correspondência de expressão regular x.matches(y) Vai retornar verdadeiro se a string x corresponder parcialmente ao padrão RE2 especificado y. O padrão RE2 é compilado usando a opção RE2::Latin1 que desativa os recursos Unicode.
Endereço IP dentro do intervalo inIpRange(x, y) Vai retornar verdadeiro se o endereço IP x estiver dentro do intervalo IP y.
Letras minúsculas