Analyse des journaux et de la configuration avec GitHub Copilot
Tip
Pour plus d’informations, consultez l’onglet Texte et images !
Les environnements cloud modernes génèrent de grands volumes de données de journal. Un Pare-feu Azure dans un environnement occupé produit des milliers d’entrées de journal par heure. Les journaux d’activité capturent chaque opération de gestion sur toutes les ressources. Les journaux de flux NSG enregistrent chaque connexion réseau, autorisée et refusée.
Le défi n’est pas de collecter les données. Azure Monitor, Log Analytics et Microsoft Sentinel gèrent bien la collecte. Le défi consiste à transformer rapidement les données de journal brutes en intelligence actionnable. Cela signifie rechercher le modèle d’attaque dans 10 000 entrées de pare-feu, identifier la cause racine d’un échec de déploiement enterré dans un journal des erreurs de 500 lignes ou produire un rapport de conformité significatif à partir d’un mois de données d’activité.
GitHub Copilot gère bien la reconnaissance des modèles et le résumé. Vous fournissez les données ; Copilot fournit l’analyse.
Analyse des journaux d’activité de Pare-feu Azure
Pare-feu Azure journaux de règles réseau enregistrent chaque connexion évaluée par le pare-feu : l’adresse IP source, l’adresse IP de destination, le port, le protocole et si la connexion a été autorisée ou refusée. L’analyse manuelle de ces journaux est fastidieuse. Copilot peut les analyser en quelques secondes.
Le prompt d’analyse de base
Analyze these Azure Firewall network rule logs and provide:
1. The top 5 source IPs generating denied traffic, with connection counts
2. The top 5 destination ports targeted by denied traffic
3. Any source IPs with rapid sequential connections to many different ports
(port scanning behavior), including the time window
4. The one-hour period with the highest volume of denied connections
5. Any connections that were ALLOWED to unusual external destinations
(non-standard ports, suspicious IP ranges)
Format the output as a structured report with a section for each finding.
[paste firewall-logs.json content here]
Ce qu’une bonne analyse des journaux de pare-feu révèle
L’analyse des ports est identifiable par une adresse IP source unique qui effectue des connexions à de nombreux ports de destination différents dans une fenêtre de temps courte. Un client légitime établit des connexions à un ou deux ports à plusieurs reprises. Un scanneur sonde des dizaines de ports de manière séquentielle.
Les tentatives de force brute se manifestent par de nombreuses connexions refusées provenant d’une même adresse IP source à destination du même port, généralement 22 (SSH) ou 3389 (RDP), à intervalles très rapprochés.
Les anomalies de trafic autorisées sont souvent plus concernant que le trafic refusé. Les connexions refusées sont bloquées. Les connexions autorisées à des destinations inhabituelles, telles que des ports non standard ou des plages d’adresses IP associées à des menaces connues, représentent le déplacement réel des données à examiner.
Transformer les résultats en changements d’infrastructure
L’analyse des journaux doit alimenter directement vos modèles Bicep. Après avoir identifié les adresses IP sources du problème, demandez Copilot pour générer la correction :
Based on the firewall log analysis, the following source IPs are confirmed
malicious: 185.220.101.45, 91.230.54.112, 194.165.16.78.
Generate:
1. A Bicep snippet for an Azure Firewall Network Rule Collection that explicitly
denies all traffic from these IPs at the highest priority (100)
2. An Azure CLI command to apply this rule without a full template redeployment
3. A comment explaining the source of each blocked IP
Pour fermer la boucle : analyser les journaux d’activité, identifier les menaces. Générez IaC pour les bloquer. Ensuite, déployez la mesure corrective. Le cycle entier peut se produire au sein d’une session Copilot Chat unique.
Résolution des échecs de déploiement
Les journaux d’échec du déploiement peuvent être difficiles à interpréter. Azure Resource Manager retourne des objets d’erreur JSON imbriqués avec des codes, des messages et des détails d’évaluation de stratégie qui prennent du temps pour analyser. Copilot aide à réduire le bruit provenant de différentes sources afin d’identifier clairement la cause racine et sa résolution en quelques secondes.
La consigne d’analyse des défaillances
This is an Azure resource deployment log that ended in failure.
Analyze the log and provide:
- The root cause of the failure in plain language, not error codes
- Which specific resource failed and why
- The exact change needed in the Bicep template or deployment parameters to fix the issue
- Whether there are multiple issues (sometimes one error masks another)
If there is a policy violation, explain: which policy blocked the deployment,
what the policy requires, and where in the template the requirement is not met.
[paste failed-deployment.log content here]
Catégories courantes d’échecs de déploiement
Erreurs de dimensionnement du sous-réseau: Pare-feu Azure nécessite un sous-réseau de taille minimale /26. Azure Bastion nécessite un /26. Une passerelle de réseau virtuel nécessite un /27. Ces limites sont faciles à manquer et produisent des messages d’erreur clairs que Copilot peuvent analyser et corriger.
Violations de stratégie : La gouvernance des abonnements Azure Enterprise repose sur Azure Policy. Les stratégies courantes nécessitent des balises spécifiques sur toutes les ressources, limitent les références SKU aux types approuvés ou appliquent des tailles de sous-réseau minimales. Une violation de stratégie dans le journal des erreurs inclut le nom de la stratégie et l’expression spécifique qui a été évaluée comme non conforme.
Conflits de ressources : Déploiement d’une ressource qui existe déjà avec des propriétés incompatibles. Par exemple, un compte de stockage avec une référence SKU différente de celle existante, ou un nom Key Vault déjà pris globalement.
Échecs d’autorisation RBAC : L’identité de déploiement ne dispose pas des autorisations nécessaires pour créer un type de ressource spécifique. Cet exemple est courant lors du déploiement d’attributions de rôles, où Microsoft.Authorization/roleAssignments/write nécessite un administrateur d’accès utilisateur ou propriétaire.
Incompatibilités de version de l’API : Une ressource utilise une version d’API qui n’est plus disponible. Ce scénario est plus courant dans les modèles obsolètes.
Demander un correctif dans Bicep
Après Copilot identifie la cause racine, demandez-lui de générer le correctif :
The deployment failed because:
1. AzureFirewallSubnet is /27 but must be /26
2. The CostCenter tag is missing from the hub VNet resource
Apply both fixes to this Bicep template. Show only the changed sections,
not the entire template, and explain what you changed and why.
[paste the relevant Bicep sections]
Génération de requêtes KQL pour Azure Monitor
KQL (Langage de requête Kusto) est le langage de requête pour Azure Monitor, Log Analytics et Microsoft Sentinel. L’écriture de KQL à partir de zéro nécessite une connaissance des schémas de table, des fonctions KQL et de la structure des journaux de diagnostic Azure. Copilot génère des requêtes KQL à partir de descriptions de langage naturel, réduisant considérablement la barrière.
Génération KQL de base
Generate a KQL query for the AzureDiagnostics table in Log Analytics.
The query should:
- Count denied connections grouped by SourceIP
- Filter to the last 24 hours using TimeGenerated > ago(24h)
- Include only rows where Action_s == "Deny"
- Include only rows from Azure Firewall (Category == "AzureFirewallNetworkRule")
- Sort by count descending
- Visualize as a bar chart
Add a comment at the top explaining what this query does and when to use it.
Exemple de sortie KQL :
// Top blocked source IPs in the last 24 hours
// Use this query to identify source IPs generating the most denied traffic.
// Useful for firewall rule tuning and threat hunting.
AzureDiagnostics
| where TimeGenerated > ago(24h)
| where Category == "AzureFirewallNetworkRule"
| where Action_s == "Deny"
| summarize DeniedCount = count() by SourceIP = SourceIp_s
| sort by DeniedCount desc
| render barchart
Génération d’une suite de requêtes de sécurité
Generate three KQL queries for Azure Firewall security monitoring:
Query 1: Allowed SSH/RDP connections
Find all connections to port 22 or 3389 that were allowed by the firewall.
These are potential security risks that should be reviewed.
Query 2: Hourly allowed vs. denied traffic trend
Show the count of allowed and denied connections per hour over the last 7 days,
as a time chart with two series (one for allowed, one for denied).
Query 3: New source IPs in the last 24 hours
Find source IPs that appear in today's denied traffic but did not appear
in the 7 days prior. These are new sources of malicious traffic.
For each query: add explanatory comments, use the AzureDiagnostics table,
and make them production-ready (handle null fields with isnotempty()).
Génération de KQL pour les journaux d’activité
Les journaux d’activité utilisent la table AzureActivity dans Log Analytics. Le schéma est différent des journaux de diagnostic et Copilot connaît les noms des colonnes.
Generate a KQL query for the AzureActivity table that finds:
- All role assignment changes (RBAC) in the last 30 days
- Only operations where OperationNameValue contains "roleAssignments"
- Include: TimeGenerated, Caller, OperationNameValue, ActivityStatusValue,
ResourceGroup, Properties
Sort by TimeGenerated descending. Add a comment explaining how to use
this query for access control auditing.
Génération de résumés d’audit de conformité
Les équipes de conformité et les auditeurs ont besoin de rapports structurés, et non de données de journal brutes. Copilot peut lire les fichiers journaux et générer des résumés d’audit professionnels.
Instruction de synthèse de conformité
Analyze these Azure Activity Log entries and generate a compliance audit summary
in markdown format for the period [date range].
Structure the report as follows:
## Executive Summary
[2-3 sentences summarizing the overall compliance posture]
## Access Control Changes
[Table: Date | Actor | Action | Resource | Risk Rating]
## Resource Deletions
[Table: Date | Actor | Resource | Resource Group | Risk Rating]
## Policy Exemptions
[Table: Date | Actor | Policy | Exemption Scope | Expiry | Risk Rating]
## After-Hours Activity
[Table: Date | Time | Actor | Action | Risk Rating]
[Note: Business hours are 09:00-18:00 in your local time zone]
## Risk Summary
[Count by risk level: High / Medium / Low]
## Recommended Actions
[Bulleted list of follow-up actions based on findings]
Apply risk ratings:
- High: role assignments, policy exemptions, resource deletions in production
- Medium: configuration changes to security resources (Key Vault, NSG, Firewall)
- Low: read operations, tag updates, scaling events
[paste activity-log.json content here]
La sortie est immédiatement utilisable en tant que rapport de conformité, résumé de la révision de sécurité ou section dans un package de réponse d’audit. Passez en revue les évaluations des risques Copilot s'applique et ajustez les valeurs qui ne correspondent pas à la stratégie de classification des risques de votre organisation.