Personalizzare le distribuzioni del repository (anteprima pubblica)

Esistono due modi principali per personalizzare la distribuzione del contenuto del repository nelle aree di lavoro Microsoft Sentinel. Ogni metodo usa file e sintassi diversi, quindi prendere in considerazione questi esempi per iniziare.

Metodo di personalizzazione Opzioni di distribuzione descritte
Flusso di lavoro di GitHub
Pipeline DevOps
Personalizzare il trigger di distribuzione della connessione
Personalizzare il percorso di distribuzione
Abilitazione delle distribuzioni intelligenti
File di configurazione Controllare l'ordine in ordine di priorità delle distribuzioni di contenuto
Scegliere di escludere file di contenuto specifici dalle distribuzioni
Ridimensionare le distribuzioni tra aree di lavoro diverse eseguendo il mapping dei file dei parametri a file di contenuto specifici

Importante

La funzionalità Microsoft Sentinel Repository è attualmente disponibile in ANTEPRIMA. Per altre condizioni legali applicabili alle funzionalità di Azure in versione beta, in anteprima o non ancora rilasciate nella disponibilità generale, vedere le Condizioni aggiuntive per l'utilizzo per Microsoft Azure Previews.

Prerequisiti

Per personalizzare una distribuzione di repository, deve esistere una connessione al repository. Per altre informazioni sulla creazione della connessione, vedere Distribuire contenuto personalizzato dal repository. Dopo aver eseguito la connessione, si applicano i prerequisiti seguenti:

  • Accesso dei collaboratori al repository GitHub o all'accesso dell'amministratore di progetto al repository DevOps Azure
  • Azioni abilitate per GitHub e Pipeline abilitate per Azure DevOps
  • Assicurarsi che i file di contenuto personalizzati da distribuire nelle aree di lavoro siano in un formato supportato. Per i formati supportati, vedere Pianificare il contenuto del repository.

Per altre informazioni sui tipi di contenuto distribuibili, vedere Pianificare il contenuto del repository.

Personalizzare il flusso di lavoro o la pipeline

Il flusso di lavoro predefinito distribuisce solo il contenuto modificato dall'ultima distribuzione, in base ai commit nel repository. Personalizzare per configurare trigger di distribuzione diversi o per distribuire contenuto esclusivamente da una cartella radice specifica.

Selezionare una delle schede seguenti a seconda del tipo di connessione:

Per personalizzare il flusso di lavoro di distribuzione di GitHub:

  1. In GitHub passare al repository e trovare il flusso di lavoro nella directory .github/workflows .

    Il file del flusso di lavoro è il file YML che inizia con sentinel-deploy-xxxxx.yml. Aprire il file e il nome del flusso di lavoro viene visualizzato nella prima riga e ha la convenzione di denominazione predefinita seguente: Deploy Content to <workspace-name> [<deployment-id>].

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

  2. Selezionare il pulsante a matita in alto a destra della pagina per aprire il file per la modifica e quindi modificare la distribuzione nel modo seguente:

    • Per modificare il trigger di distribuzione, aggiornare la on sezione nel codice, che descrive l'evento che attiva l'esecuzione del flusso di lavoro.

      Per impostazione predefinita, questa configurazione è impostata on: pushsu , il che significa che il flusso di lavoro viene attivato in qualsiasi push nel ramo connesso, incluse sia le modifiche al contenuto esistente che le aggiunte di nuovo contenuto al repository. Ad esempio:

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

      Modificare queste impostazioni, ad esempio per pianificare l'esecuzione periodica del flusso di lavoro o per combinare diversi eventi del flusso di lavoro.

      Per altre informazioni, vedere la documentazione di GitHub sulla configurazione degli eventi del flusso di lavoro.

    • Per disabilitare le distribuzioni intelligenti: il comportamento delle distribuzioni intelligenti è separato dal trigger di distribuzione illustrato. Passare alla jobs sezione del flusso di lavoro. Impostare il smartDeployment valore predefinito da true a false. Dopo aver eseguito il commit di questa modifica, la funzionalità di distribuzione intelligente viene disattivata e tutte le distribuzioni future per questa connessione ridistribuirono tutti i file di contenuto pertinenti del repository nelle aree di lavoro connesse.

    • Per modificare il percorso di distribuzione:

      Nella configurazione predefinita visualizzata per la on sezione i caratteri jolly (**) nella prima riga della paths sezione indicano che l'intero ramo si trova nel percorso dei trigger di distribuzione.

      Questa configurazione predefinita significa che viene attivato un flusso di lavoro di distribuzione ogni volta che viene eseguito il push del contenuto in qualsiasi parte del ramo.

      Più avanti nel file, la jobs sezione include la configurazione predefinita seguente: directory: '${{ github.workspace }}'. Questa riga indica che l'intero ramo GitHub si trova nel percorso per la distribuzione del contenuto, senza filtrare i percorsi delle cartelle.

      Per distribuire il contenuto solo da un percorso di cartella specifico, aggiungerlo sia alla configurazione che paths alla directory . Ad esempio, per distribuire il contenuto solo da una cartella radice denominata SentinelContent, aggiornare il codice come indicato di seguito:

      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'
      

