Dostosowywanie wdrożeń repozytorium

Istnieją dwa podstawowe sposoby dostosowywania wdrażania zawartości repozytorium do obszarów roboczych Microsoft Sentinel. Każda metoda używa różnych plików i składni, więc rozważ te przykłady, aby rozpocząć pracę. Przed rozpoczęciem upewnij się, że zostały spełnione wymagane wymagania wstępne dotyczące połączenia repozytorium i wdrożenia .

Metoda dostosowywania Omówione opcje wdrażania
Przepływ pracy usługi GitHub
potok DevOps
Dostosowywanie wyzwalacza wdrażania połączenia
Dostosowywanie ścieżki wdrożenia
Włączanie wdrożeń inteligentnych
Pliki konfiguracji Kontrolowanie priorytetowej kolejności wdrożeń zawartości
Wybierz , aby wykluczyć określone pliki zawartości z wdrożeń
Skalowanie wdrożeń w różnych obszarach roboczych przez mapowanie plików parametrów na określone pliki zawartości

Wymagania wstępne

Aby dostosować wdrożenie repozytorium, potrzebne jest istniejące połączenie repozytorium. Aby je utworzyć, zobacz Wdrażanie niestandardowej zawartości z repozytorium. Po utworzeniu połączenia upewnij się, że spełniasz następujące wymagania:

  • Dostęp współpracownika do repozytorium GitHub lub dostępu administratora projektu do repozytorium Azure DevOps
  • Akcje włączone dla usługi GitHub i potoków włączonych dla Azure DevOps
  • Upewnij się, że niestandardowe pliki zawartości, które chcesz wdrożyć w obszarach roboczych, mają obsługiwany format. Aby uzyskać obsługiwane formaty, zobacz Planowanie zawartości repozytorium.

Aby uzyskać więcej informacji na temat możliwych do wdrożenia typów zawartości, zobacz Planowanie zawartości repozytorium.

Dostosuj przepływ pracy lub potok

Domyślny przepływ pracy wdraża zawartość zmodyfikowaną tylko od czasu ostatniego wdrożenia na podstawie zatwierdzeń w repozytorium. Dostosuj workflow lub pipeline, aby skonfigurować różne wyzwalacze wdrożeń lub wdrażać treści wyłącznie z konkretnego folderu głównego.

Wybierz jedną z następujących kart w zależności od typu połączenia:

Aby dostosować swój workflow wdrażania na GitHub:

  1. W usłudze GitHub przejdź do repozytorium i znajdź przepływ pracy w katalogu .github/workflows .

    Plik przepływu pracy to plik YML rozpoczynający się od sentinel-deploy-xxxxx.yml. Otwórz ten plik, a nazwa przepływu pracy jest wyświetlana w pierwszym wierszu i ma następującą domyślną konwencję nazewnictwa: Deploy Content to <workspace-name> [<deployment-id>].

    Przykład: name: Deploy Content to repositories-demo [xxxxx-dk5d-3s94-4829-9xvnc7391v83a]

  2. Wybierz przycisk ołówka w prawym górnym rogu strony, aby otworzyć plik do edycji, a następnie zmodyfikuj wdrożenie w następujący sposób:

    • Aby zmodyfikować wyzwalacz wdrożenia, zaktualizuj on sekcję w kodzie, która opisuje zdarzenie uruchamiające uruchomienie przepływu pracy.

      Domyślnie ta konfiguracja ma ustawienie on: push, co oznacza, że przepływ pracy jest uruchamiany przy każdym wypchnięciu zmian do połączonej gałęzi, w tym zarówno przy modyfikacjach istniejącej zawartości, jak i przy dodawaniu nowej zawartości do repozytorium. Przykład:

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

      Zmień te ustawienia, na przykład, aby zaplanować okresowe uruchamianie przepływu pracy lub połączyć ze sobą różne zdarzenia przepływu pracy.

      Więcej informacji można znaleźć w artykule Konfiguracja zdarzeń workflow w dokumentacji GitHub.

    • Aby wyłączyć inteligentne wdrożenia:

      Inteligentne zachowanie wdrożenia jest konfigurowane oddzielnie od wyzwalacza workflow w on tej sekcji. Przejdź do jobs sekcji przepływu pracy. Przełącz wartość domyślną smartDeployment z true na false. Po zatwierdzeniu tej zmiany funkcja inteligentnego wdrażania jest wyłączona, a wszystkie przyszłe wdrożenia dla tego połączenia ponownie wdrażają wszystkie odpowiednie pliki zawartości repozytorium w połączonych obszarach roboczych.

    • Aby zmodyfikować ścieżkę wdrożenia:

      W domyślnej konfiguracji pokazanej dla on sekcji symbole wieloznaczne (**) w pierwszym wierszu paths sekcji wskazują, że cała gałąź znajduje się w ścieżce wyzwalaczy wdrożenia.

      Ta domyślna konfiguracja oznacza, że workflow wdrożenia jest uruchamiany za każdym razem, gdy te treści są przesyłane do dowolnej części połączonej gałęzi.

      W jobs sekcji domyślna konfiguracja obejmuje .directory: '${{ github.workspace }}' Ustawienie wskazuje, directory że cała gałąź GitHub znajduje się na ścieżce dla wdrożenia treści, bez filtrowania ścieżek folderów.

      Aby wdrożyć zawartość tylko z określonej ścieżki katalogu, dodaj ją zarówno do konfiguracji paths, jak i do konfiguracji directory. Na przykład aby wdrożyć zawartość tylko z folderu głównego o nazwie SentinelContent, zaktualizuj kod w następujący sposób:

      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'
      

Więcej informacji można znaleźć w składni workflow GitHub Actions dotyczącej filtrów ścieżek w dokumentacji GitHub.

