Cloud Intelligence™Cloud Intelligence™

Cloud Intelligence™

Como identificar regras de firewall órfãs no Google Cloud

By Ami MahloofJun 25, 20193 min read

Esta página também está disponível em English, Deutsch, Español, Français, Italiano e 日本語.

1 ypmxzr3hay0 4kvzxka5eq

Em ambientes grandes no Google Cloud com VPC compartilhada, é fácil perder o controle das regras de firewall que se aplicam ao seu ambiente. Veja como resolvi o problema das regras de firewall órfãs.

1 ypmxzr3hay0 4kvzxka5eqImagem cedida pela Information Age

Em geral, é mais prático gerenciar toda a configuração de firewall a partir de um projeto Host com VPCs compartilhadas.

Hoje não existe um jeito simples de listar as regras que não estão aplicadas a nenhuma instância da rede. Quando você bate no limite de regras de firewall, precisa achar todas essas regras órfãs ou em desuso para fazer a limpeza.

A ferramenta gcp-discover-orphaned-firewall-rules ajuda você a identificar essas regras de firewall órfãs.

Como funciona:

A ferramenta recebe o project-id do host e localiza todos os projetos com VPC compartilhada vinculados a ele. Depois, busca todas as regras de firewall (apenas do tipo ingress) do projeto host e monta uma nova lista da qual as regras ativas serão eliminadas.

Para cada projeto (inclusive o host), a ferramenta descobre as instâncias de VM e procura network tags e service accounts que batam com as target tags das regras de firewall. Quando há correspondência, a regra é retirada da lista de eliminação, e a lista segue para o próximo projeto até concluir todas as iterações — sobrando, ao final, apenas as regras de firewall órfãs.

A lista é exibida na tela em formato de tabela e também salva em um arquivo CSV.

Essa ferramenta não apaga nenhuma regra de firewall: você precisa fazer isso manualmente ou usar o arquivo CSV em um script próprio para excluir as regras.

Como instalar:

baixe o binário ou clone o repositório

git clone [email protected]:doitintl/gcp-discover-orphaned-firewall-rules.git
cd gcp-discover-orphaned-firewall-rules
go mod download
go run main.go

Autenticação no Google Cloud

Este projeto usa o Google Application Default Credentials (ADC).

Você pode rodar o comando a seguir para fazer login pelo terminal com sua configuração padrão do gcloud:

gcloud auth application-default login

Ou usar uma service account por meio da seguinte variável de ambiente:

export GOOGLE_APPLICATION_CREDENTIALS="/path/to/[FILE_NAME].json"

Como executar

Flags disponíveis:

--debug Define o nível de log
--host string Host Project ID <Obrigatório>
--running Filtra apenas instâncias de VM em execução
./discover-orphaned-rules-darwin-amd64 --host=host-project-123ewquiyt
INFO[2019-06-12T12:57:54+03:00] creating a new Compute API client
INFO[2019-06-12T12:57:54+03:00] host project: host-project-123ewquiyt
INFO[2019-06-12T12:57:56+03:00] firewall Rules for host project: host-project-123ewquiyt
INFO[0001] listing only TargetTags rules...
INFO[0001] number of TargetTags Rules: 3
INFO[2019-06-12T12:57:56+03:00] child project: deleted-project-1268522
WARN[0001] error listing VM instances googleapi: Error 404: Failed to find project deleted-project-1268522, notFound
WARN[2019-06-12T12:57:56+03:00] Could not check project deleted-project-1268522 for orphaned rules: googleapi: Error 404: Failed to find project deleted-project-1268522, notFound
INFO[2019-06-12T12:57:56+03:00] child project: resource-project-12iuyt2854
INFO[0001] making a list of orphaned rules with all rules (active rules will be removed from it)
resource-project-12iuyt2854, ghostresource-project-12iuyt2854, instance-target-demo-ruleresource-project-12iuyt2854, real-ruleINFO[0001] looking for orphaned rules in project..
INFO[0001] remove active rule from orphans list: instance-target-demo-rule
INFO[0001] 2 potential orphaned firewall rules to evalute...
INFO[2019-06-12T12:57:56+03:00] child project: resource-2-23ouyrwe9
INFO[0002] making a list of orphaned rules with all rules (active rules will be removed from it)
resource-2-23ouyrwe9, ghostami-resource-2-23ouyrwe9, instance-target-demo-ruleami-resource-2-23ouyrwe9, real-ruleINFO[0002] looking for orphaned rules in project..
INFO[0002] remove active rule from orphans list: instance-target-demo-rule
INFO[0002] 2 potential orphaned firewall rules to evalute...
INFO[2019-06-12T12:57:57+03:00] generating CSV file for orphaned rules...
INFO[0002] creating a new CSV file: orphaned-rules.csv
INFO[2019-06-12T12:57:57+03:00] done!

Isso também gera um arquivo CSV:

rule-name,rule-tags
ghost,dead
real-rule,"real-1,real2,real-3"

Quer ler mais conteúdos como este? Acesse nosso blog ou siga o Ami no Twitter.