Personnaliser les déploiements de référentiels (préversion publique)

Il existe deux méthodes principales pour personnaliser le déploiement du contenu de votre référentiel sur Microsoft Sentinel espaces de travail. Chaque méthode utilise des fichiers et une syntaxe différents. Tenez compte de ces exemples pour commencer.

Méthode de personnalisation Options de déploiement couvertes
Flux de travail GitHub
Pipeline DevOps
Personnaliser le déclencheur de déploiement de votre connexion
Personnaliser votre chemin de déploiement
Activation des déploiements intelligents
Fichiers de configuration Contrôler l’ordre de priorité de vos déploiements de contenu
Choisir d’exclure des fichiers de contenu spécifiques des déploiements
Mettre à l’échelle les déploiements sur différents espaces de travail en mappant des fichiers de paramètres à des fichiers de contenu spécifiques

Importante

La fonctionnalité Dépôts Microsoft Sentinel est actuellement en préversion. Consultez les Conditions d’utilisation supplémentaires de Microsoft Azure Previews pour obtenir d’autres conditions légales qui s’appliquent aux fonctionnalités Azure en version bêta, en préversion ou qui ne sont pas encore publiées en disponibilité générale.

Configuration requise

Pour personnaliser un déploiement de référentiels, une connexion de dépôt doit exister. Pour plus d’informations sur la création de la connexion, consultez Déployer du contenu personnalisé à partir de votre dépôt. Une fois la connexion établie, les conditions préalables suivantes s’appliquent :

  • Accès collaborateur à votre dépôt GitHub ou accès administrateur de projet à votre dépôt Azure DevOps
  • Actions activées pour GitHub et Pipelines activés pour Azure DevOps
  • Vérifiez que les fichiers de contenu personnalisés que vous souhaitez déployer dans vos espaces de travail sont dans un format pris en charge. Pour connaître les formats pris en charge, consultez Planifier le contenu de votre dépôt.

Pour plus d’informations sur les types de contenu déployables, consultez Planifier le contenu de votre dépôt.

Personnaliser le workflow ou le pipeline

Le workflow par défaut déploie uniquement le contenu modifié depuis le dernier déploiement, en fonction des validations dans le référentiel. Personnalisez pour configurer différents déclencheurs de déploiement ou pour déployer du contenu exclusivement à partir d’un dossier racine spécifique.

Sélectionnez l’un des onglets suivants en fonction de votre type de connexion :

Pour personnaliser votre workflow de déploiement GitHub :

  1. Dans GitHub, accédez à votre dépôt et recherchez votre workflow dans le répertoire .github/workflows .

    Le fichier de flux de travail est le fichier YML commençant par sentinel-deploy-xxxxx.yml. Ouvrez ce fichier et le nom du flux de travail s’affiche sur la première ligne et a la convention de nommage par défaut suivante : Deploy Content to <workspace-name> [<deployment-id>].

    Par exemple : name: Deploy Content to repositories-demo [xxxxx-dk5d-3s94-4829-9xvnc7391v83a]

  2. Sélectionnez le bouton crayon en haut à droite de la page pour ouvrir le fichier à modifier, puis modifiez le déploiement comme suit :

    • Pour modifier le déclencheur de déploiement, mettez à jour la on section dans le code, qui décrit l’événement qui déclenche l’exécution du workflow.

      Par défaut, cette configuration est définie sur on: push, ce qui signifie que le workflow est déclenché à n’importe quel envoi (push) vers la branche connectée, y compris les modifications apportées au contenu existant et les ajouts de nouveau contenu au référentiel. Par exemple :

      on:
          push:
              branches: [ main ]
              paths:
              - `**`
              - `!.github/workflows/**` # this filter prevents other workflow changes from triggering this workflow
              - `.github/workflows/sentinel-deploy-<deployment-id>.yml`
      

      Modifiez ces paramètres, par exemple, pour planifier l’exécution périodique du flux de travail ou pour combiner différents événements de flux de travail.

      Pour plus d’informations, consultez la documentation GitHub sur la configuration des événements de flux de travail.

    • Pour désactiver les déploiements intelligents : le comportement des déploiements intelligents est distinct du déclencheur de déploiement abordé. Accédez à la jobs section de votre workflow. Basculez la smartDeployment valeur par défaut de à truefalse. Une fois cette modification validée, la fonctionnalité de déploiement intelligent est désactivée et tous les déploiements futurs pour cette connexion redéployent tous les fichiers de contenu pertinents du dépôt dans les espaces de travail connectés.

    • Pour modifier le chemin de déploiement :

      Dans la configuration par défaut indiquée pour la on section, les caractères génériques (**) de la première ligne de la paths section indiquent que la branche entière se trouve dans le chemin des déclencheurs de déploiement.

      Cette configuration par défaut signifie qu’un workflow de déploiement est déclenché chaque fois que du contenu est envoyé à n’importe quelle partie de la branche.

      Plus loin dans le fichier, la jobs section inclut la configuration par défaut suivante : directory: '${{ github.workspace }}'. Cette ligne indique que la branche GitHub entière se trouve dans le chemin d’accès pour le déploiement de contenu, sans filtrage pour les chemins d’accès aux dossiers.

      Pour déployer du contenu à partir d’un chemin d’accès de dossier spécifique uniquement, ajoutez-le à la fois à la paths configuration et .directory Par exemple, pour déployer du contenu uniquement à partir d’un dossier racine nommé SentinelContent, mettez à jour votre code comme suit :

      paths:
      - `SentinelContent/**`
      - `!.github/workflows/**` # this filter prevents other workflow changes from triggering this workflow
      - `.github/workflows/sentinel-deploy-<deployment-id>.yml`
      
      ...
          directory: '${{ github.workspace }}/SentinelContent'
      

