Anpassen von Repositorybereitstellungen (Public Preview)
Es gibt zwei primäre Möglichkeiten, die Bereitstellung Ihrer Repositoryinhalte an Microsoft Sentinel-Arbeitsbereiche anzupassen. Jede Methode verwendet verschiedene Dateien und eine andere Syntax, sodass Sie diese Beispiele für den Einstieg berücksichtigen sollten.
Ändern Sie die GitHub-Workflow- oder DevOps-Pipeline, um Bereitstellungsoptionen wie den Bereitstellungstrigger Ihrer Verbindung, ihren Bereitstellungspfad oder die Nutzung intelligenter Bereitstellungen anzupassen.
Verwenden Sie die neu eingeführte Konfigurationsdatei, um die priorisierte Reihenfolge Ihrer Inhaltsbereitstellungen zu steuern, wählen Sie aus, dass bestimmte Inhaltsdateien aus diesen Bereitstellungen ausgeschlossen werden, oder ordnen Sie Parameterdateien bestimmten Inhaltsdateien zu.
Wichtig
Das Microsoft Sentinel-Feature Repositorys befindet sich derzeit in der Vorschauphase. Die zusätzlichen Nutzungsbestimmungen für Microsoft Azure-Vorschauen enthalten zusätzliche rechtliche Bedingungen, die für Azure-Features gelten, die sich in der Beta- oder Vorschauversion befinden bzw. anderweitig noch nicht zur allgemeinen Verfügbarkeit freigegeben sind.
Voraussetzungen und Umfang
Microsoft Sentinel unterstützt derzeit Verbindungen mit GitHub- und Azure DevOps-Repositorys. Stellen Sie sicher, dass Sie über Folgendes verfügen, bevor Sie Ihren Microsoft Sentinel-Arbeitsbereich mit Ihrem Repository für die Quellcodeverwaltung verbinden:
- Eine Rolle vom Typ Besitzer in der Ressourcengruppe, die Ihren Microsoft Sentinel-Arbeitsbereich enthält, oder eine Kombination aus den Rollen Benutzerzugriffsadministrator und Sentinel-Mitwirkender, um die Verbindung zu erstellen.
- Zugriff als Mitwirkende auf Ihr GitHub-Repository oder Zugriff als Projektadministratoren auf Ihr Azure DevOps-Repository
- Aktivierte Aktionen für GitHub und aktivierte Pipelines für Azure DevOps.
- Stellen Sie sicher, dass sich die benutzerdefinierten Inhaltsdateien, die Sie in Ihren Arbeitsbereichen bereitstellen möchten, in den entsprechenden ARM-Vorlagen (Azure Resource Manager) befinden.
Weitere Informationen finden Sie unter Überprüfen Ihrer Inhalte.
Anpassen des Workflows oder der Pipeline
Der Standardworkflow stellt nur Inhalte bereit, die seit der letzten Bereitstellung, geändert wurden und zwar basierend auf Commits für das Repository. Möglicherweise benötigen Sie jedoch andere Anpassungen, z. B. zum Konfigurieren verschiedener Bereitstellungstrigger oder zum Bereitstellen von Inhalten ausschließlich aus einem bestimmten Stammordner.
Wählen Sie je nach Verbindungstyp eine der folgenden Registerkarten aus:
So passen Sie Ihren GitHub-Bereitstellungsworkflow an:
Wechseln Sie auf GitHub zu Ihrem Repository, und suchen Sie im Verzeichnis .github/workflows nach Ihrem Workflow.
Die Workflowdatei ist die YML-Datei ab sentinel-deploy-xxxxx.yml. Wenn Sie diese Datei öffnen, wird der Name des Workflows in der ersten Zeile angezeigt und hat die folgende Standardnamenskonvention:
Deploy Content to <workspace-name> [<deployment-id>]
.Beispiel:
name: Deploy Content to repositories-demo [xxxxx-dk5d-3s94-4829-9xvnc7391v83a]
Klicken Sie rechts oben auf der Seite auf die Stiftschaltfläche, um die Datei zur Bearbeitung zu öffnen, und ändern Sie die Bereitstellung wie folgt:
Aktualisieren Sie zum Ändern des Bereitstellungstriggers den Codeabschnitt
on
. Darin wird das Ereignis beschrieben, das die Ausführung des Workflows auslöst.Standardmäßig ist diese Konfiguration auf
on: push
festgelegt. Das bedeutet, dass der Workflow bei jedem Pushvorgang für den verbundenen Branch ausgelöst wird. Dies schließt sowohl Änderungen an vorhandenen Inhalten als auch das Hinzufügen neuer Inhalte zum Repository ein. Zum Beispiel:on: push: branches: [ main ] paths: - `**` - `!.github/workflows/**` # this filter prevents other workflow changes from triggering this workflow - `.github/workflows/sentinel-deploy-<deployment-id>.yml`
Sie können diese Einstellungen ändern, um beispielsweise die regelmäßige Ausführung des Workflows zu planen oder verschiedene Workflowereignisse miteinander zu kombinieren.
Weitere Informationen zum Konfigurieren von Workflowereignissen finden Sie in der GitHub-Dokumentation.
So deaktivieren Sie intelligente Bereitstellungen: Das Verhalten intelligenter Bereitstellung ist unabhängig von dem oben beschriebenen Bereitstellungstrigger. Navigieren Sie zum Abschnitt
jobs
Ihres Workflows. Ändern Sie densmartDeployment
-Standardwert vontrue
auffalse
. Nach dem Commit dieser Änderung werden die Funktionen für intelligente Bereitstellungen deaktiviert, und alle zukünftigen Bereitstellungen für diese Verbindung stellen alle relevanten Inhaltsdateien des Repositorys in den verbundenen Arbeitsbereichen erneut bereit.So ändern Sie den Bereitstellungspfad:
In der dargestellten Standardkonfiguration für den Abschnitt
on
geben die Platzhalter (**
) in der ersten Zeile des Abschnittspaths
an, dass sich der gesamte Branch am Pfad für die Bereitstellungstrigger befindet.Diese Standardkonfiguration bedeutet, dass jedes Mal, wenn Inhalte an einen beliebigen Teil des Branchs gepusht werden, ein Bereitstellungsworkflow ausgelöst wird.
Der Abschnitt
jobs
weiter unten in der Datei enthält die folgende Standardkonfiguration:directory: '${{ github.workspace }}'
. Diese Zeile gibt an, dass sich der gesamte GitHub-Branch am Pfad für die Inhaltsbereitstellung befindet und nicht nach Ordnerpfaden gefiltert wird.Wenn Inhalte nur von einem bestimmten Ordnerpfad aus bereitgestellt werden sollen, fügen Sie ihn sowohl der Konfiguration
paths
als auch der Konfigurationdirectory
hinzu. Wenn Inhalte also beispielsweise nur aus einem Stammordner namensSentinelContent
bereitgestellt werden sollen, aktualisieren Sie Ihren Code wie folgt: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'
Weitere Informationen zu GitHub Actions sowie zur Bearbeitung von GitHub-Workflows finden Sie in der GitHub-Dokumentation.
Wichtig
Die Triggerpfad- und Bereitstellungspfadverzeichnisse müssen sowohl bei GitHub als auch bei Azure DevOps konsistent sein.
Skalieren Ihrer Bereitstellungen mithilfe von Parameterdateien
Anstatt Parameter als Inlinewerte in Ihren Inhaltsdateien zu übergeben, können Sie eine JSON-Datei verwenden, die die Parameterwerte enthält. Sie können diese JSON-Parameterdateien dann den entsprechenden Sentinel-Inhaltsdateien zuordnen, um Ihre Bereitstellungen über verschiedene Arbeitsbereiche hinweg besser skalieren zu können. Es gibt verschiedene Möglichkeiten für die Zuordnung von Parameterdateien zu Sentinel-Dateien, und die Bereitstellungspipeline für Repositorys berücksichtigt diese in der folgenden Reihenfolge:
- Gibt es eine Zuordnung in der Datei sentinel-deployment.config? Weitere Informationen finden Sie unter Anpassen der Verbindungskonfiguration.
- Gibt es eine Parameterdatei, die dem Arbeitsbereich zugeordnet ist? Es ist eine Parameterdatei im selben Verzeichnis wie die Inhaltsdateien, die auf .parameters-<Arbeitsbereichs-ID>.json endet.
- Gibt es eine Standardparameterdatei? Ja, eine beliebige Parameterdatei im selben Verzeichnis wie die Inhaltsdateien, die auf .parameters.json endet
Es wird empfohlen, die Parameterdateien über die Konfigurationsdatei oder durch Angabe der Arbeitsbereich-ID im Dateinamen zuzuordnen, um Konflikte in Szenarien mit mehreren Bereitstellungen zu vermeiden.
Wichtig
Sobald eine Übereinstimmung mit einer Parameterdatei auf Grundlage der oben genannten Zuordnungspriorität festgestellt wurde, ignoriert die Pipeline alle verbleibenden Zuordnungen.
Durch eine Änderung der in der sentinel-deployment.config aufgeführten zugeordneten Parameterdatei wird die Bereitstellung der zugehörigen Inhaltsdatei ausgelöst. Das Hinzufügen oder Ändern einer .parameters-<Arbeitsbereichs-ID>.json-Datei oder .parameters.json-Datei löst ebenfalls eine Bereitstellung der zugehörigen Inhaltsdateien zusammen mit den neu geänderten Parametern aus, sofern keine Parameterzuordnung mit einer höheren Priorität vorhanden ist. Andere Inhaltsdateien werden nicht bereitgestellt, solange die Funktion für intelligente Bereitstellungen in der Definitionsdatei für den Workflow/die Pipeline noch aktiviert ist.
Anpassen der Verbindungskonfiguration
Das Bereitstellungsskript für Repositorys unterstützt die Verwendung einer Bereitstellungskonfigurationsdatei für jede Repositoryverzweigung ab Juli 2022. Mit der JSON-Konfigurationsdatei können Sie Parameterdateien relevanten Inhaltsdateien zuordnen, bestimmte Inhalte in Bereitstellungen priorisieren und diese Inhalte aus Bereitstellungen ausschließen.
Erstellen Sie die Datei sentinel-deployment.config im Stammverzeichnis Ihres Repositorys. Wenn Sie die Konfigurationsdatei hinzufügen, löschen oder ändern, führt dies zu einer vollständigen Bereitstellung aller Inhalte im Repository gemäß der aktualisierten Konfiguration.
Fügen Sie JSON-strukturierte Inhalte in drei optionalen Abschnitten zu:
"prioritizedcontentfiles":
,"excludecontentfiles":
und"parameterfilemappings":
. Wenn keine Abschnitte enthalten sind oder die .config-Datei ausgelassen wird, wird der Bereitstellungsprozess trotzdem ausgeführt. Ungültige oder nicht erkannte Abschnitte werden ignoriert.
Hier finden Sie ein Beispiel für den gesamten Inhalt einer gültigen sentinel-deployment.config-Datei. Dieses Beispiel finden Sie auch im Beispiel für Sentinel CICD-Repositorys.
{
"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"
}
Hinweis
Verwenden Sie keine umgekehrten Schrägstriche „\“ in Inhaltspfaden. Verwenden Sie stattdessen den Schrägstrich „/“.
So priorisieren Sie Inhaltsdateien:
Mit wachsender Anzahl an Inhalten in Ihrem Repository erhöht sich die Bereitstellungszeit möglicherweise. Fügen Sie zeitkritische Inhalte zu diesem Abschnitt hinzu, um deren Bereitstellung zu priorisieren, wenn ein Trigger auftritt.
Fügen Sie vollständige Pfadnamen zum Abschnitt
"prioritizedcontentfiles":
hinzu. Das Abgleichen von Platzhaltern wird zu diesem Zeitpunkt nicht unterstützt.Ändern Sie den Abschnitt
"excludecontentfiles":
mit den vollständigen Pfadnamen einzelner JSON-Inhaltsdateien, um Inhaltsdateien auszuschließen.So ordnen Sie Parameter zu:
Das Bereitstellungsskript akzeptiert drei Methoden zum Zuordnen von Parametern, wie im Abschnitt Skalieren Ihrer Bereitstellungen mithilfe von Parameterdateien beschrieben. Die Zuordnung von Parametern über die Datei sentinel-deployment.config hat die höchste Priorität und garantiert, dass den zugehörigen Inhaltsdateien eine vorgegebene Parameterdatei zugeordnet wird. Ändern Sie einfach den Abschnitt
"parameterfilemappings":
mit der Arbeitsbereichs-ID Ihrer Zielverbindung und den vollständigen Pfadnamen der einzelnen JSON-Dateien.
Nächste Schritte
Es ist ein Beispielrepository verfügbar, das die Bereitstellungskonfigurationsdatei und alle drei Parameterzuordnungsmethoden demonstriert. Weitere Informationen finden Sie im Beispiel für Sentinel CICD-Repositorys.
Weitere Informationen zu ARM-Vorlagen finden Sie in diesen Ressourcen: