Activation des Journaux
Event Hubs
Depuis le portail Azure, recherchez Event Hubs et sélectionnez-le :


-
Depuis le portail Azure, recherchez Event Hubs et sélectionnez-le
-
Cliquez sur +Créer
-
Remplissez les paramètres selon votre environnement de bonnes pratiques (ex : abonnement, groupe de ressources, etc.), à l'exception des valeurs suivantes :
- Général
- Niveau de tarification : Standard
- Unités de débit : 1
- Avancé
- Version TLS minimale : Version 1.2
- Authentification locale : Activée
- Réseau
- Méthode de connectivité : Accès public
- Général
Veuillez noter qu'une fois que les ressources que vous souhaitez surveiller enverront des journaux au hub d'événements créé ci-dessus, les hubs d'événements correspondants seront automatiquement créés.
Par exemple :


Azure Function
- Depuis le portail Azure, recherchez Function App et sélectionnez-le :


- Remplissez les paramètres selon votre environnement de bonnes pratiques (ex : abonnement, groupe de ressources, etc.), à l'exception des valeurs suivantes :
- Général
- Option d'hébergement : Fonctions Premium
- Voulez-vous déployer du code ou une image de conteneur ? Code
- Pile d'exécution : .NET
- Version : 8 LTS, modèle en processus
- Système d'exploitation : Windows
- Plan tarifaire : Elastic Premium EP1 (210 ACU totaux, 3,5 Go de mémoire, 1 vCPU)
- Réseau
- Activer l'accès public : Oui
- Surveillance
- Activer Application Insights : Non (activez-le après la création de la fonction)
Après le déploiement de la fonction, complétez les champs suivants :
Aperçu – Fonctions - +Créer
- Sélectionnez un modèle : Déclencheur Azure Event Hub
- Définissez les autres paramètres en fonction du Event Hub créé précédemment.
- Variables d'environnement : NEBULA_API_KEY
Comment obtenir une API KEY ?
Accédez à nebula.altermaind.com et suivez ces étapes :
- Menu -> Azure -> Clés API (n'oubliez pas que cette fonctionnalité est visible uniquement pour le rôle orgaAdmin)
- Copiez la clé API principale et utilisez-la comme valeur pour la variable NEBULA_API_KEY


Code de la Fonction Azure
#r "Newtonsoft.Json"
#r "Azure.Messaging.EventHubs"
#r "System.Net.Http"
#r "System.Memory.Data"
using System;
using System.IO;
using System.Net.Http;
using System.Text;
using System.Threading.Tasks;
using Azure.Messaging.EventHubs;
using Newtonsoft.Json;
public static async Task Run(EventData[] events, ILogger log)
{
HttpClient httpClient = new HttpClient();
string NEBULA_URL = "https://azurerm-intake-api.altermaind.com/api/azurerm-logs";
string NEBULA_API_KEY = Environment.GetEnvironmentVariable("NEBULA_API_KEY");
const int INITIAL_DELAY = 1000; // Délai initial en millisecondes
foreach (EventData eventData in events)
{
string messageBody = Encoding.UTF8.GetString(eventData.Body.ToArray());
log.LogInformation($"Message reçu : {messageBody}");
bool messageSent = false;
int retryCount = 0;
int delay = INITIAL_DELAY;
while (!messageSent)
{
try
{
// Préparer la requête HTTP
var httpRequestMessage = new HttpRequestMessage(HttpMethod.Post, NEBULA_URL)
{
Content = new StringContent(messageBody, Encoding.UTF8, "application/json")
};
// Ajouter la clé API aux en-têtes de la requête
httpRequestMessage.Headers.Add("X-API-KEY", NEBULA_API_KEY);
// Envoyer la requête HTTP au microservice
HttpResponseMessage response = await httpClient.SendAsync(httpRequestMessage);
if (response.IsSuccessStatusCode)
{
log.LogInformation($"Message envoyé avec succès au microservice. Réponse : {await response.Content.ReadAsStringAsync()}");
messageSent = true;
}
else
{
log.LogError($"Échec de l'envoi du message au microservice. Code d'état : {response.StatusCode}, Réponse : {await response.Content.ReadAsStringAsync()}");
// Vérifier si le code d'état est entre 400 et 499
if ((int)response.StatusCode >= 400 && (int)response.StatusCode <= 499)
{
log.LogError("Erreur côté client. Pas de nouvelle tentative.");
break;
}
}
}
catch (Exception ex)
{
log.LogError($"Exception : {ex.Message}");
}
if (!messageSent)
{
retryCount++;
log.LogWarning($"Tentative de réessai {retryCount} échouée. Attente de {delay}ms avant la prochaine tentative.");
await Task.Delay(delay);
delay *= 2; // Backoff exponentiel
}
}
}
}
## Politique
Ce guide est divisé en deux sections principales: une pour des objectifs généraux et une pour des ressources spécifiques.
### Général
1. Depuis le Portail Azure, recherchez "Politique" et sélectionnez-le.
2. Sous "Création", sélectionnez "Définitions", puis "+ Définir une politique" : l'assistant suivant s'ouvrira :
a. Définir l'emplacement : le niveau le plus élevé de votre annuaire, généralement le groupe de gestion racine, car dans les étapes suivantes, vous pouvez attribuer la politique aux niveaux inférieurs (par exemple, souscription).
Le contenu des autres formulaires dépend de votre environnement.
3. Une fois la politique créée et sauvegardée, l'étape suivante consiste à l'assigner.
Avant de continuer, il est nécessaire de disposer du rôle d'Administrateur de l'accès utilisateur pour le champ d'application de l'assignation de la politique.
Sélectionnez la politique sous "Création" – "Définitions".
4. Cliquez sur "Attribuer une politique", l'assistant suivant apparaîtra :
- Onglet de base
- Champ d'application : le niveau le plus élevé de votre annuaire, généralement le groupe de gestion racine, pour cibler toutes les ressources impactées par la politique.
- La définition de la politique et le nom de l'assignation sont directement définis dans la politique.
Le contenu des autres formulaires dépend de votre environnement.
- Onglet Paramètres
Sélectionnez l'Event Hub créé précédemment.
- Onglet Remédiation
- Type d'identité managée : Identité managée attribuée par le système.
Les autres champs sont automatiquement remplis par la définition de la politique.
- Message de non-conformité : selon votre environnement.
- Créer et sauvegarder l'assignation.
5. Une fois que la politique a été attribuée, son temps d'évaluation dépend de plusieurs événements selon la documentation de Microsoft.
Il est possible de surveiller l'état de l'évaluation sous la colonne "Remédiation – Politiques à corriger – Ressources à corriger".
6. Une fois que l'ingestion des ressources à corriger est terminée, cliquez sur la politique souhaitée (Remédiation – Politiques à corriger) et définissez les paramètres de la remédiation selon votre choix :
- Ressources applicables à corriger : ici vous pouvez sélectionner le champ d'application (par exemple, groupe de gestion, souscription, etc.).
- Emplacements
Enfin, sélectionnez "Corriger".
7. Il est possible de surveiller l'état de la remédiation sous "Remédiation":
- Tâche de remédiation