Automação de segurança com Python: scripts que poupam tempo
Depois do básico, o salto de valor vem de organizar o código: funções que se reaproveitam, dados em JSON, chamadas a APIs e scripts que aceitam parâmetros.
Um script que conta linhas de log resolve um problema. O salto de valor vem quando você para de escrever scripts descartáveis e começa a montar automações que se reaproveitam, se combinam e rodam sozinhas. Esse é o território do Python intermediário: funções bem definidas, trabalho com dados estruturados como JSON, integração com sistemas via API e scripts que aceitam parâmetros em vez de ter valores fixos no código.
Este é o segundo guia da trilha. O foco continua defensivo: automatizar tarefas de operação e análise que hoje consomem tempo manual. A ideia é transformar aquele script útil, mas engessado, em uma ferramenta flexível que outras pessoas do time também conseguem usar.
Funções que se reaproveitam
A primeira mudança de patamar é organizar o código em funções. Em vez de um bloco corrido que faz tudo, você separa cada tarefa em uma função com um nome claro e uma responsabilidade só. Isso torna o código mais fácil de ler, de testar e de reaproveitar em outro script. Uma função que lê um log e devolve as falhas serve tanto para um relatório quanto para um alerta.
def contar_falhas_por_origem(caminho):
contagem = {}
with open(caminho, encoding="utf-8") as arquivo:
for linha in arquivo:
if "Failed password" in linha:
origem = linha.split("from ")[-1].split()[0]
contagem[origem] = contagem.get(origem, 0) + 1
return contagem
for origem, total in contar_falhas_por_origem("auth.log").items():
print(f"{origem}: {total} falhas")Repare que a função não imprime nada; ela devolve os dados. Quem chama decide o que fazer com o resultado, se é imprimir, salvar ou disparar um alerta. Essa separação entre calcular e agir é uma das ideias que mais melhoram um código de automação.
Trabalhar com dados estruturados
Boa parte dos dados que circulam em segurança vem em formatos estruturados, e JSON é o mais comum. Respostas de API, configurações e exportações de ferramentas costumam ser JSON. Python lê e escreve JSON de forma nativa, transformando esse texto em dicionários e listas com que você já sabe trabalhar. Dominar isso abre a porta para integrar praticamente qualquer sistema moderno.
import json
with open("hosts.json", encoding="utf-8") as arquivo:
hosts = json.load(arquivo)
sem_mfa = [h["nome"] for h in hosts if not h.get("mfa")]
print("Hosts sem MFA:", sem_mfa)Com poucos comandos, você lê um inventário, filtra o que interessa e produz uma lista acionável. O mesmo padrão serve para revisar configurações, cruzar dados de fontes diferentes e gerar relatórios. É o tipo de tarefa que, feita à mão, consome uma tarde e, em Python, roda em segundos.
Integrar sistemas via API
Muitas ferramentas de segurança e serviços de nuvem oferecem uma API. É por ela que você consulta dados, checa status e automatiza ações sem depender de cliques em uma interface. Em Python, a biblioteca requests torna essas chamadas simples. O cuidado central é com autenticação: a chave ou token de acesso deve vir de uma variável de ambiente, nunca do código.
import os
import requests
token = os.environ["API_TOKEN"]
resposta = requests.get(
"https://api.exemplo.com/v1/status",
headers={"Authorization": f"Bearer {token}"},
timeout=10,
)
resposta.raise_for_status()
print(resposta.json())Dois detalhes fazem diferença nesse código. O timeout evita que o script trave para sempre se o serviço não responder. E o raise_for_status faz o script falhar de forma clara quando a API retorna um erro, em vez de seguir com dados inválidos. Automação confiável falha alto e cedo, não em silêncio.
Registrar a execução com logging
Um script que roda sozinho precisa deixar rastro do que fez. Trocar os prints pelo módulo logging da biblioteca padrão dá controle sobre o nível da mensagem, o formato com data e hora e o destino, seja o terminal ou um arquivo. Quando algo der errado às três da manhã, é esse registro que permite entender o que aconteceu sem reproduzir o problema no escuro.
import logging
logging.basicConfig(
level=logging.INFO,
format="%(asctime)s %(levelname)s %(message)s",
)
log = logging.getLogger("checagem")
log.info("Iniciando a checagem de hosts")
log.warning("Host sem MFA encontrado: web-03")Cuidado com o que entra no log. Nunca registre senhas, tokens ou dados pessoais sensíveis, porque o arquivo de log costuma ser menos protegido do que o segredo original e vira uma fonte de vazamento. Registre o suficiente para investigar, sem transformar o log em um novo problema de privacidade.
Scripts com parâmetros e agendamento
Um script com valores fixos no código serve para um caso só. Aceitar parâmetros, como o caminho de um arquivo ou o nome de um ambiente, transforma o mesmo script em uma ferramenta que atende vários casos. A biblioteca padrão argparse resolve isso e ainda gera uma ajuda automática, o que facilita para outras pessoas usarem o seu script sem ler o código.
Quando o script está pronto e confiável, o passo seguinte é rodá-lo sozinho, de forma agendada, para que a checagem aconteça sem alguém lembrar de executá-la. Aqui vale reforçar os cuidados de segurança: o script agendado precisa dos segredos protegidos, do menor privilégio possível e de um registro do que fez, para que você confie no que roda no automático.
Dar o próximo passo na trilha
Para escrever automações assim, você precisa estar confortável com funções, estruturas de dados e o tratamento de erros da linguagem. É o conteúdo que separa quem copia um exemplo de quem monta a própria ferramenta. Se o básico já está firme e você quer dar esse passo, o Curso de Python Intermediário do Valor Final cobre exatamente essa faixa.
Ele é o segundo curso da trilha gratuita e parte de quem já domina variáveis, condições, laços, listas e funções, para aprofundar em estruturar código de verdade. É a base que sustenta as automações deste guia e prepara o terreno para o próximo, sobre construir ferramentas maiores e mais duráveis.
Checklist prático
- Separar o código em funções com responsabilidade única
- Deixar as funções calcularem e devolverem, sem misturar com a ação
- Ler e escrever dados estruturados em JSON
- Integrar sistemas via API com a biblioteca requests
- Sempre usar timeout e verificar erros nas chamadas de API
- Ler segredos de variáveis de ambiente
- Aceitar parâmetros com argparse em vez de valores fixos
- Usar o módulo logging em vez de prints para registrar a execução
- Nunca registrar senhas, tokens ou dados sensíveis nos logs
- Registrar o que o script faz quando roda agendado
Boas práticas
- Separe calcular de agir: funções devolvem, o chamador decide
- Trate JSON como estrutura, não como texto para recortar
- Faça a automação falhar alto e cedo, nunca em silêncio
- Parametrize o script para atender vários casos
- Proteja segredos e privilégios em scripts agendados
Erros comuns
Escrever um bloco corrido que faz tudo
O código fica difícil de ler, testar e reaproveitar.
Chamar uma API sem timeout
O script trava indefinidamente quando o serviço não responde.
Ignorar o código de erro retornado pela API
A automação segue com dados inválidos e produz resultado errado.
Fixar caminhos e ambientes no código
O script serve a um caso só e precisa ser editado a cada uso.
Quando procurar apoio especializado
Quando as automações passam a coletar dados de segurança, disparar ações e rodar sem supervisão, a arquitetura e os controles em volta importam tanto quanto o código. A GUARDIASEC ajuda a desenhar essas automações de forma segura, com Consultoria em Segurança e apoio de Monitoramento e Resposta, cuidando de privilégios, segredos e rastreabilidade.
Trilha de Python do Valor Final
A trilha de Python do Valor Final tem três cursos gratuitos. Para as automações deste guia, o curso intermediário é o degrau certo depois de firmar a base.
Curso de Python Básico
GratuitoCurso gratuito de Python para quem nunca programou. Você escreve código de verdade já na primeira aula, direto no navegador, sem instalar nada.
Valor FinalCurso de Python Intermediário
GratuitoSegundo curso da trilha, para quem já domina o básico (variáveis, condições, laços, listas e funções) e quer dar o próximo passo.
Valor FinalCurso de Python Avançado
GratuitoTerceiro curso da trilha, para quem já escreve código organizado e quer aprofundar em orientação a objetos, decoradores, geradores e testes.
Valor FinalPerguntas frequentes
Qual biblioteca usar para chamar APIs em Python?
A biblioteca requests é a escolha mais comum por ser simples e legível. Ela cobre os casos do dia a dia de consultar e enviar dados a APIs. Ao usá-la, sempre defina um timeout para o script não travar e verifique o status da resposta para tratar erros. Para projetos maiores existem alternativas assíncronas, mas requests atende bem a maioria das automações.
Como guardar tokens e senhas usados nos scripts?
Fora do código. O padrão é ler esses valores de variáveis de ambiente ou de um cofre de segredos, de modo que a credencial nunca fique escrita no arquivo nem seja versionada. Isso vale ainda mais para scripts agendados, que rodam sozinhos: um token exposto no código é um dos vazamentos mais fáceis de acontecer e de evitar.
Vale a pena automatizar tarefas de segurança?
Na maioria dos casos, sim, quando a tarefa é repetitiva e bem definida. Automatizar libera tempo para o que exige julgamento humano e reduz o erro de fazer a mesma coisa na mão toda vez. O cuidado é automatizar com responsabilidade: menor privilégio, segredos protegidos, registro do que foi feito e testes antes de apontar para produção.
Preciso do curso intermediário se já sei o básico?
Se você já escreve scripts simples mas sente dificuldade para organizá-los em funções, lidar com JSON e integrar APIs, o intermediário é exatamente esse degrau. O Curso de Python Intermediário do Valor Final parte de quem domina variáveis, condições, laços, listas e funções e ensina a estruturar código de verdade, que é o que este guia coloca em prática.
Como agendo um script Python para rodar sozinho?
Em Linux, o cron é o caminho mais comum para execuções periódicas; em Windows, o Agendador de Tarefas cumpre o mesmo papel. Em nuvem, dá para agendar a execução com serviços gerenciados. Em todos os casos, o script agendado precisa dos segredos protegidos, do menor privilégio necessário e de um registro do que fez, porque ninguém estará olhando na hora em que ele roda.
Qual a diferença entre print e logging?
O print apenas escreve texto na saída padrão. O logging dá controle sobre o nível da mensagem, como informativo, aviso ou erro, sobre o formato com data e hora e sobre o destino, seja o terminal ou um arquivo. Para um teste rápido, print resolve; para um script que roda sozinho e precisa deixar rastro de investigação, o logging é o certo.
Guias relacionados
Próximo passo
Vamos avaliar os riscos do seu ambiente?
Conte seu cenário e definimos juntos o escopo certo. O objetivo é reduzir caminhos prováveis de ataque e elevar a maturidade de segurança, sem promessas absolutas.