Exemplos de políticas de segurança

Nesta página, descrevemos exemplos de configurações de política de segurança para diferentes tipos de balanceadores de carga e políticas de segurança.

Configurar políticas de segurança para balanceadores de carga de aplicativo externos

Veja a seguir as etapas gerais para configurar políticas de segurança do Google Cloud Armor e ativar regras que permitem ou negam tráfego para o balanceador de carga de aplicativo externo ou clássico:

  1. Crie uma política de segurança do Google Cloud Armor.
  2. Adicione regras à política de segurança com base em listas de endereços IP, expressões personalizadas ou conjuntos pré-configurados de expressões.
  3. Anexe a política de segurança a um serviço de back-end do balanceador de carga de aplicativo externo global ou do balanceador de carga clássico do aplicativo em que você quer controlar o acesso.
  4. Atualize a política de segurança conforme necessário.

No exemplo a seguir, crie duas políticas de segurança do Google Cloud Armor e aplique-as a diferentes serviços de back-end.

Exemplo em que duas políticas de segurança são aplicadas a diferentes serviços de back-end.
Exemplo em que duas políticas de segurança são aplicadas a diferentes serviços de back-end (clique para ampliar).

No exemplo, estas são as políticas de segurança do Google Cloud Armor:

  • mobile-clients-policy se aplica a usuários externos dos serviços games.
  • internal-users-policy se aplica à equipe test-network da sua organização.

Aplique mobile-clients-policy ao serviço games, cujo serviço de back-end é chamado games, e aplique internal-users-policy ao serviço test interno da equipe de teste, cujo serviço de back-end correspondente é chamado test-network.

Se as instâncias de back-end de um serviço de back-end estiverem em várias regiões, a política de segurança do Google Cloud Armor associada ao serviço será aplicável às instâncias em todas as regiões. No exemplo anterior, a política de segurança mobile-clients-policy é aplicável às instâncias 1, 2, 3 e 4 em us-central e às instâncias 5 e 6 em us-east.

Criar o exemplo

Use estas instruções para criar o exemplo de configuração discutido na seção anterior.

Console

Configure a política de segurança para usuários externos:

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

    Acessar as políticas do Google Cloud Armor

  2. Clique em Criar políticas.

  3. No campo Nome, use mobile-clients-policy.

  4. No campo Descrição, use Policy for external users.

  5. Em Ação de regra padrão, selecione Negar.

  6. Em Status negado, selecione 404 (não encontrado).

  7. Clique em Próxima etapa.

Adicione mais regras:

  1. Clique em Adicionar regra.
  2. No campo Descrição, use allow traffic from 192.0.2.0/24.
  3. Em Modo, selecione Modo básico (somente intervalos/endereços IP).
  4. No campo Correspondência, insira 192.0.2.0/24.
  5. Em Ação, selecione Permitir.
  6. No campo Prioridade, digite 1000.
  7. Clique em Concluído.
  8. Clique em Próxima etapa.

Aplicar a política nos destinos:

  1. Clique em Adicionar destino.
  2. Na lista Destino, selecione uma opção.
  3. Clique em Concluído.
  4. Clique em Criar política.

Como opção, ativar a Proteção adaptável do Google Cloud Armor

  1. Para ativar a Proteção adaptativa, marque a caixa de seleção Ativar.

Configure a política de segurança para usuários internos:

  1. Clique em Criar políticas.
  2. No campo Nome, use internal-users-policy.
  3. No campo Descrição, use Policy for internal test users.
  4. Em Ação de regra padrão, selecione Negar.
  5. Em Status negado, selecione 502 (gateway incorreto).
  6. Clique em Próxima etapa.

Adicione mais regras:

  1. Clique em Adicionar regra.
  2. No campo Descrição, use allow traffic from 198.51.100.0/24.
  3. Em Modo, selecione Modo básico (somente intervalos/endereços IP).
  4. No campo Correspondência, insira 198.51.100.0/24.
  5. Em Ação, selecione Permitir.
  6. Em Apenas visualização, marque a caixa de seleção Ativar.
  7. No campo Prioridade, digite 1000.
  8. Clique em Concluído.
  9. Clique em Próxima etapa.

Aplicar a política nos destinos:

  1. Clique em Adicionar destino.
  2. Na lista Destino, selecione uma opção.
  3. Clique em Concluído.
  4. Clique em Criar política.

