Usar regras de firewall da VPC

Nesta página, descrevemos os comandos para trabalhar com regras de firewall da nuvem privada virtual (VPC) e oferecemos alguns exemplos de como usá-las. Com as regras de firewall da VPC, é possível permitir ou negar o tráfego de/para instâncias de máquina virtual (VM) em uma rede VPC com base em número de porta, tag ou protocolo.

Antes de começar

Para saber mais sobre regras de firewall, como regras implícitas e regras geradas pelo sistema para redes padrão, consulte Regras de firewall da VPC.

Antes de configurar as regras de firewall, revise os componentes da regra de firewall para se familiarizar com os componentes de firewall usados em Google Cloud.

Criar regras de firewall da VPC

As regras de firewall são identificadas no nível da rede e se aplicam apenas à rede em que são criadas. No entanto, o nome escolhido para cada uma precisa ser único no projeto.

Uma regra de firewall pode conter intervalos IPv4 ou IPv6, mas não ambos.

Quando você cria uma regra de firewall, é possível optar por ativar a geração de registros das regras de firewall. Se você ativar a geração de registros, poderá omitir os campos de metadados para economizar custos de armazenamento. Para mais informações, consulte Usar o registro de regras de firewall da VPC.

Se você quiser especificar várias contas de serviço para o campo de conta de serviço de origem ou destino, use a Google Cloud CLI, a API ou as bibliotecas de cliente.

A rede padrão fornece regras de firewall automáticas no momento da criação. As redes personalizadas e de modo automático permitem que você crie facilmente firewalls semelhantes durante a criação da rede, caso esteja usando o console Google Cloud . Se você estiver usando a CLI gcloud ou a API e quiser criar regras de firewall semelhantes às fornecidas pela rede padrão, consulte Configurar regras de firewall para casos de uso comuns.

