Esta página descreve como gerenciar políticas de segurança do Google Cloud Armor e filtrar o tráfego de entrada no seu aplicativo. As políticas de segurança do Cloud Armor ajudam a proteger seus aplicativos e serviços da Web contra ataques distribuídos de negação de serviço (DDoS) e outras ameaças da Internet. Para aplicar uma postura de segurança forte, é necessário gerenciar suas políticas de segurança criando, testando e consolidando. Para criar ou ver políticas de segurança, consulte Criar e ver políticas de segurança do Cloud Armor.
Gerenciar políticas de segurança
As seções a seguir descrevem como listar, atualizar, excluir ou testar suas políticas de segurança.
Listar políticas de segurança
Siga as etapas desta seção para listar as políticas de segurança do Cloud Armor no seu projeto.
Console
No console do Cloud de Confiance , acesse a página Políticas do Cloud Armor.
Para ver uma política, clique no nome dela na lista.
gcloud
gcloud compute security-policies list
Exemplo:
gcloud compute security-policies list
Saída:
NAME: my-policy REGION: us-central1
Para ver mais informações, consulte gcloud compute security-policies
list.
Atualizar políticas de segurança
As etapas nesta seção descrevem como atualizar uma política de segurança do Cloud Armor. É possível mudar a descrição da política, modificar a regra padrão, alterar o serviço de back-end de destino ou adicionar regras.
Console
No console do Cloud de Confiance , acesse a página Políticas do Cloud Armor.
Encontre o nome da política que você quer atualizar na lista de políticas e clique em Menu dessa política.
- Para atualizar a descrição ou a ação da regra padrão, selecione Editar, faça as mudanças e clique em Atualizar.
- Para adicionar uma regra, selecione Adicionar regra e siga as etapas em Adicionar regras a uma política de segurança.
- Para substituir o serviço de back-end de destino, selecione Aplicar política ao destino, clique em Adicionar destino, selecione um destino e clique em Adicionar.
gcloud
Para atualizar uma política de segurança, siga estas etapas da Google Cloud CLI:
- Para atualizar uma regra, consulte Atualizar uma única regra em uma política de segurança.
- Para adicionar uma regra, consulte Adicionar regras a uma política de segurança.
- Para excluir uma regra, consulte Excluir regras de uma política de segurança.
- Para atualizar várias regras em uma única atualização atômica, consulte Atualizar atomicamente várias regras em uma política de segurança.
- Para atualizar campos que não são de regra (como a descrição), consulte Exportar políticas de segurança e Importar políticas de segurança.
Excluir políticas de segurança
Esta seção descreve como excluir uma política de segurança do Cloud Armor. Remova todos os serviços de back-end da política antes de excluí-la.
Console
No console do Cloud de Confiance , acesse a página Políticas do Cloud Armor.
Marque a caixa de seleção ao lado da política que você quer excluir.
Na parte de cima à direita da página, clique em Implantar.
gcloud
Use gcloud compute security-policies delete NAME. Substitua
NAME pelo nome da política de segurança:
gcloud compute security-policies delete NAME
Testar políticas de segurança
Recomendamos que você implante todas as novas regras no modo de visualização e examine os registros de solicitação para verificar se as políticas e as regras estão se comportando conforme o esperado.
Gerenciar regras da política de segurança
As seções a seguir descrevem como listar, adicionar, atualizar ou excluir regras de política de segurança.
Listar as regras em uma política de segurança
Siga as etapas desta seção para listar as regras em uma política de segurança do Cloud Armor.
Console
No console do Cloud de Confiance , acesse a página Políticas do Cloud Armor.
Clique no nome da política de segurança específica. A página Detalhes da política mostra as regras na guia Regras.
gcloud
Use o seguinte comando gcloud para listar todas as regras em uma política de
segurança:
gcloud compute security-policies describe NAME \
Use o seguinte comando gcloud para listar todas as regras em uma única política de
segurança em uma região especificada, junto com uma descrição da política:
gcloud compute security-policies describe NAME \ --region REGION
Use o seguinte comando gcloud para descrever uma regra:
gcloud compute security-policies rules describe PRIORITY \
--security-policy POLICY_NAME
Por exemplo, o comando a seguir descreve a regra com prioridade 1.000
na política de segurança my-policy:
gcloud compute security-policies rules describe 1000 \
--security-policy my-policy
Saída:
action: deny(403) description: block traffic from 192.0.2.0/24 and 198.51.100.0/24 kind: compute#securityPolicyRule match: srcIpRanges: - '192.0.2.0/24' - '198.51.100.0/24' preview: false priority: 1000
Para ver mais informações, consulte gcloud compute security-policies
describe.
Adicionar regras a uma política de segurança
Siga as etapas desta seção para adicionar regras a uma política de segurança do Cloud Armor.
Console
No console do Cloud de Confiance , acesse a página Políticas do Cloud Armor.
Clique no nome da política de segurança para abrir a página Detalhes da política.
No meio da página, clique na guia Regras.
Clique em Adicionar regra.
Opcional: digite uma descrição para o caso.
Selecione o modo:
- Modo básico: permite ou nega o tráfego com base em endereços ou intervalos de IP.
- Modo avançado: permite ou nega tráfego com base em expressões de regra.
No campo Correspondência, especifique as condições a que a regra se aplica:
Modo básico: insira de 1 a 10 intervalos de endereços IP para que correspondam à regra. Você pode adicionar até 10 intervalos de endereços IP. Consulte os limites em Cotas e limites do Cloud Armor.
Modo avançado:
- Criador de condições de correspondência (prévia): use o criador visual para criar expressões sem escrever código CEL bruto. Combine e agrupe condições e aplique transformações de string. Consulte Usar o criador de condições de correspondência.
- Editor de condições de correspondência: insira uma expressão para avaliar em relação às solicitações recebidas. Para mais informações, consulte a referência da linguagem de regras personalizadas.
A expressão a seguir corresponde a solicitações do endereço IP
1.2.3.4que contêm a stringexampleno cabeçalhoUser-Agent:inIpRange(origin.ip, '1.2.3.4/32') && has(request.headers['user-agent']) && request.headers['user-agent'].contains('example')A expressão a seguir corresponde a solicitações que têm um cookie com um valor específico:
has(request.headers['cookie']) && request.headers['cookie'].contains('cookie_name=cookie_value')A expressão a seguir corresponde a solicitações da região
AU:origin.region_code == 'AU'A expressão a seguir corresponde a solicitações da região
AUque não estão no intervalo de IP especificado:origin.region_code == "AU" && !inIpRange(origin.ip, '1.2.3.0/24')A expressão a seguir corresponde a solicitações se o URI corresponder a uma expressão regular:
request.path.matches('/example_path/')A expressão a seguir corresponde a solicitações se o cabeçalho
user-idcontiver um valor codificado em Base64 que, quando decodificado, contém uma string específica:has(request.headers['user-id']) && request.headers['user-id'].base64Decode().contains('myValue')A expressão a seguir usa um conjunto de expressões pré-configuradas para corresponder a ataques SQLi:
evaluatePreconfiguredWaf('sqli-stable')
Na lista Ação, selecione Permitir ou Negar.
Se você estiver configurando uma regra de negação, selecione uma mensagem Status negado.
Para ativar o modo de visualização da regra, selecione Ativar.
No campo Prioridade, digite um número inteiro positivo.
Clique em Adicionar.
gcloud
Use o comando gcloud compute security-policies rules create
PRIORITY. Substitua PRIORITY pela
prioridade da regra na política:
gcloud compute security-policies rules create PRIORITY \
--security-policy POLICY_NAME \
--description DESCRIPTION \
--src-ip-ranges IP_RANGES | --expression EXPRESSION \
--action=[ allow | deny-403 | deny-404 | deny-502 ] \
--preview
Por exemplo, o comando a seguir adiciona uma regra com prioridade 1.000 para bloquear o tráfego dos intervalos de endereços IP 192.0.2.0/24 e 198.51.100.0/24:
gcloud compute security-policies rules create 1000 \
--security-policy my-policy \
--description "block traffic from 192.0.2.0/24 and 198.51.100.0/24" \
--src-ip-ranges "192.0.2.0/24","198.51.100.0/24" \
--action "deny-403"
Use a flag --expression para especificar uma condição. O comando a seguir
adiciona uma regra para permitir o tráfego do endereço IP 1.2.3.4 que
contém a string example no cabeçalho User-Agent:
gcloud compute security-policies rules create 1000 \
--security-policy my-policy \
--expression "inIpRange(origin.ip, '1.2.3.4/32') && has(request.headers['user-agent']) && request.headers['user-agent'].contains('example')" \
--action allow \
--description "Block User-Agent 'example'"
O comando a seguir adiciona uma regra para bloquear solicitações se o cookie da solicitação contiver um valor específico:
gcloud compute security-policies rules create 1000 \
--security-policy my-policy \
--expression "has(request.headers['cookie']) && request.headers['cookie'].contains('80=BLAH')" \
--action deny-403 \
--description "Cookie Block"
O comando a seguir adiciona uma regra para bloquear solicitações da região
AU:
gcloud compute security-policies rules create 1000 \
--security-policy my-policy \
--expression "origin.region_code == 'AU'" \
--action deny-403 \
--description "AU block"
O comando a seguir adiciona uma regra para bloquear solicitações da região AU
e não no intervalo de IP especificado:
gcloud compute security-policies rules create 1000 \
--security-policy my-policy \
--expression "origin.region_code == "AU" && !inIpRange(origin.ip, '1.2.3.0/24')" \
--action deny-403 \
--description "country and IP block"
O comando a seguir adiciona uma regra para bloquear solicitações com um URI que corresponda a uma expressão regular:
gcloud compute security-policies rules create 1000 \
--security-policy my-policy \
--expression "request.path.matches('/example_path/')" \
--action deny-502 \
--description "regex block"
O comando a seguir adiciona uma regra para bloquear solicitações se o valor decodificado em Base64
do cabeçalho user-id contiver um valor específico:
gcloud compute security-policies rules create 1000 \
--security-policy my-policy \
--expression "has(request.headers['user-id']) && request.headers['user-id'].base64Decode().contains('myValue')" \
--action deny-403 \
--description "country and IP block"
O comando a seguir adiciona uma regra que usa um conjunto de expressões pré-configuradas para mitigar ataques SQLi:
gcloud compute security-policies rules create 1000 \
--security-policy my-policy \
--expression "evaluatePreconfiguredWaf('sqli-stable')" \
--action deny-403
Atualizar uma única regra em uma política de segurança
Esta seção descreve como atualizar uma única regra em uma política de segurança do Cloud Armor. Para atualizar atomicamente várias regras, consulte Atualizar atomicamente várias regras em uma política de segurança.
Console
No console do Cloud de Confiance , acesse a página Políticas do Cloud Armor.
Clique no nome da política de segurança para abrir a página Detalhes da política.
No meio da página, clique na guia Regras.
Ao lado da regra que você quer atualizar, clique em Editar. A página Editar regra é exibida.
Faça as alterações e clique em Atualizar.
gcloud
Use o comando a seguir para atualizar uma regra. Só é possível atualizar uma política de segurança por vez:
gcloud compute security-policies rules update PRIORITY [ \
--security-policy POLICY_NAME \
--description DESCRIPTION \
--src-ip-ranges IP_RANGES | --expression EXPRESSION \
--action=[ allow | deny-403 | deny-404 | deny-502 ] \
--preview
]
Por exemplo, o comando a seguir atualiza uma regra com prioridade 1111 para permitir o tráfego do intervalo de endereços IP 192.0.2.0/24:
gcloud compute security-policies rules update 1111 \
--security-policy my-policy \
--description "allow traffic from 192.0.2.0/24" \
--src-ip-ranges "192.0.2.0/24" \
--action "allow"
Para mais informações sobre o comando anterior, consulte gcloud compute
security-policies rules
update.
Para atualizar a prioridade de uma regra, use a API REST. Consulte
securityPolicies.patchRule.
Usar o criador de condições de correspondência
O criador de condições de correspondência é uma interface visual no console do Cloud de Confiance que ajuda você a criar expressões de regras complexas do Cloud Armor sem escrever código da Common Expression Language (CEL). Em vez de escrever código, use a UI estruturada do criador para combinar condições e agrupar lógica, o que ajuda a evitar erros de sintaxe e visualizar melhor a estrutura da regra. O criador de consultas é compatível com listas simples e lógica aninhada de até cinco níveis de expressões. Use essa ferramenta ao configurar regras para proteger back-ends multicloud ou implantações híbridas, em que talvez seja necessário inspecionar atributos de solicitação específicos antes de rotear o tráfego.
Recursos do criador de condições de correspondência
O criador de condições de correspondência inclui os seguintes recursos:
- Lógica e aninhamento: combine várias condições usando os operadores
ANDeOR. O criador de consultas aceita agrupamento e aninhamento de até cinco expressões. - Transformações de string: para atributos baseados em string (como
request.pathourequest.headers), aplique transformações para normalizar os dados antes da avaliação. As transformações compatíveis incluem:- Minúsculas e maiúsculas
- Decodificação Base 64
- Decodificação de URL e decodificação de URL (Unicode)
- Conversão de UTF-8 para Unicode
- Análise bidirecional: alterne entre o Criador de condições de correspondência visual e o Editor de condições de correspondência de texto bruto. A interface analisa o código CEL bruto e o transforma em blocos visuais automaticamente.
- Suporte a funções: o criador fornece controles UI para expressões baseadas em funções, como regras de WAF pré-configuradas, grupos de endereços e Threat Intelligence.
Limitações
O criador de condições de correspondência é a interface padrão para a criação de regras avançadas. Se uma expressão contiver uma lógica não compatível (como macros desconhecidas), o criador será desativado. Nesses casos, use o texto bruto no editor de condições de correspondência para editar a regra.
Além disso, a disponibilidade de determinadas expressões no criador depende do nível do Google Cloud Armor Enterprise do seu projeto e do tipo de política de segurança.
Atualizar atomicamente várias regras em uma política de segurança
É possível usar o recurso de atualização atômica para aplicar mudanças a várias regras em uma única atualização. Atualizações de regra única podem causar comportamentos não intencionais, como erros, porque as regras antigas e novas podem se sobrepor por um curto período.
Para atualizar atomicamente várias regras, exporte a política de segurança atual para um arquivo JSON ou YAML e modifique-a. Use o arquivo modificado para criar uma política de segurança e troque a política de segurança dos serviços de back-end.
gcloud
Exporte a política para atualização, conforme o exemplo a seguir:
gcloud compute security-policies export my-policy \ --file-name my-file \ --file-format yamlA política exportada ficará parecida com o exemplo:
description: my description fingerprint: PWfLGDWQDLY= id: '123' name: my-policy rules: - action: deny(404) description: my-rule-1 match: expr: expression: evaluatePreconfiguredWaf('xss-stable') versionedExpr: SRC_IPS_V1 preview: false priority: 1 - action: allow description: my-rule-2 match: config: srcIpRanges: - '1.2.3.4' versionedExpr: SRC_IPS_V1 preview: false priority: 2 - action: deny description: default rule kind: compute#securityPolicyRule match: config: srcIpRanges: - '*' versionedExpr: SRC_IPS_V1 preview: false priority: 2147483647 selfLink: https://www.googleapis.com/compute/v1/projects/my-project/global/securityPolicies/my-policyUse um editor de texto para modificar a política. Por exemplo, você pode mudar as prioridades das regras atuais e adicionar uma regra:
description: my description fingerprint: PWfLGDWQDLY= id: '123' name: my-policy rules: - action: deny(404) description: my-rule-1 match: expr: expression: evaluatePreconfiguredWaf('xss-stable') versionedExpr: SRC_IPS_V1 preview: false priority: 1 - action: allow description: my-new-rule match: config: srcIpRanges: - '1.2.3.1' versionedExpr: SRC_IPS_V1 preview: false priority: 10 - action: allow description: my-rule-2 match: config: srcIpRanges: - '1.2.3.4' versionedExpr: SRC_IPS_V1 preview: false priority: 11 - action: deny description: default rule kind: compute#securityPolicyRule match: config: srcIpRanges: - '*' versionedExpr: SRC_IPS_V1 preview: false priority: 2147483647 selfLink: https://www.googleapis.com/compute/v1/projects/my-project/global/securityPolicies/my-policyCrie uma nova política de segurança do Cloud Armor e especifique o nome e o formato modificados do arquivo, conforme o exemplo a seguir:
gcloud compute security-policies create new-policy \ --file-name modified-policy \ --file-format yamlRemova a política de segurança antiga do serviço de back-end relevante, conforme o exemplo a seguir:
gcloud compute backend-services update my-backend \ --security-policy ""Adicione a nova política de segurança ao serviço de back-end, conforme o exemplo a seguir:
gcloud compute backend-services update my-backend \ --security-policy new-policySe a política antiga não for usada, exclua-a:
gcloud compute security-policies delete my-policy
Excluir regras de uma política de segurança
Siga as etapas nesta seção para excluir regras de uma política de segurança do Cloud Armor.
Console
No console do Cloud de Confiance , acesse a página Políticas do Cloud Armor.
Clique no nome da política de segurança para abrir a página Detalhes da política.
No meio da página, na guia Regras, marque a caixa de seleção ao lado da regra a ser excluída.
Clique em Excluir.
gcloud
Use o comando a seguir para remover uma regra. É possível modificar somente uma política de segurança por vez, mas excluir várias regras de uma só vez:
gcloud compute security-policies rules delete PRIORITY [...] [
--security-policy POLICY_NAME \
]
Exemplo:
gcloud compute security-policies rules delete 1000 \
--security-policy my-policy
Anexar e remover políticas de segurança
As seções a seguir descrevem como anexar e remover políticas de segurança.
Anexar uma política de segurança a um serviço de back-end
Siga as etapas nesta seção para anexar uma política de segurança do Cloud Armor a um serviço de back-end. É possível anexar uma política de segurança a vários serviços de back-end, mas um serviço de back-end pode ter apenas um de cada tipo de política de segurança anexado a ele.
Console
No console do Cloud de Confiance , acesse a página Políticas do Cloud Armor.
Clique no nome da política de segurança para abrir a página Detalhes da política.
No meio da página, clique na guia Destinos.
Clique em Aplicar política ao novo destino.
Clique em Adicionar destino.
Na lista Destino, selecione uma opção e clique em Adicionar.
gcloud
Ao anexar uma política de segurança de back-end a um serviço de back-end, use o
comando gcloud compute backend-services e a sinalização --security-policy:
gcloud compute backend-services update my-backend \
--security-policy my-policy
Ao anexar uma política de segurança de borda a um serviço de back-end, use o
comando gcloud compute backend-services e a flag --edge-security-policy:
gcloud compute backend-services update my-backend \
--edge-security-policy my-policy
Remover uma política de segurança de um serviço de back-end
Siga as etapas nesta seção para remover uma política de segurança do Cloud Armor de um serviço de back-end.
Console
No console do Cloud de Confiance , acesse a página Políticas do Cloud Armor.
Clique no nome da política de segurança para abrir a página Detalhes da política.
No meio da página, clique na guia Destinos.
Selecione o serviço de back-end de destino do qual você quer remover a política.
Clique em Remover.
Na mensagem Remover destino, clique em Remover.
gcloud
Ao remover uma política de segurança de back-end, use o comando gcloud compute
backend-services e a flag --security-policy:
gcloud compute backend-services update my-backend \
--security-policy ""
Ao remover uma política de segurança de borda, use o comando gcloud compute
backend-services e a flag --edge-security-policy:
gcloud compute backend-services update my-backend \
--edge-security-policy ""