Per altre informazioni, vedere la documentazione di GitHub su GitHub Actions e modificare i flussi di lavoro di GitHub.

Importante

Sia in GitHub che in Azure DevOps, assicurarsi di mantenere coerenti il percorso del trigger e le directory del percorso di distribuzione.

Ridimensionare le distribuzioni con file di parametri

Invece di passare parametri come valori inline nei file di contenuto, provare a usare un file di parametri Bicep o un file JSON che contiene i valori dei parametri. Eseguire quindi il mapping di tali file di parametri ai file di contenuto Microsoft Sentinel associati per ridimensionare meglio le distribuzioni in aree di lavoro diverse.

Esistono diversi modi per eseguire il mapping dei file di parametri ai file di contenuto. Tenere presente che i file di parametri Bicep supportano solo i modelli di file Bicep, ma i file di parametri JSON supportano entrambi. La pipeline di distribuzione dei repository considera i file dei parametri nell'ordine seguente:

Diagramma che mostra la precedenza dei mapping dei file di parametri.

  1. È presente un mapping nella sentinel-deployment.config?
    Per altre informazioni, vedere Personalizzare la configurazione della connessione.

  2. È presente un file di parametri mappato all'area di lavoro? Sì, i file di contenuto si trovano nella stessa directory con un file di parametri mappato all'area di lavoro corrispondente a uno di questi modelli:
    .<WorkspaceID.bicepparam.parameters-WorkspaceID>
    <>.json

  3. È presente un file di parametri predefinito? Sì, i file di contenuto si trovano nella stessa directory con un file di parametri corrispondente a uno di questi modelli:
    .bicepparam
    .parameters.json

Evitare conflitti con più distribuzioni di aree di lavoro eseguendo il mapping dei file di parametri tramite il file di configurazione o specificando l'ID dell'area di lavoro nel nome file.

Importante

Una volta determinata la corrispondenza di un file di parametri in base alla precedenza del mapping, la pipeline ignora tutti i mapping rimanenti.

La modifica del file dei parametri mappati elencato nel sentinel-deployment.config attiva la distribuzione del file di contenuto associato. L'aggiunta o la modifica di un file di parametri mappati all'area di lavoro o di un file di parametri predefinito attiva anche una distribuzione dei file di contenuto associati insieme ai parametri appena modificati, a meno che non sia presente un mapping dei parametri con precedenza superiore. Gli altri file di contenuto non vengono distribuiti finché la funzionalità delle distribuzioni intelligenti è ancora abilitata nel file di definizione del flusso di lavoro/pipeline.

Personalizzare la configurazione della connessione

Lo script di distribuzione per i repository supporta l'utilizzo di un file di configurazione della distribuzione per ogni ramo del repository a partire da luglio 2022. Il file JSON di configurazione consente di eseguire il mapping dei file di parametri ai file di contenuto pertinenti, assegnare priorità a contenuti specifici nelle distribuzioni ed escludere contenuti specifici dalle distribuzioni.

  1. Creare il file sentinel-deployment.config nella radice del repository. L'aggiunta, l'eliminazione o la modifica di questo file di configurazione attiva una distribuzione completa di tutto il contenuto nel repository in base alla configurazione aggiornata.

    Screenshot di una directory radice del repository. RepositoriesSampleContent viene visualizzato con il percorso del file sentinel-deployment.config.

  2. Includere il contenuto strutturato in tre sezioni facoltative, "prioritizedcontentfiles":, "excludecontentfiles":e "parameterfilemappings":. Se non sono incluse sezioni o se il file .config viene omesso, il processo di distribuzione viene comunque eseguito. Le sezioni non valide o non riconosciute vengono ignorate.

Ecco un esempio dell'intero contenuto di un file disentinel-deployment.config valido. Questo esempio è disponibile anche nell'esempio Microsoft Sentinel repository CICD.

{
  "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"
}

Nota

Non usare il carattere barra rovesciata "\" in nessuno dei percorsi del contenuto. Usare invece la barra "/".

  • Per assegnare priorità ai file di contenuto:

    Man mano che aumenta la quantità di contenuto nel repository, i tempi di distribuzione possono aumentare. Aggiungere contenuto sensibile all'ora a questa sezione per assegnare priorità alla distribuzione quando si verifica un trigger.

    Aggiungere nomi di percorso completi alla "prioritizedcontentfiles": sezione. La corrispondenza con caratteri jolly non è attualmente supportata.

  • Per escludere i file di contenuto, modificare la "excludecontentfiles": sezione con i nomi di percorso completi dei singoli file di contenuto .json.

  • Per eseguire il mapping dei parametri:

    Lo script di distribuzione accetta tre metodi di mapping dei parametri, come descritto in Ridimensionare le distribuzioni con i file di parametri. Il mapping dei parametri tramite il sentinel-deployment.config ha la precedenza più alta e garantisce il mapping di un determinato file di parametri ai file di contenuto associati. Modificare la sezione con l'ID "parameterfilemappings": dell'area di lavoro della connessione di destinazione e i nomi dei percorsi completi dei singoli file di .json.

È disponibile un repository di esempio che illustra il file di configurazione della distribuzione e tutti e tre i metodi di mapping dei parametri. Per altre informazioni, vedere Microsoft Sentinel esempio di repository CICD.