Ferramenta em Python para atualizar o status de um incidente no Microsoft Defender (via Microsoft Graph), adicionando também um comentário.
- Python 3.9+
- Aplicativo registrado no Entra ID (Azure AD) com permissões de aplicativo:
SecurityIncident.ReadWrite.All(consentimento do administrador necessário)
-
Crie (ou obtenha) os valores do seu app:
- Tenant ID
- Client ID
- Client Secret
-
Configure as credenciais usando uma das opções abaixo (em ordem de prioridade):
Opção 1: Arquivo de configuração (recomendado)
cp .config.example .config # Edite o arquivo .config com suas credenciaisOpção 2: Variáveis de ambiente
export AZURE_TENANT_ID="seu-tenant-id" export AZURE_CLIENT_ID="seu-client-id" export AZURE_CLIENT_SECRET="seu-client-secret"
Opção 3: Flags na linha de comando
python -m src.update_incident --tenant-id <TENANT_ID> --client-id <CLIENT_ID> --client-secret <CLIENT_SECRET> ...
pip install -r requirements.txtpython -m src.update_incident --incident 12345 --status Resolved --comment "Resolução aplicada"Parâmetros:
--incident(obrigatório): número/ID do incidente--status(obrigatório): novo status (Active | InProgress | Resolved | Redirected)--comment(obrigatório): comentário a ser adicionado ao incidente--config(opcional): caminho para o arquivo de configuração (padrão:.config)
Também é possível passar credenciais via flags:
python -m src.update_incident \
--incident 12345 \
--status InProgress \
--comment "Análise iniciada" \
--tenant-id <TENANT_ID> \
--client-id <CLIENT_ID> \
--client-secret <CLIENT_SECRET>Usando arquivo de configuração personalizado:
python -m src.update_incident \
--incident 12345 \
--status Resolved \
--comment "Resolução aplicada" \
--config /caminho/para/seu/config- O script usa fluxo de credenciais de aplicativo (client credentials) via MSAL.
- Endpoint:
https://graph.microsoft.com/v1.0/security/incidents/{incidentId}(PATCH) - Permissões necessárias:
SecurityIncident.ReadWrite.All(Application).