Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
En tant que partenaire ISV, vous pouvez créer, tester, empaqueter et publier des solutions d’analytique de notebook Jupyter dans le store Sécurité Microsoft en tant qu’offres SaaS. Le lac de données Microsoft Sentinel prend en charge les notebooks Jupyter qui s’exécutent sur des clusters Spark gérés pour traiter de vastes jeux de données de sécurité. Ces notebooks sont parfaitement adaptés à la détection des attaques lentes et furtives, à l'établissement de références comportementales, aux analyses basées sur l'IA/ML, au mappage des chemins d'accès aux données sensibles, aux visualisations de données et aux enrichissements que les détections KQL traditionnelles ne permettent pas d'exprimer.
Une solution de plateforme de notebooks est généralement conçue pour l’analyse historique, les transformations de données complexes et les flux de traitement de données récurrents. Elle écrit la sortie dans une table personnalisée du lac de données, où des règles d’analyse en aval, des requêtes de chasse, des agents Security Copilot ou des outils MCP peuvent consommer les résultats de la solution de notebook. Le package .zip que vous soumettez à l'Espace partenaires est déclaré avec le type SentinelLake et contient les notebooks ainsi que, éventuellement, un modèle ARM pour les ressources Azure en aval dont le notebook a besoin.
Cet article vous guide dans la création, les tests, l’emballage et la publication d’une solution de notebook de plateforme Microsoft Sentinel sur le Sécurité Microsoft Store. Une fois ce guide terminé, vous disposez des points suivants :
- Un notebook Jupyter fonctionnel qui lit les données du data lake Sentinel
- Un travail planifié qui exécute le notebook sur un pool Spark managé
- Un fichier zip de package
SentinelLake(PackageManifest+ dossier du notebook) - Une fiche d’offre SaaS dans l’Espace partenaires du Sécurité Microsoft Store
Logiciels requis
Votre locataire doit être intégré au lac de données Microsoft Sentinel. Vérifiez l’état d’intégration dans le portail Defender. Accédez auxparamètres>système>Microsoft Sentinel>Data lake. L’état indique Provisionné si votre tenant est prêt. Pour obtenir des instructions d’intégration, consultez Intégration au lac de données Microsoft Sentinel.
Autorisations requises
| Opération/Ressource | Rôle requis |
|---|---|
| À bord du lac de données Sentinel | Microsoft Entra ID - Administrateur de sécurité ou Administrateur général |
| Intégrer l’espace de travail Sentinel au portail Defender | Propriétaire de l’abonnement, ou Administrateur de l’accès utilisateur à l’échelle de l’abonnement, et Contributeur Microsoft Sentinel à l’échelle de l’abonnement ou du groupe de ressources |
| Intégrer l'espace de travail Sentinel au lac de données | Propriétaire de l’abonnement ou contributeur Microsoft Sentinel au niveau de l’étendue de l’abonnement ou du groupe de ressources |
| Exécuter des notebooks sur le lac de données | lecteur ou contributeur Microsoft Sentinel |
| Espace de travail Log Analytics (pour la réécriture dans le niveau Analytics) | Contributeur Log Analytics attribué à l'identité managée du lac de données msg-resources-<guid> |
| Espace partenaires Microsoft | Compte d’éditeur Marketplace (une seule fois ; même compte utilisé pour la publication d’agents Security Copilot) |
Note
Le rôle Subscription Owner est requis pour une tâche ponctuelle d’intégration du data lake. Utilisez Microsoft Entra Privileged Identity Management (PIM) pour élever temporairement ce rôle uniquement si nécessaire, puis supprimez l’accès une fois l’intégration terminée.
Outils requis
- Visual Studio Code.
- extension Microsoft Sentinel pour VS Code
- L’extension GitHub Copilot pour VS Code est recommandée pour accélérer la création de notebooks.
- Python 3.10+ installé localement. Le noyau Spark s’exécute dans Azure, mais VS Code a besoin d’un interpréteur local pour la modification de cellule.
Vue d’ensemble du processus
Le processus de publication commence par le développement local du notebook et aboutit à une offre SaaS mise en package et disponible dans Sécurité Microsoft Store.
- Développement de notebooks locaux (extension VS Code + Sentinel)
- Exécuter de manière interactive sur la plateforme Sentinel
- Tester sur des données représentatives ; valider le remplissage de la table de sortie
- Planifier en tant que travail (à la demande ou planifié)
- Empaqueter en .zip SentinelLake (PackageManifest.yaml + dossier)
- Créer une offre SaaS dans Microsoft Partner Center
- Charger le package, créer des métadonnées, un plan et une tarification
- Révision et publication, révision automatisée, Go Live
- Disponible dans Sécurité Microsoft Store
Installer Visual Studio Code et l’extension Microsoft Sentinel
Tout le développement de notebooks se produit localement dans VS Code avec l’extension Microsoft Sentinel installée. Le noyau Spark s’exécute dans Azure : VS Code est l’éditeur et le client de soumission.
Téléchargez Visual Studio Code à partir de
https://code.visualstudio.com/et installez avec les options par défaut.Ouvrez la Place de marché > VS Code (Ctrl+Maj+X ou Cmd+Maj+X).
Recherchez Sentinel et installez l’extension Microsoft Sentinel (publisher :
ms-security).Après l’installation, l’icône Microsoft Sentinel apparaît dans la barre d’outils de gauche.
(Recommandé) Recherchez GitHub Copilot dans la Place de marché, installez-la et connectez-vous à GitHub lorsque vous y êtes invité.
Copilot connaît l’
MicrosoftSentinelProviderAPI et complète automatiquement les transformations PySpark.Sélectionnez l’icône Microsoft Sentinel dans la barre d’outils de gauche.
Approuvez la boîte de dialogue de connexion, puis sélectionnez le compte avec lecteur/contributeur Sentinel sur votre espace de travail.
Le volet gauche affiche Tables du lac et Travaux, ce qui confirme que l'extension a bien accédé au lac de données.
Caution
Si vous avez plusieurs locataires invités connectés, le basculement de comptes en bas à gauche de VS Code tue les sessions PySpark actives. Vous devez redémarrer le noyau après le basculement. Prévoyez les changements de compte entre les exécutions, et non pendant celles-ci.
Développer votre carnet
Les carnets utilisent ce modèle de création :
- Lire une table du lac de données dans un DataFrame Spark
- Transformer avec PySpark
- Enrichir éventuellement avec des données externes
- Écrire des résultats dans une table personnalisée que Sentinel peut consommer
Explorer le volet Tables du lac
Pour identifier les tables d’entrée que votre bloc-notes utilise, explorez le panneau tables Lake :
- Sélectionnez l’icône Sentinel et développez les tables Lake.
- Les tables sont regroupées par base de données et par catégorie (Système, Personnalisé, Fédéré). Sélectionnez n’importe quelle table pour afficher ses définitions et types de colonnes.
- Identifiez les tables d’entrée que votre notebook lit et notez les noms exacts.
Créer un nouveau cahier
Pour créer un notebook Jupyter pour votre solution, procédez comme suit :
Appuyez sur Ctrl+Maj+P / Cmd+Maj+P>, tapez Créer une Jupyter Notebook, ou sélectionnez Fichier>nouveau>Jupyter Notebook.
Enregistrez le bloc-notes avec un nom descriptif (par exemple,
failed-signin-baseline.ipynb).
Lire un tableau
Collez ce modèle dans la première cellule et remplacez le nom du tableau par le vôtre :
from sentinel_lake.providers import MicrosoftSentinelProvider
data_provider = MicrosoftSentinelProvider(spark)
# Read a table from the data lake
table_name = "EntraGroups"
df = data_provider.read_table(table_name)
# Quick sanity check—show 100 rows
df.select("displayName", "groupTypes", "mail", "tenantId").show(100, truncate=False)
Sélectionnez un pool d’environnements d’exécution et exécutez la cellule
Pour exécuter la cellule sur le lac de données, sélectionnez un pool et soumettez-la :
Sélectionnez le triangle Exécuter sur la cellule.
Lorsque vous y êtes invité, choisissez Microsoft Sentinel comme runtime.
Choisissez une taille de pool : petite pour l’exploration, Moyenne pour les transformations, Grande pour ML ou agrégations sur des dizaines de millions de lignes.
La première exécution prend 3 à 5 minutes pour démarrer la session Spark. Les cellules suivantes s’exécutent en quelques secondes.
Transformer et réécrire dans une table personnalisée
La méthode save_as_table() écrit un DataFrame dans une table personnalisée de la couche lake (ou de la couche analytique). La table de destination est créée lors de la première écriture.
df_transformed = (
df.filter(df.mail.isNotNull())
.select("displayName", "groupTypes", "mail", "mailNickname", "description", "tenantId")
)
write_options = {"mode": "overwrite"}
data_provider.save_as_table(
df_transformed,
"EntraGroups_Processed_SPRK",
write_options=write_options,
)
Modèles de création de notebooks
Les modèles suivants couvrent les scénarios les plus courants :
| Modèle | Quand l′utiliser ? |
|---|---|
| Ligne de base + dérive | Calculez le comportement normal par utilisateur ou par hôte ; signalez les lignes qui s’écartent de la référence. Classique pour l’analyse de l’échec de la connexion et de l’exécution de processus. |
| Jointure entre tables | Joignez la table du lac dont vous êtes propriétaire aux tables intégrées (SigninLogs, SecurityAlert, DeviceProcessEvents) à l'aide d'entités communes (UPN, hôte, adresse IP). |
| Scoring ML | Entraînez ou chargez un modèle préentraîné dans le notebook ; attribuez un score à chaque ligne ; écrivez les N lignes présentant le plus de risques dans une table de sortie personnalisée pour la génération d'alertes en aval. |
| Investigation visuelle | Tracez des chronologies, cartes thermiques et arborescences de processus avec matplotlib ou plotly ; exportez le notebook au format HTML pour la transmission. |
Tip
Utilisez les cellules Markdown de manière libérale pour documenter votre code. Un examinateur de Security Store — ainsi que l’analyste SOC qui exécute votre notebook — doit comprendre à quoi sert chaque section sans lire le code. Placez une cellule Markdown au-dessus de chaque bloc de code expliquant l’objectif, les entrées, les sorties et la sortie attendue. Les réviseurs traitent les blocs-notes peu clairs comme un échec difficile.
Tester le notebook
Les tests nécessitent la preuve que le notebook s’exécute de bout en bout sur des données réalistes et produit une table de sortie utilisable.
Test de fumée sur petite piscine
Exécutez le notebook de bout en bout pour vérifier que chaque cellule s'exécute sans erreur :
- Redémarrez le noyau pour effacer tout état obsolète.
- Exécutez toutes les cellules de haut en bas : chaque cellule doit se terminer sans erreur.
Si une cellule de transformation prend plus de 5 minutes sur Small, vos filtres d’entrée sont trop lâches. Réduisez la plage de dates ou le nombre de colonnes projetées avant de passer à une plus grande échelle.
Valider la table de sortie
Vérifiez que la table de sortie a été créée et contient les données attendues :
- Dans le panneau Tables Lake de l’extension Sentinel, actualisez et confirmez que votre table de sortie s’affiche avec le schéma attendu.
- Exécutez une cellule de vérification :
verify_df = data_provider.read_table("EntraGroups_Processed_SPRK")
print("Row count:", verify_df.count())
verify_df.printSchema()
verify_df.show(5, truncate=False)
Effectuer un test de montée en charge sur un pool Moyen ou Grand
Vérifiez que le notebook donne des résultats cohérents avec des tailles de pool plus grandes :
- Réexécutez le notebook sur un pool Moyen (et Grand si votre jeu de données le justifie).
- Vérifiez que le nombre de lignes et la distribution des colonnes correspondent à ceux de l'exécution sur le pool Petit. S’ils diffèrent, vous avez une transformation non déterministe qui a besoin d’une investigation.
Tests de cas limites
- Entrée vide : pointez vers une table ou une plage de dates ne contenant aucune ligne. Le notebook doit gérer l'échec correctement ou générer une sortie vide, et non planter.
- Dérive du schéma : si une colonne est ajoutée à votre table d’entrée, le notebook doit toujours s’exécuter. Ne supposez jamais un ordre de position.
Planifier le notebook en tant que travail
La plupart des solutions de notebooks publiées s'exécutent selon une planification : référence horaire, analyse quotidienne des anomalies, etc. L’extension Sentinel transforme tout bloc-notes enregistré en un travail planifié qui s’exécute sans assistance sur un pool Spark managé.
Créer le travail
Pour convertir le notebook en tâche planifiée, procédez comme suit :
- Ouvrez votre bloc-notes dans VS Code.
- Sélectionnez Créer un travail de planification dans le bloc-notes, puis choisissez Utiliser un bloc-notes existant lorsque vous y êtes invité.
Pour plus d’informations, consultez Créer et gérer des travaux de notebook Jupyter.
Configurer la tâche
Pour configurer le travail planifié, renseignez les champs suivants :
- Saisissez un Nom du Job en casse kebab décrivant le notebook (par exemple,
failed-signin-baseline-hourly). - Saisissez une Description en une phrase décrivant l’objectif de la tâche et sa table de sortie.
- Sélectionnez la taille du pool Spark que vous avez validée lors du test. Ne surdimensionnez pas le pool : les travaux s'exécutent sur ce pool à chaque invocation.
- Pour la planification, choisissez À la demande pour les exécutions manuelles ou planifiées avec une fréquence répétée (minute, horaire, quotidien, hebdomadaire ou mensuel).
- Sélectionnez Envoyer pour publier le travail.
Vérifier la tâche
Après l’envoi, vérifiez que le travail s’exécute correctement :
Basculez vers le panneau Travaux dans l’extension Sentinel. Votre travail doit apparaître.
Sélectionnez la tâche >Exécuter maintenant pour lancer immédiatement une validation.
Une fois l’exécution terminée, passez à l’onglet Historique des exécutions pour consulter les journaux et les temps d’exécution.
Important
Les travaux envoyés sont découplés de votre fichier local .ipynb . La modification du fichier local ne met pas à jour le travail en cours d’exécution. Pour mettre à jour un travail : ouvrez-le dans le panneau >Télécharger le bloc-notes> Modifier > le travail>Envoyer pour charger la version mise à jour.
Afficher le travail dans le portail Defender
Accédez à Microsoft Sentinel>Exploration du lac de données>Tâches. Vous pouvez activer ou désactiver la planification et afficher l’historique des exécutions ici, mais ne peut pas modifier le bloc-notes à partir du portail.
Empaqueter et publier votre solution notebook
Une fois que votre notebook est testé et matérialisé, empaquetez-le pour le déploiement auprès des clients. Pour obtenir des instructions détaillées sur l’empaquetage, consultez Empaqueter et publier des solutions de graphiques et de notebooks Microsoft Sentinel.
Résolution des problèmes
Création de notebooks
| Symptôme | Cause et correction probables |
|---|---|
MicrosoftSentinelProvider introuvable |
L’extension n’est pas connectée ou vous avez ouvert un noyau non Spark. Connectez-vous à l’extension Microsoft Sentinel et sélectionnez le runtime Microsoft Sentinel lorsque vous y êtes invité. |
| La cellule reste bloquée sur « Démarrage de la session Spark » | Le démarrage de la première cellule prend 3 à 5 minutes. Après 6 minutes, vérifiez l’indicateur d’utilisation de vCore dans la barre d’état : votre pool peut être en capacité. Essayez une taille de pool plus petite. |
save_as_table échoue avec un accès refusé sur le niveau analytique |
L'identité msg-resources-<guid> gérée par data-lake n'a pas de contributeur Log Analytics sur l'espace de travail Log Analytics. Affectez-le conformément aux prérequis et réessayez. |
| La table de sortie s’affiche dans le panneau Tables Lake , mais elle est vide |
.filter() a probablement supprimé toutes les lignes. Ajoutez un affichage du nombre de lignes juste avant save_as_table pour localiser le problème. |
Pour plus d’informations, consultez résolution des problèmes liés aux notebooks.
Planification de tâche
| Symptôme | Cause et correction probables |
|---|---|
Les modifications apportées au local .ipynb ne sont pas prises en compte dans la tâche planifiée |
Les travaux envoyés sont découplés du fichier local. Téléchargez le travail à partir de VS Code,modifiez-le, puis utilisez > Envoyer pour charger la nouvelle version. |
| Le travail s'exécute, mais ne génère aucune sortie | Vérifiez l’onglet Historique des exécutions dans le panneau Travaux : le journal des exécutions affiche généralement la cellule défaillante. La cause la plus fréquente est que le notebook lit une table à laquelle l'identité utilisée pour l'exécution n'a pas accès. |
Pour plus d’informations, consultez résolution des problèmes liés aux notebooks.
Contenu connexe
- Intégrer au lac de données Microsoft Sentinel à partir du portail Defender
- Les notebooks Jupyter et le lac de données Microsoft Sentinel
- Exécuter des notebooks sur le lac de données Microsoft Sentinel
- Créer et gérer des tâches de notebook Jupyter