Pour plus d’informations, consultez la documentation GitHub sur l’GitHub Actions et la modification des workflows GitHub.

Importante

Dans GitHub et Azure DevOps, veillez à maintenir la cohérence des répertoires de chemin d’accès du déclencheur et du chemin de déploiement.

Mettre à l’échelle vos déploiements avec des fichiers de paramètres

Plutôt que de passer des paramètres en tant que valeurs inline dans vos fichiers de contenu, envisagez d’utiliser un fichier de paramètres Bicep ou un fichier JSON qui contient les valeurs des paramètres. Ensuite, mappez ces fichiers de paramètres aux fichiers de contenu Microsoft Sentinel associés pour mieux mettre à l’échelle vos déploiements sur différents espaces de travail.

Il existe plusieurs façons de mapper des fichiers de paramètres aux fichiers de contenu. Gardez à l’esprit que les fichiers de paramètres Bicep prennent uniquement en charge les modèles de fichiers Bicep, mais les fichiers de paramètres JSON prennent en charge les deux. Le pipeline de déploiement de référentiels prend en compte les fichiers de paramètres dans l’ordre suivant :

Diagramme montrant la priorité des mappages de fichiers de paramètres.

  1. Existe-t-il un mappage dans le sentinel-deployment.config?
    Pour plus d’informations, consultez Personnaliser la configuration de votre connexion.

  2. Existe-t-il un fichier de paramètres mappé à l’espace de travail ? Oui, les fichiers de contenu se trouvent dans le même répertoire avec un fichier de paramètres mappé à l’espace de travail correspondant à l’un des modèles suivants :
    .<WorkspaceID.bicepparam.parameters-WorkspaceID>
    <>.json

  3. Existe-t-il un fichier de paramètres par défaut ? Oui, les fichiers de contenu se trouvent dans le même répertoire avec un fichier de paramètres correspondant à l’un des modèles suivants :
    .bicepparam
    .parameters.json

Évitez les conflits avec plusieurs déploiements d’espace de travail en mappant vos fichiers de paramètres via le fichier de configuration ou en spécifiant l’ID de l’espace de travail dans le nom de fichier.

Importante

Une fois qu’une correspondance de fichier de paramètres est déterminée en fonction de la priorité de mappage, le pipeline ignore tous les mappages restants.

La modification du fichier de paramètres mappé répertorié dans le sentinel-deployment.config déclenche le déploiement de son fichier de contenu couplé. L’ajout ou la modification d’un fichier de paramètres mappés à l’espace de travail ou d’un fichier de paramètres par défaut déclenche également un déploiement des fichiers de contenu couplés avec les paramètres nouvellement modifiés, sauf si un mappage de paramètres de priorité plus élevé est en place. Les autres fichiers de contenu ne sont pas déployés tant que la fonctionnalité de déploiements intelligents est toujours activée dans le fichier de définition de workflow/pipeline.