gcloud

  1. Crie as políticas de segurança do Google Cloud Armor:

    gcloud compute security-policies create mobile-clients-policy \
        --description "policy for external users"
    
    gcloud compute security-policies create internal-users-policy \
        --description "policy for internal test users"
    
  2. Atualize as regras padrão das políticas de segurança para negar tráfego:

    gcloud compute security-policies rules update 2147483647 \
        --security-policy mobile-clients-policy \
        --action "deny-404"
    
    gcloud compute security-policies rules update 2147483647 \
        --security-policy internal-users-policy \
        --action "deny-502"
    
  3. Adicione regras às políticas de segurança:

    gcloud compute security-policies rules create 1000 \
        --security-policy mobile-clients-policy \
        --description "allow traffic from 192.0.2.0/24" \
        --src-ip-ranges "192.0.2.0/24" \
        --action "allow"
    
    gcloud compute security-policies rules create 1000 \
        --security-policy internal-users-policy \
        --description "allow traffic from 198.51.100.0/24" \
        --src-ip-ranges "198.51.100.0/24" \
        --action "allow"
    
  4. Anexe as políticas de segurança aos serviços de back-end:

    gcloud compute backend-services update games \
        --security-policy mobile-clients-policy
    
    gcloud compute backend-services update test-network \
        --security-policy internal-users-policy
    
  5. Como opção, ative a Proteção adaptativa:

    gcloud compute security-policies update mobile-clients-policy \
        --enable-layer7-ddos-defense
    
    gcloud compute security-policies update internal-users-policy \
        --enable-layer7-ddos-defense
    

Criar políticas de segurança

Use o console do Google Cloud ou a CLI gcloud para criar políticas de segurança. Nas instruções desta seção, pressupomos que você esteja configurando políticas de segurança para serem aplicadas a um balanceador de carga de aplicativo externo global ou a um balanceador de carga de aplicativo clássico e a um serviço de back-end. Para ver um exemplo de como preencher os campos, consulte Como criar o exemplo.

Console

Crie políticas e regras de segurança do Google Cloud Armor e anexe uma política de segurança a um serviço de back-end:

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

    Acessar as políticas do Google Cloud Armor

  2. Clique em Criar políticas.

  3. No campo Nome, digite o nome da política.

  4. Opcional: insira uma descrição da política.

  5. Em Tipo de política, escolha Política de segurança de back-end ou Política de segurança de borda.

  6. Por Ação de regra padrão , selecione Permitir para uma regra padrão que permite acesso ou selecione Negar para uma regra padrão que proíbe o acesso a um endereço IP ou intervalo de endereços IP.

    A regra padrão é a de menor prioridade que entra em vigor somente se nenhuma outra regra se aplicar.

  7. Se você estiver configurando uma regra de negação, selecione uma mensagem Status negado. Esta é a mensagem de erro que o Google Cloud Armor exibe se um usuário sem acesso tentar consegui-lo.

  8. Independentemente do tipo de regra que você está configurando, clique em Próxima etapa.

Adicione mais regras:

  1. Clique em Adicionar regra.
  2. Opcional: insira uma descrição para a regra.
  3. Selecione o modo:

    • Modo básico: permita ou negue o tráfego com base em endereços IP ou intervalos de IP.
    • Modo avançado: permite ou nega tráfego com base em expressões de regra.
  4. No campo Correspondência, especifique as condições sob as quais a regra se aplica:

    • Modo básico: digite os endereços IP ou os intervalos de IP que serão correspondentes na regra.
    • Modo avançado: insira uma expressão ou subexpressões a serem avaliadas em relação às solicitações recebidas. Para informações sobre como escrever as expressões, consulte Configurar atributos de linguagem de regras personalizadas.
  5. Em Ação, selecione Permitir ou Negar para permitir ou negar o tráfego, se a regra corresponder.

  6. Para ativar o modo de visualização, marque a caixa de seleção Ativar. No modo de visualização, é possível ver como a regra se comporta, mas ela não está ativada.

  7. Digite a Prioridade da regra. Pode ser qualquer número inteiro positivo entre 0 e 2.147.483.646, inclusive. Para mais informações sobre a ordem de avaliação, consulte Ordem de avaliação da regra.

  8. Clique em Concluído.

  9. Para adicionar mais regras, clique em Adicionar regra e repita as etapas anteriores. Caso contrário, clique em Próxima etapa.

Aplicar a política nos destinos:

  1. Clique em Adicionar destino.
  2. Na lista Destino, selecione uma opção.
  3. Para adicionar mais destinos, clique em Adicionar destino.
  4. Clique em Concluído.
  5. Clique em Criar política.

