Gerenciar políticas de segurança do Cloud Armor

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

  1. No console do Cloud de Confiance , acesse a página Políticas do Cloud Armor.

    Acessar as políticas do Cloud Armor

  2. 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

  1. No console do Cloud de Confiance , acesse a página Políticas do Cloud Armor.

    Acessar as políticas do Cloud Armor

  2. 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:

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

  1. No console do Cloud de Confiance , acesse a página Políticas do Cloud Armor.

    Acessar as políticas do Cloud Armor

  2. Marque a caixa de seleção ao lado da política que você quer excluir.

  3. 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

  1. No console do Cloud de Confiance , acesse a página Políticas do Cloud Armor.

    Acessar as políticas do Cloud Armor

  2. 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

  1. No console do Cloud de Confiance , acesse a página Políticas do Cloud Armor.

    Acessar as políticas do Cloud Armor

  2. Clique no nome da política de segurança para abrir a página Detalhes da política.

  3. No meio da página, clique na guia Regras.

  4. Clique em Adicionar regra.

  5. Opcional: digite uma descrição para o caso.

  6. 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.
  7. 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:

    • A expressão a seguir corresponde a solicitações do endereço IP 1.2.3.4 que contêm a string example no cabeçalho User-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 AU que 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-id contiver 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')
        

  8. Na lista Ação, selecione Permitir ou Negar.

  9. Se você estiver configurando uma regra de negação, selecione uma mensagem Status negado.

  10. Para ativar o modo de visualização da regra, selecione Ativar.

  11. No campo Prioridade, digite um número inteiro positivo.

  12. 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

  1. No console do Cloud de Confiance , acesse a página Políticas do Cloud Armor.

    Acessar as políticas do Cloud Armor

  2. Clique no nome da política de segurança para abrir a página Detalhes da política.

  3. No meio da página, clique na guia Regras.

  4. Ao lado da regra que você quer atualizar, clique em Editar. A página Editar regra é exibida.

  5. 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 AND e OR. O criador de consultas aceita agrupamento e aninhamento de até cinco expressões.
  • Transformações de string: para atributos baseados em string (como request.path ou request.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

  1. 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 yaml
    

    A 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-policy
    
  2. Use 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-policy
    
  3. Crie 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 yaml
    
  4. Remova 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 ""
    
  5. 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-policy
    
  6. Se 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

  1. No console do Cloud de Confiance , acesse a página Políticas do Cloud Armor.

    Acessar as políticas do Cloud Armor

  2. Clique no nome da política de segurança para abrir a página Detalhes da política.

  3. No meio da página, na guia Regras, marque a caixa de seleção ao lado da regra a ser excluída.

  4. 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

  1. No console do Cloud de Confiance , acesse a página Políticas do Cloud Armor.

    Acessar as políticas do Cloud Armor

  2. Clique no nome da política de segurança para abrir a página Detalhes da política.

  3. No meio da página, clique na guia Destinos.

  4. Clique em Aplicar política ao novo destino.

  5. Clique em Adicionar destino.

  6. 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

  1. No console do Cloud de Confiance , acesse a página Políticas do Cloud Armor.

    Acessar as políticas do Cloud Armor

  2. Clique no nome da política de segurança para abrir a página Detalhes da política.

  3. No meio da página, clique na guia Destinos.

  4. Selecione o serviço de back-end de destino do qual você quer remover a política.

  5. Clique em Remover.

  6. 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 ""