Console

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

    Acesse as políticas de firewall

  2. Clique em Criar regra de firewall.

  3. Insira um Nome para a regra de firewall.

    O nome precisa ser exclusivo no projeto.

  4. (Opcional) É possível ativar o registro de regras de firewall:

    • Clique em Registros > Ativado.
    • Para omitir metadados, clique em Mostrar detalhes de registros e desmarque a caixa de seleção Incluir metadados.
  5. Especifique a Rede da regra de firewall.

  6. Especifique a Prioridade da regra.

    Quanto menor o número, mais alta a prioridade.

  7. Em Direção do tráfego, escolha entrada ou saída.

  8. Em Ação se houver correspondência, escolha permitir ou negar.

  9. Especifique os Destinos da regra.

    • Se você quiser que a regra se aplique a todas as instâncias na rede, escolha All instances in the network.
    • Se você quiser que a regra se aplique a determinadas instâncias por tags de rede (destino), escolha Tags de destino especificadas e, no campo Tags de destino, digite as tags às quais a regra deve ser aplicada.
    • Para que a regra se aplique a determinadas instâncias por conta de serviço associada, escolha Conta de serviço especificada, indique se a conta de serviço está no projeto atual ou em outro em Escopo da conta de serviço e, no campo Conta de serviço de destino, escolha ou digite o nome da conta de serviço.
  10. Para uma regra de entrada, especifique o Filtro de origem.

    • Para filtrar o tráfego de entrada por intervalos de IPv4 de origem, selecione Intervalos IPv4 e insira os blocos CIDR no campo Intervalos IPv4 de origem. Use 0.0.0.0/0 para qualquer origem IPv4.
    • Para filtrar o tráfego de entrada por intervalos IPv6 de origem, selecione Intervalos IPv6 e insira os blocos CIDR no campo Intervalos IPv6 de origem. Use ::/0 para qualquer origem IPv6.
    • Para filtrar o tráfego de entrada por tag de rede, escolha Tags de origem e digite as tags de rede no campo Tags de origem. Para ver o limite do número de tags de origem, consulte Limites por rede. A filtragem por tag de origem só estará disponível se o destino não for especificado pela conta de serviço.
    • Para filtrar o tráfego de entrada por conta de serviço, selecione Conta de serviço, indique se a conta está no projeto atual ou em outro em Escopo da conta de serviço e escolha ou digite o nome da conta no campo Conta de serviço de origem. A filtragem por conta de serviço de origem só estará disponível se o destino não for especificado pela tag de rede.
    • Especifique um Segundo filtro de origem, se quiser. Os filtros de origem secundários não podem usar os mesmos critérios de filtro que o principal. Os intervalos de IP de origem podem ser usados com tags de origem ou conta de serviço de origem. O conjunto de origens efetivas é a união dos endereços IP do intervalo de origem e as instâncias identificadas pelas tags de rede ou contas de serviço. Ou seja, se o intervalo de IP de origem ou as tags de origem (ou contas de serviço de origem) corresponderem aos critérios do filtro, a origem será incluída no conjunto de origem efetivo.
    • As tags de origem e a conta de serviço de origem não podem ser usadas em conjunto.

    Para mais informações sobre como usar uma conta de serviço e uma tag de rede, consulte filtragem por conta de serviço versus tag de rede.

  11. Para uma regra de entrada, especifique o Filtro de destino:

    • Para filtrar o tráfego de entrada por intervalos IPv4 de destino, selecione Intervalos IPv4 e insira os blocos CIDR no campo Intervalos IPv4 de destino. Use 0.0.0.0/0 para qualquer destino IPv4.
    • Para filtrar o tráfego de entrada por intervalos IPv6 de destino, selecione Intervalos IPv6 e insira os blocos CIDR no campo Intervalos IPv6 de destino. Use ::/0 para qualquer destino IPv6.

    Para mais informações, consulte Destino das regras de entrada.

  12. Para uma regra de saída, especifique o Filtro de destino.

    • Para filtrar o tráfego de saída por intervalos IPv4 de destino, selecione Intervalos IPv4 e insira os blocos CIDR no campo Intervalos IPv4 de destino. Use 0.0.0.0/0 para qualquer destino IPv4.
    • Para filtrar o tráfego de saída por intervalos IPv6 de destino, selecione Intervalos IPv6 e insira os blocos CIDR no campo Intervalos IPv6 de destino. Use ::/0 para qualquer destino IPv6.

    Para mais informações, consulte Destino das regras de saída.

  13. Para uma regra de saída, especifique o Filtro de origem:

    • Para filtrar o tráfego de saída por intervalos de IPv4 de origem, selecione Intervalos IPv4 e insira os blocos CIDR no campo Intervalos IPv4 de origem. Use 0.0.0.0/0 para qualquer origem IPv4.
    • Para filtrar o tráfego de saída por intervalos IPv6 de origem, selecione Intervalos IPv6 e insira os blocos CIDR no campo Intervalos IPv6 de origem. Use ::/0 para qualquer destino IPv6.

    Para mais informações, consulte Origem das regras de saída.

  14. Defina os Protocolos e portas a que a regra se aplica:

    • Para que a regra se aplique a todos os protocolos e portas, selecione Permitir tudo ou Negar tudo, dependendo da ação.
    • Para definir protocolos e portas de destino específicos, selecione Portas e protocolos especificados:
      • Selecione TCP para incluir o protocolo TCP e as portas. Digite all ou uma lista de portas de destino delimitadas por vírgulas, como 20-22, 80, 8080.
      • Selecione UDP para incluir o protocolo UDP e as portas. Digite all ou uma lista de portas de destino delimitadas por vírgulas, como 67-69, 123.
      • Selecione Outros para incluir protocolos como icmp, sctp ou um número de protocolo. Por exemplo, use icmp ou o número do protocolo 1 para ICMP IPv4. Use o número de protocolo 58 para IPv6 ICMP.

    Para mais informações, consulte protocolos e portas de destino.

  15. (Opcional) É possível criar a regra de firewall, mas não aplicá-la, definindo seu estado de aplicação como desativada. Clique em Desativar regra e selecione Desativada.

  16. Clique em Criar.

gcloud

Para criar uma regra de firewall da VPC, use o comando gcloud compute firewall-rules create:

gcloud compute firewall-rules create RULE_NAME \
    [--network NETWORK; default="default"] \
    [--priority PRIORITY;default=1000] \
    [--direction (ingress|egress|in|out); default="ingress"] \
    [--action (deny | allow )] \
    [--target-tags TAG[,TAG,...]] \
    [--target-service-accounts=IAM_SERVICE_ACCOUNT[,IAM_SERVICE_ACCOUNT,...]] \
    [--source-ranges CIDR_RANGE[,CIDR_RANGE,...]] \
    [--source-tags TAG[,TAG, ...]] \
    [--source-service-accounts=IAM_SERVICE_ACCOUNT[,IAM_SERVICE_ACCOUNT,...]] \
    [--destination-ranges CIDR_RANGE[,CIDR_RANGE,...]] \
    [--rules (PROTOCOL[:PORT[-PORT]],[PROTOCOL[:PORT[-PORT]],...]] | all ) \
    [--disabled | --no-disabled] \
    [--enable-logging | --no-enable-logging] \
    [--logging-metadata LOGGING_METADATA]