gcloud

  1. Para criar uma nova política de segurança do Google Cloud Armor, use o comando gcloud compute security-policies create.

    No campo type, use CLOUD_ARMOR para criar uma política de segurança de back-end ou CLOUD_ARMOR_EDGE para criar uma política de segurança de borda. A sinalização type é opcional. Se nenhum tipo for especificado, uma política de segurança de back-end será criada por padrão:

    gcloud compute security-policies create NAME \
       [--type=CLOUD_ARMOR|CLOUD_ARMOR_EDGE] \
       [--file-format=FILE_FORMAT | --description=DESCRIPTION] \
       [--file-name=FILE_NAME]
    
    

    Substitua:

    • NAME: o nome da política de segurança
    • DESCRIPTION: a descrição da política de segurança

    O comando a seguir atualiza uma política que você criou anteriormente, ativa a análise JSON e altera o nível do registro para VERBOSE:

    gcloud compute security-policies update my-policy \
        --json-parsing=STANDARD \
        --log-level=VERBOSE
    
  2. Para adicionar regras a uma política de segurança, use o comando gcloud compute security-policies rules create PRIORITY.

    gcloud compute security-policies rules create PRIORITY  \
        [--security-policy POLICY_NAME] \
        [--description DESCRIPTION] \
        --src-ip-ranges IP_RANGE,... | --expression EXPRESSION \
        --action=[ allow | deny-403 | deny-404 | deny-502 ] \
        [--preview]
    

    Substitua PRIORITY pela prioridade atribuída à regra na política. Para mais informações sobre como a prioridade da regra funciona, consulte Ordem de avaliação da regra.

    Por exemplo, o comando a seguir adiciona uma regra para bloquear o tráfego dos intervalos de endereços IP 192.0.2.0/24 e 198.51.100.0/24. A regra tem prioridade 1.000 e faz parte de uma política chamada my-policy.

    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"
    

    Com o sinalizador --preview adicionado, a regra é adicionada à política, mas não é aplicada e qualquer tráfego que acione a regra será apenas registrado.

    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" \
        --preview
    

    Use a sinalização --expression para especificar uma condição personalizada. Para mais informações, consulte Configurar atributos de idioma de regras personalizadas. O comando a seguir adiciona uma regra para permitir o tráfego do endereço IP 1.2.3.4 e contém a string example no cabeçalho do 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('cookie_name=cookie_value')" \
        --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 que não estã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('/bad_path/')" \
        --action "deny-403" \
        --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 "evaluatePreconfiguredExpr('sqli-stable')" \
        --action "deny-403"
    

    O comando a seguir adiciona uma regra que usa uma expressão pré-configurada para permitir o acesso de todos os endereços IP em uma lista de endereços IP nomeada:

    gcloud compute security-policies rules create 1000 \
        --security-policy my-policy \
        --expression "evaluatePreconfiguredExpr('sourceiplist-fastly')" \
        --action "allow"
    

Configurar políticas de segurança para balanceadores de carga de aplicativos externos regionais

Esta seção contém informações sobre como configurar políticas de segurança do Google Cloud Armor com escopo regional para balanceadores de carga de aplicativo externos regionais.

Proteger cargas de trabalho com balanceamento de carga regional

Use as etapas a seguir para configurar uma política de segurança a fim de proteger o serviço de back-end com escopo regional:

  1. Crie uma política de segurança com escopo regional.

    gcloud compute security-policies create POLICY_NAME \
       --type=CLOUD_ARMOR \
       --region=REGION
    
  2. Anexe a política de segurança com escopo regional a um serviço de back-end com escopo regional. Substitua BACKEND_NAME pelo nome do serviço de back-end com escopo regional.

    gcloud compute backend-services update BACKEND_NAME \
       --security-policy=POLICY_NAME \
       --region=REGION
    

Aplicar uma política de segurança do Google Cloud Armor com escopo regional

Considere um exemplo em que você é um administrador de segurança e quer atender a um requisito de residência de que todas as cargas de trabalho de back-end e regras do WAF sejam implantadas em uma região específica. Suponha que você já tenha feito o seguinte:

  1. Você criou serviços de back-end com balanceamento de carga com escopo regional na região.
  2. Você desativou todas as políticas de segurança com escopo global na sua implantação.
  3. Você criou e anexou uma política de segurança com escopo regional na mesma região (como na seção anterior).

É possível adicionar regras WAF e outras regras avançadas à política enquanto atende ao requisito usando os seguintes comandos de exemplo:

  • Adicione uma regra WAF à política:

    gcloud compute security-policies rules create 1000 --action=deny-404 \
      --expression="evaluatePreconfiguredExpr('xss-v33-stable', ['owasp-crs-v030301-id941100-xss', 'owasp-crs-v030301-id941160-xss'])" \
      --security-policy=POLICY_NAME \
      --region=REGION
    
  • Adicione uma regra avançada à política:

    gcloud compute security-policies rules create 1000 --action=allow \
      --expression="has(request.headers['cookie']) && request.headers['cookie'].contains('80=EXAMPLE')" \
      --security-policy=POLICY_NAME \
      --region=REGION
    
  • Adicione uma regra de limitação de taxa à política:

    gcloud compute security-policies rules create 1000 --action=throttle \
      --src-ip-ranges="1.1.1.1/32" \
      --rate-limit-threshold-count=1000 \
      --rate-limit-threshold-interval-sec=120 \
      --conform-action="allow" \
      --exceed-action="deny-429" \
      --enforce-on-key=IP \
      --ban-duration-sec=999 \
      --ban-threshold-count=5000 \
      --ban-threshold-interval-sec=60 \
      --security-policy=POLICY_NAME \
      --region=REGION
    

A seguir