Personnaliser les déploiements de référentiels

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. Avant de commencer, vérifiez que les conditions préalables requises pour la connexion au référentiel et le déploiement sont en place.

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

Prérequis

Pour personnaliser un déploiement de référentiel, vous avez besoin d’une connexion de référentiel existante. Pour en créer un, consultez Déployer du contenu personnalisé à partir de votre référentiel. Après avoir créé la connexion, vérifiez que vous répondez à ces exigences :

  • 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 le flux de travail ou le pipeline 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 flux 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 du code qui décrit l’événement déclenchant 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, voir Configurer les événements de workflow dans la documentation GitHub.

    • Pour désactiver les déploiements intelligents :

      Le comportement de déploiement intelligent est configuré séparément du déclencheur du workflow dans la on section. Accédez à la jobs section de votre workflow. Remplacez la valeur par défaut smartDeployment de true par false. 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 flux de déploiement est déclenché chaque fois que ce contenu est envoyé à n’importe quelle partie de la branche connectée.

      Dans la jobs section, la configuration par défaut inclut directory: '${{ github.workspace }}'. Le directory paramètre indique que toute la branche GitHub est dans le chemin du déploiement du contenu, sans filtrage pour les chemins de dossier.

      Pour déployer du contenu uniquement à partir d’un chemin de dossier spécifique, ajoutez-le aux configurations paths 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 syntaxe du workflow GitHub Actions pour les filtres de chemin dans la documentation GitHub.

Important

Dans GitHub comme dans Azure DevOps, veillez à ce que les répertoires des chemins du déclencheur et de déploiement restent cohérents.

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.

Important

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.

Important

La création, la suppression ou la modification du fichier sentinel-deployment.config déclenche un déploiement complet de tout le contenu du référentiel en fonction de la configuration mise à jour.

  1. Créez le fichiersentinel-deployment.config à la racine de votre dépôt.

    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 l’un des chemins de contenu. Utilisez plutôt la barre oblique « / ».

  • Pour prioriser 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 sensible au facteur temps à cette section afin de prioriser 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 "excludecontentfiles": section avec les noms complets des chemins individuels .json fichiers de contenu.

  • Pour cartographier les paramètres :

    Le script de déploiement accepte trois méthodes de mappage (mappages de fichiers de configuration, fichiers de paramètres mappés à l’espace de travail et fichiers de paramètres par défaut), 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 "parameterfilemappings": avec l’ID de l’espace de travail de votre connexion cible et les chemins d’accès complets de chaque fichier .json.