
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.
Imagem 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.gitcd gcp-discover-orphaned-firewall-rulesgo mod downloadgo run main.goAutenticaçã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 loginOu 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 clientINFO[2019-06-12T12:57:54+03:00] host project: host-project-123ewquiytINFO[2019-06-12T12:57:56+03:00] firewall Rules for host project: host-project-123ewquiytINFO[0001] listing only TargetTags rules...INFO[0001] number of TargetTags Rules: 3INFO[2019-06-12T12:57:56+03:00] child project: deleted-project-1268522WARN[0001] error listing VM instances googleapi: Error 404: Failed to find project deleted-project-1268522, notFoundWARN[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, notFoundINFO[2019-06-12T12:57:56+03:00] child project: resource-project-12iuyt2854INFO[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-ruleINFO[0001] 2 potential orphaned firewall rules to evalute...INFO[2019-06-12T12:57:56+03:00] child project: resource-2-23ouyrwe9INFO[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-ruleINFO[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.csvINFO[2019-06-12T12:57:57+03:00] done!Isso também gera um arquivo CSV:
rule-name,rule-tagsghost,deadreal-rule,"real-1,real2,real-3"Quer ler mais conteúdos como este? Acesse nosso blog ou siga o Ami no Twitter.