Dostosowywanie wdrożeń repozytorium (publiczna wersja zapoznawcza)

Istnieją dwa podstawowe sposoby dostosowywania wdrożenia zawartości repozytorium do obszarów roboczych usługi Microsoft Sentinel. Każda metoda używa różnych plików i składni, więc rozważ te przykłady, aby rozpocząć pracę.

  • Zmodyfikuj przepływ pracy usługi GitHub lub potok DevOps, aby dostosować opcje wdrażania, takie jak wyzwalacz wdrożenia połączenia, ścieżka wdrożenia lub użycie wdrożeń inteligentnych.

  • Użyj nowo wprowadzonego pliku konfiguracji, aby kontrolować kolejność priorytetowych wdrożeń zawartości, wybrać wykluczanie określonych plików zawartości z tych wdrożeń lub mapowanie plików parametrów na określone pliki zawartości.

Ważne

Funkcja repozytoriów usługi Microsoft Sentinel jest obecnie dostępna w wersji zapoznawczej. Zobacz Dodatkowe warunki użytkowania dla wersji zapoznawczych platformy Microsoft Azure, aby uzyskać dodatkowe postanowienia prawne dotyczące funkcji platformy Azure, które są dostępne w wersji beta, wersji zapoznawczej lub w inny sposób nie zostały jeszcze wydane w wersji ogólnodostępnej.

Wymagania wstępne i zakres

Usługa Microsoft Sentinel obecnie obsługuje połączenia z repozytoriami GitHub i Azure DevOps. Przed połączeniem obszaru roboczego usługi Microsoft Sentinel z repozytorium kontroli źródła upewnij się, że masz następujące elementy:

  • Rola właściciela w grupie zasobów, która zawiera obszar roboczy usługi Microsoft Sentinel lub kombinację ról Administracja istratora dostępu użytkowników i współautora usługi Sentinel w celu utworzenia połączenia
  • Dostęp współpracownika do repozytorium GitHub lub narzędzia Project Administracja istrator dostępu do repozytorium Usługi Azure DevOps
  • Akcje włączone dla usług GitHub i Pipelines w usłudze Azure DevOps
  • Upewnij się, że niestandardowe pliki zawartości, które chcesz wdrożyć w obszarach roboczych, znajdują się w odpowiednich szablonach usługi Azure Resource Manager (ARM)

Aby uzyskać więcej informacji, zobacz Weryfikowanie zawartości.

Dostosowywanie przepływu pracy lub potoku

Domyślny przepływ pracy wdraża tylko zawartość zmodyfikowaną od ostatniego wdrożenia na podstawie zatwierdzeń w repozytorium. Mogą jednak być potrzebne inne dostosowania, takie jak konfigurowanie różnych wyzwalaczy wdrażania lub wdrażanie zawartości wyłącznie z określonego folderu głównego.

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