Use os parâmetros da seguinte maneira. Mais detalhes sobre cada um estão disponíveis na documentação de referência do SDK.

  • --network A rede da regra. Se omitida, a regra será criada na rede default. Se você não tiver uma rede padrão ou quiser criar a regra em uma rede específica, use este campo.
  • --priority Um valor numérico que indica a prioridade da regra. Quanto menor o número, mais alta a prioridade.
  • --direction A direção do tráfego, que pode ser INGRESS ou EGRESS.
  • --action A ação na correspondência, que pode serallow ou deny. Precisa ser usado com a sinalização --rules.
  • Especifique um destino de uma das seguintes maneiras:
    • Omita --target-tags e --target-service-accounts se a regra se aplicar a todos os destinos na rede.
    • Use a sinalização --target-tags para definir destinos por tags de rede.
    • Use a sinalização --target-service-accounts para definir destinos por contas de serviço associadas.
  • Na regra de entrada, a fim de refinar ainda mais o destino, use --destination-ranges para especificar intervalos de endereços IPv4 ou IPv6 no formato CIDR. Se --destination-ranges for omitido, o destino de entrada será qualquer endereço IPv4, 0.0.0.0/0. Para mais informações, consulte Destinos das regras de entrada e Endereços IP e de destino das regras de entrada.

  • Para uma regra de entrada, especifique uma origem:

    • --source-ranges Use esta sinalização para especificar intervalos de endereços IPv4 ou IPv6 de origem no formato CIDR.
    • Se --source-ranges, source-tags e --source-service-accounts forem omitidos, a origem de entrada será qualquer endereço IPv4, 0.0.0.0/0.
    • --source-tags Use esta sinalização para especificar instâncias de origem por tags de rede. A filtragem por tag de origem só estará disponível se o destino não for especificado pela conta de serviço. Para mais informações, consulte Filtragem por conta de serviço versus tag de rede.
    • --source-ranges e --source-tags podem ser usadas juntas. Se ambos forem especificados, o conjunto de origens efetivas será a união dos endereços IP do intervalo de origem e as instâncias identificadas pelas tags de rede, mesmo se as instâncias marcadas tiverem IPs fora dos intervalos de origem.
    • --source-service-accounts Use este sinalizador para especificar instâncias pelas contas de serviço que elas usam. A filtragem por conta de serviço de origem só estará disponível se o destino não for especificado pela tag de rede. Para mais informações, consulte filtragem por conta de serviço versus tag de rede. --source-ranges e --source-service-accounts podem ser usadas juntas. Se ambos forem especificados, o conjunto de origem efetivo será a união dos endereços IP do intervalo de origem e as instâncias identificadas pelas contas de serviço de origem, mesmo que estas instâncias não tenham IPs nos intervalos de origem.
  • Na regra de saída, a fim de refinar ainda mais a origem, use --source-ranges para especificar intervalos de endereços IPv4 ou IPv6 no formato CIDR. Se --source-ranges for omitido, a origem de saída será qualquer endereço IPv4, 0.0.0.0/0. Para mais informações, consulte Origens das regras de saída e Endereços IP e de destino das regras de saída.

  • Para uma regra de saída, especifique um destino:

    • --destination-ranges Use esta sinalização para especificar intervalos de endereços IPv6 ou IPv6 de destino no formato CIDR.
    • Se --destination-ranges for omitido, o destino de saída será qualquer endereço IPv4, 0.0.0.0/0.
  • --rules Uma lista de protocolos e portas de destino a que a regra se aplica. Use all para tornar a regra aplicável a todos os protocolos e todas as portas. Requer a sinalização --action.

  • Por padrão, as regras de firewall são criadas e aplicadas automaticamente. No entanto, é possível alterar esse comportamento.

    • Se --disabled e --no-disabled forem omitidos, a regra de firewall será criada e aplicada.
    • --disabled Adicione este sinalizador para criar a regra de firewall, mas não para aplicá-la. Ela permanecerá desativada até que você atualize a regra de firewall para ativá-la.
    • --no-disabled Adicione esta sinalização para garantir que a regra de firewall seja aplicada.
  • --enable-logging | --no-enable-logging É possível ativar o registro de regras de firewall ao criar ou atualizar uma regra. A geração de registros de regras de firewall da VPC permite auditar, verificar e analisar os efeitos das suas regras de firewall. Consulte Geração de registros de regras de firewall da VPC para mais detalhes.

    • --logging-metadata Se você ativar a geração de registros, por padrão, a geração de registros de regras de firewall incluirá campos de base e metadados. É possível omitir campos de metadados para economizar custos de armazenamento. Para mais informações, consulte Como usar a geração de registros de regras de firewall da VPC.