Ważna

Zarówno w serwisie GitHub, jak i w usłudze Azure DevOps upewnij się, że katalogi ścieżki wyzwalania i ścieżki wdrożenia są zgodne.

Skalowanie wdrożeń przy użyciu plików parametrów

Zamiast przekazywać parametry jako wartości wbudowane w plikach zawartości, rozważ użycie pliku parametrów Bicep lub pliku JSON zawierającego wartości parametrów. Następnie przypisz te pliki parametrów do skojarzonych z nimi plików zawartości usługi Microsoft Sentinel, aby zwiększyć skalowalność wdrożeń w różnych obszarach roboczych.

Istnieje kilka sposobów przyporządkowania plików parametrów do plików treści. Pamiętaj, że pliki parametrów Bicep obsługują tylko szablony plików Bicep, ale pliki parametrów JSON obsługują oba te pliki. Potok wdrażania repozytoriów uwzględnia pliki parametrów w następującej kolejności:

Diagram przedstawiający pierwszeństwo mapowań plików parametrów.

  1. Czy istnieje mapowanie w sentinel-deployment.config?
    Aby uzyskać więcej informacji, zobacz Dostosowywanie konfiguracji połączenia.

  2. Czy istnieje plik parametrów mapowany na obszar roboczy? Tak, pliki zawartości znajdują się w tym samym katalogu co plik parametrów mapowany na obszar roboczy, pasujący do jednego z następujących wzorców:
    .<WorkspaceID>.bicepparam
    .parameters-<WorkspaceID>.json

  3. Czy istnieje domyślny plik parametrów? Tak, pliki zawartości znajdują się w tym samym katalogu z plikiem parametrów pasującym do jednego z następujących wzorców:
    .bicepparam
    .parameters.json

Unikaj starć z wieloma wdrożeniami obszaru roboczego, mapując pliki parametrów za pomocą pliku konfiguracji lub określając identyfikator obszaru roboczego w nazwie pliku.

Ważna

Po ustaleniu dopasowania pliku parametrów na podstawie priorytetu mapowania potok ignoruje wszystkie pozostałe mapowania.

Zmiana pliku parametrów wskazanego w pliku sentinel-deployment.config powoduje wdrożenie powiązanego z nim pliku zawartości. Dodanie lub zmodyfikowanie pliku parametrów mapowanego obszaru roboczego lub domyślnego pliku parametrów powoduje również wdrożenie sparowanych plików zawartości wraz z nowo zmodyfikowanymi parametrami, chyba że istnieje mapowanie parametrów wyższego pierwszeństwa. Inne pliki zawartości nie są wdrażane tak długo, jak długo funkcja wdrożeń inteligentnych jest nadal włączona w pliku definicji przepływu pracy/potoku.

Dostosowywanie konfiguracji połączenia

Skrypt wdrażania dla repozytoriów obsługuje użycie pliku konfiguracji wdrożenia dla każdej gałęzi repozytorium od lipca 2022 r. Plik JSON konfiguracji ułatwia mapowanie plików parametrów do odpowiednich plików zawartości, określanie priorytetów określonej zawartości we wdrożeniach i wykluczanie określonej zawartości z wdrożeń.

Ważna

Tworzenie, usuwanie lub modyfikowanie pliku sentinel-deployment.config wyzwala pełne wdrożenie całej zawartości repozytorium zgodnie ze zaktualizowaną konfiguracją.

  1. Utwórz plik sentinel-deployment.config w katalogu głównym repozytorium.

    Zrzut ekranu katalogu głównego repozytorium. Widoczny jest element RepositoriesSampleContent z pokazanym położeniem pliku sentinel-deployment.config.

  2. Uwzględnij zawartość strukturalną w trzech opcjonalnych sekcjach, "prioritizedcontentfiles":, "excludecontentfiles":i "parameterfilemappings":. Jeśli żadne sekcje nie zostaną uwzględnione lub plik .config zostanie pominięty, proces wdrażania nadal będzie uruchamiany. Nieprawidłowe lub nierozpoznane sekcje są ignorowane.

Oto przykład całej zawartości prawidłowego pliku sentinel-deployment.config . Ten przykład można również znaleźć w przykładzie repozytoriów Microsoft Sentinel 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"
}

Uwaga

Nie używaj znaku ukośnika odwrotnego "\" w żadnej ze ścieżek zawartości. Zamiast tego użyj ukośnika "/".

  • Aby priorytetyzować pliki treści:

    Wraz ze wzrostem ilości zawartości w repozytorium czas wdrażania może wzrosnąć. Dodaj zawartość wrażliwą na czas do tej sekcji, aby określić priorytet wdrożenia po wystąpieniu wyzwalacza.

    Dodaj pełne nazwy ścieżek do "prioritizedcontentfiles": sekcji. Dopasowywanie symboli wieloznacznych nie jest obecnie obsługiwane.

  • Aby wykluczyć pliki treści, zmodyfikuj sekcję "excludecontentfiles": pełnymi nazwami ścieżek poszczególnych .json plików.

  • Aby odwzorować parametry:

    Skrypt wdrażania akceptuje trzy metody mapowania parametrów (mapowania plików konfiguracji, pliki parametrów mapowanych w obszarze roboczym i pliki parametrów domyślnych), zgodnie z opisem w temacie Skalowanie wdrożeń przy użyciu plików parametrów. Mapowanie parametrów za pośrednictwem sentinel-deployment.config ma najwyższy priorytet i gwarantuje, że dany plik parametrów jest mapowany na skojarzone pliki zawartości. Zmodyfikuj sekcję "parameterfilemappings": przy użyciu identyfikatora obszaru roboczego połączenia docelowego i pełnych nazw ścieżek poszczególnych plików .json.