Aby dostosować przepływ pracy wdrażania usługi 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 i 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>].

    Na 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 sekcję on w kodzie, która opisuje zdarzenie wyzwalające uruchomienie przepływu pracy.

      Domyślnie ta konfiguracja jest ustawiona na on: pushwartość , co oznacza, że przepływ pracy jest wyzwalany przy każdym wypchnięciu do połączonej gałęzi, w tym zarówno modyfikacji istniejącej zawartości, jak i dodawania nowej zawartości do repozytorium. Na 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`
      

      Możesz na przykład zmienić te ustawienia, aby zaplanować okresowe uruchamianie przepływu pracy lub połączyć różne zdarzenia przepływu pracy.

      Aby uzyskać więcej informacji, zobacz dokumentację usługi GitHub dotyczącą konfigurowania zdarzeń przepływu pracy.

    • Aby wyłączyć wdrożenia inteligentne: zachowanie wdrożeń inteligentnych jest oddzielone od omówionego wyzwalacza wdrażania. Przejdź do jobs sekcji przepływu pracy. Przełącz wartość domyślną smartDeployment z true na false. Po zatwierdzeniu tej zmiany funkcja wdrażania inteligentnego jest wyłączona, a wszystkie przyszłe wdrożenia tego połączenia ponownie wdrażają wszystkie odpowiednie pliki zawartości repozytorium do połączonych obszarów roboczych.

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

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

      Ta domyślna konfiguracja oznacza, że przepływ pracy wdrażania jest wyzwalany w dowolnym momencie wypychania zawartości do dowolnej części gałęzi.

      W dalszej części pliku jobs sekcja zawiera następującą konfigurację domyślną: directory: '${{ github.workspace }}'. Ten wiersz wskazuje, że cała gałąź usługi GitHub znajduje się w ścieżce wdrożenia zawartości bez filtrowania ścieżek folderów.

      Aby wdrożyć zawartość tylko z określonej ścieżki folderu, dodaj ją do paths konfiguracji i directory . Aby na przykład 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'
      

Aby uzyskać więcej informacji, zobacz dokumentację usługi GitHub dotyczącą funkcji GitHub Actions i edytowanie przepływów pracy usługi GitHub.

Ważne

W usługach GitHub i Azure DevOps upewnij się, że ścieżka wyzwalacza i katalogi ścieżki wdrażania są spójne.

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 JSON zawierającego wartości parametrów. Następnie zamapuj te pliki JSON parametru na skojarzone z nimi pliki zawartości usługi Sentinel, aby lepiej skalować wdrożenia w różnych obszarach roboczych. Istnieje kilka sposobów mapowania plików parametrów na pliki usługi Sentinel, a potok wdrażania repozytoriów uwzględnia je w następującej kolejności:

A diagram showing the precedence of parameter file mappings.

  1. Czy istnieje mapowanie w pliku sentinel-deployment.config? Aby uzyskać więcej informacji, zobacz Dostosowywanie konfiguracji połączenia.
  2. Czy istnieje plik parametrów mapowanych w obszarze roboczym? Tak, jest to plik parametrów w tym samym katalogu co pliki zawartości kończące się ciągiem .parameters-WorkspaceID<>.json
  3. Czy istnieje domyślny plik parametrów? Tak, każdy plik parametrów w tym samym katalogu co pliki zawartości kończące się .parameters.json

Zaleca się mapowanie plików parametrów za pomocą pliku konfiguracji lub przez określenie identyfikatora obszaru roboczego w nazwie pliku, aby uniknąć starć w scenariuszach z wieloma wdrożeniami.

Ważne

Po ustaleniu dopasowania pliku parametrów na podstawie powyższego pierwszeństwa mapowania potok zignoruje wszystkie pozostałe mapowania.

Modyfikowanie zamapowanego pliku parametrów wymienionego w pliku sentinel-deployment.config wyzwala wdrożenie sparowanego pliku zawartości. Dodanie lub zmodyfikowanie pliku .parameters-WorkspaceID><.json lub pliku .parameters.json powoduje również wdrożenie sparowanych plików zawartości wraz z nowo zmodyfikowanymi parametrami, chyba że obowiązują mapowania parametrów wyższego pierwszeństwa. Inne pliki zawartości nie są wdrażane, o ile 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 na odpowiednie pliki zawartości, określanie priorytetów określonej zawartości we wdrożeniach i wykluczanie określonej zawartości z wdrożeń.

  1. Utwórz plik sentinel-deployment.config w katalogu głównym repozytorium. Dodanie, usunięcie lub zmodyfikowanie tego pliku konfiguracji spowoduje pełne wdrożenie całej zawartości w repozytorium zgodnie ze zaktualizowaną konfiguracją.

    Screenshot of a repository root directory. The RepositoriesSampleContent is shown with the location of the sentinel-deployment.config file.

  2. Uwzględnij zawartość ustrukturyzowaną w formacie JSON w trzech opcjonalnych sekcjach, "prioritizedcontentfiles":, "excludecontentfiles":i "parameterfilemappings":. Jeśli nie zostaną uwzględnione żadne sekcje lub plik config zostanie pominięty, proces wdrażania nadal działa. 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 CICD usługi Sentinel.

{
  "prioritizedcontentfiles": [
    "parsers/Sample/ASimAuthenticationAWSCloudTrail.json",
    "workbooks/sample/TrendMicroDeepSecurityAttackActivity_ARM.json",
    "Playbooks/PaloAlto-PAN-OS/PaloAltoCustomConnector/azuredeploy.json"
  ], 
  "excludecontentfiles": [
     "Detections/Sample/PaloAlto-PortScanning.json",
     "parameters"
  ],
  "parameterfilemappings": {
    "879001c8-2181-4374-be7d-72e5dc69bd2b": {
      "Playbooks/PaloAlto-PAN-OS/Playbooks/PaloAlto-PAN-OS-BlockIP/azuredeploy.json": "parameters/samples/parameter-file-1.json"
    },
    "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 określić priorytety plików zawartoś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ć priorytety 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 zawartości, zmodyfikuj sekcję "excludecontentfiles": z pełnymi nazwami ścieżek poszczególnych plików zawartości .json.

  • Aby mapować parametry:

    Skrypt wdrażania akceptuje trzy metody mapowania parametrów zgodnie z opisem w temacie Skalowanie wdrożeń przy użyciu plików parametrów. Parametry mapowania za pośrednictwem pliku sentinel-deployment.config mają najwyższy priorytet i gwarantuje, że dany plik parametrów jest mapowany na skojarzone z nim pliki zawartości. Po prostu zmodyfikuj sekcję "parameterfilemappings": przy użyciu identyfikatora obszaru roboczego połączenia docelowego i pełnych nazw ścieżek poszczególnych plików .json.

Następne kroki

Dostępne jest przykładowe repozytorium demonstrujące plik konfiguracji wdrożenia i wszystkie trzy metody mapowania parametrów. Aby uzyskać więcej informacji, zobacz Przykładowe repozytoria CICD usługi Sentinel.

Rozważ następujące zasoby, aby uzyskać więcej informacji na temat szablonów usługi ARM: