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-rangesao 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
--expressionao 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 |