Personnaliser la configuration de votre connexion

Le script de déploiement pour les référentiels prend en charge l’utilisation d’un fichier de configuration de déploiement pour chaque branche de dépôt à compter de juillet 2022. Le fichier JSON de configuration vous permet de mapper les fichiers de paramètres aux fichiers de contenu pertinents, de hiérarchiser le contenu spécifique dans les déploiements et d’exclure du contenu spécifique des déploiements.

  1. Créez le fichiersentinel-deployment.config à la racine de votre dépôt. L’ajout, la suppression ou la modification de ce fichier de configuration déclenche un déploiement complet de tout le contenu du dépôt en fonction de la configuration mise à jour.

    Capture d’écran d’un répertoire racine de dépôt. RepositoriesSampleContent s’affiche avec l’emplacement du fichier sentinel-deployment.config.

  2. Incluez votre contenu structuré dans trois sections facultatives, "prioritizedcontentfiles":, "excludecontentfiles":et "parameterfilemappings":. Si aucune section n’est incluse ou si le fichier .config est omis, le processus de déploiement s’exécute toujours. Les sections non valides ou non reconnues sont ignorées.

Voici un exemple du contenu entier d’un fichier sentinel-deployment.config valide. Cet exemple se trouve également dans l’exemple de référentiels CICD Microsoft Sentinel.

{
  "prioritizedcontentfiles": [
    "parsers/Sample/ASimAuthenticationAWSCloudTrail.json",
    "workbooks/sample/TrendMicroDeepSecurityAttackActivity_ARM.json",
    "Playbooks/PaloAlto-PAN-OS/PaloAltoCustomConnector/azuredeploy.bicep"
  ], 
  "excludecontentfiles": [
     "Detections/Sample/PaloAlto-PortScanning.json",
     "parameters"
  ],
  "parameterfilemappings": {
    "879001c8-2181-4374-be7d-72e5dc69bd2b": {
      "Playbooks/PaloAlto-PAN-OS/Playbooks/PaloAlto-PAN-OS-BlockIP/azuredeploy.bicep": "parameters/samples/auzredeploy.bicepparam"
    },
    "9af71571-7181-4cef-992e-ef3f61506b4e": {
      "Playbooks/Enrich-SentinelIncident-GreyNoiseCommunity-IP/azuredeploy.json": "path/to/any-parameter-file.json"
    }
  },
  "DummySection": "This shouldn't impact deployment"
}

Remarque

N’utilisez pas la barre oblique inverse « \ » dans les chemins d’accès de contenu. Utilisez plutôt la barre oblique « / ».

  • Pour hiérarchiser les fichiers de contenu :

    À mesure que la quantité de contenu dans votre dépôt augmente, les temps de déploiement peuvent augmenter. Ajoutez du contenu respectant le temps à cette section pour hiérarchiser son déploiement lorsqu’un déclencheur se produit.

    Ajoutez des noms de chemin d’accès complets à la "prioritizedcontentfiles": section. La correspondance de caractères génériques n’est pas prise en charge pour l’instant.

  • Pour exclure les fichiers de contenu, modifiez la section avec les "excludecontentfiles": noms de chemin d’accès complets des fichiers de contenu .json individuels.

  • Pour mapper les paramètres :

    Le script de déploiement accepte trois méthodes de mappage des paramètres, comme décrit dans Mettre à l’échelle vos déploiements avec des fichiers de paramètres. Le mappage des paramètres via le sentinel-deployment.config est prioritaire et garantit qu’un fichier de paramètres donné est mappé à ses fichiers de contenu associés. Modifiez la section avec l’ID "parameterfilemappings": d’espace de travail de votre connexion cible et les noms de chemin d’accès complets des fichiers .json individuels.

Un exemple de référentiel est disponible montrant le fichier de configuration de déploiement et les trois méthodes de mappage de paramètres. Pour plus d’informations, consultez Microsoft Sentinel exemple de référentiels CICD.