Terraform

Para criar uma regra de firewall, use um recurso google_compute_firewall.

resource "google_compute_firewall" "rules" {
  name        = "my-firewall-rule"
  network     = "default"
  description = "Creates firewall rule targeting tagged instances"

  allow {
    protocol = "tcp"
    ports    = ["80", "443"]
  }

  source_ranges = ["0.0.0.0/0"]
  target_tags   = ["web"]
}

Para saber como aplicar ou remover uma configuração do Terraform, consulte Comandos básicos do Terraform.

API

Crie uma regra de firewall da VPC.

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/firewalls
{
  "name": "RULE_NAME",
  "network": "projects/PROJECT-ID/global/networks/NETWORK",
  ... other fields
}

Substitua:

  • PROJECT_ID: o ID do projeto em que a rede VPC está localizada.
  • NETWORK: o nome da rede VPC em que a regra de firewall foi criada.
  • RULE_NAME: o nome da regra de firewall.

  • Para uma regra de firewall de entrada, especifique a origem e o destino de entrada:

    • Use os campos sourceRanges, sourceTags ou sourceServiceAccounts para especificar a origem de entrada.

    • sourceRanges pode ser intervalos IPv4 ou IPv6, mas não uma combinação de ambos. Para usar o intervalo 0.0.0.0/0, não especifique nenhum campo.

    • Não é possível usar os campos sourceTags e sourceServiceAccounts juntos. No entanto, é possível usar sourceRanges com sourceTags ou sourceServiceAccounts. Se você fizer isso, a conexão precisará corresponder a um ou outro para que a regra de firewall seja aplicada.

    • Para os campos de destino, se você usar o campo sourceTags, não poderá usar o campo targetServiceAccounts. Você precisa usar o campo targetTags ou nenhum campo de destino. Da mesma forma, se você usar o campo sourceServiceAccounts, não poderá usar o campo targetTags. Se você não especificar um campo de destino, a regra será aplicada a todos os destinos na rede.

    • Use o campo destinationRanges para especificar o destino de entrada. destinationRanges pode ser um intervalo IPv4 ou IPv6, mas não uma combinação dos dois.
      Se você não especificar um destino, Google Cloud usará 0.0.0.0/0. Para mais informações, consulte Destinos das regras de entrada e Endereços IP e de destino das regras de entrada.

  • Para uma regra de firewall de saída, especifique a origem e o destino da saída:

    • Use o campo sourceRanges para especificar a origem da saída. sourceRange pode ser intervalos IPv4 ou IPv6, mas não uma combinação de ambos.
      Se você não especificar uma origem,o Google Cloud vai usar 0.0.0.0/0. Para mais informações, consulte Origens das regras de saída e Endereços IP e de destino das regras de saída.

    • Use o campo destinationRanges para especificar o destino. destinationRanges pode ser intervalos IPv4 ou IPv6, mas não uma combinação de ambos.
      Se você não especificar um destino,o Google Cloud usará 0.0.0.0/0. Use o campo targetTags ou targetServiceAccounts para especificar a quais destinos a regra se aplica. Se você não especificar um campo de destino, a regra será aplicada a todos os destinos na rede.

Para mais informações e descrições de cada campo, consulte o método firewalls.insert.

C#


using Google.Cloud.Compute.V1;
using System.Threading.Tasks;

public class CreateFirewallRuleAsyncSample
{
    public async Task CreateFirewallRuleAsync(
        // TODO(developer): Set your own default values for these parameters or pass different values when calling this method.
        string projectId = "your-project-id",
        string firewallRuleName = "my-test-firewall-rule",
        // Name of the network the rule will be applied to. Some available name formats:
        // projects/{project_id}/global/networks/{network}
        // global/networks/{network}
        string networkName = "global/networks/default")
    {