Erstellen von Diagnoseeinstellungen im großen Maßstab mithilfe von benutzerdefinierten Azure-Richtlinien

Azure Policy- und Richtlinieninitiativen bieten eine Methode, um die Protokollierung im großen Maßstab mithilfe von Diagnoseeinstellungen für Azure Monitor zu ermöglichen. In diesem Artikel wird beschrieben, wie Sie eine benutzerdefinierte Richtlinie für Azure-Ressourcen erstellen, die nicht über eine integrierte Richtlinie verfügen. Informationen zum Erstellen von Diagnoseeinstellungen für Azure-Ressourcen mit integrierten Richtlinien finden Sie unter "Erstellen von Diagnoseeinstellungen im großen Maßstab mithilfe integrierter Azure-Richtlinien".

Voraussetzungen

  • Um Richtliniendefinitionen, Initiativen und Zuordnungen zu erstellen, benötigen Sie die Rolle " Mitwirkender ressourcenrichtlinie " oder eine Rolle, die diese Berechtigungen enthält, z. B. "Besitzer", in dem Bereich, in dem Sie arbeiten.
  • Zur deployIfNotExists Behebung erfordert die Richtlinienzuweisung eine verwaltete Identität. Erteilen Sie dieser Identität eine Rolle mit der Berechtigung zum Erstellen von Diagnoseeinstellungen im Zuordnungsbereich, z. B. "Mitwirkender überwachen" oder "Log Analytics Mitwirkender".

Verwenden von Protokollkategoriengruppen

Protokollkategoriengruppen enthalten ähnliche Arten von Protokollen. Kategoriegruppen erleichtern es, in einem einzigen Befehl auf mehrere Protokolle zu verweisen.

Kategoriegruppe Inhalt
allLogs Alle verfügbaren Protokolle für die Ressource.
audit Alle Überwachungsprotokolle für die Ressource.

Verwenden Sie eine Kategoriegruppe, um eine Richtlinie zu definieren, die dynamisch aktualisiert wird, wenn der Gruppe neue Protokollkategorien hinzugefügt werden.

Erstellen einer benutzerdefinierten Richtliniendefinition

Erstellen Sie für Ressourcentypen, die nicht über eine integrierte Richtlinie verfügen, eine benutzerdefinierte Richtliniendefinition. Erstellen Sie die Richtlinie manuell im Azure-Portal, indem Sie eine vorhandene integrierte Richtlinie kopieren und dann für Ihren Ressourcentyp ändern. Stattdessen können Sie die Richtlinie auch programmgesteuert mithilfe eines Skripts im PowerShell-Katalog erstellen.

Das Skript Create-AzDiagPolicy erstellt Richtliniendateien für einen bestimmten Ressourcentyp. Installieren Sie die Dateien mithilfe von PowerShell oder dem Azure CLI. Erstellen Sie mit folgendem Verfahren eine benutzerdefinierte Richtliniendefinition für Diagnoseeinstellungen:

  1. Stellen Sie sicher, dass Azure PowerShell installiert ist.

  2. Installieren Sie das Skript mit dem folgenden Befehl:

    Install-Script -Name Create-AzDiagPolicy
    
  3. Führen Sie das Skript mit den Parametern aus, die angeben, wohin die Protokolle gesendet werden sollen. Geben Sie bei der Eingabeaufforderung einen Abonnement- und Ressourcentyp an.

    Wenn Sie beispielsweise eine Richtliniendefinition erstellen möchten, die Protokolle an einen Log Analytics Arbeitsbereich sendet und Azure Event Hubs, verwenden Sie den folgenden Befehl:

    Create-AzDiagPolicy.ps1 -ExportLA -ExportEH -ExportDir ".\PolicyFiles"
    

    Alternativ können Sie einen Abonnement- und Ressourcentyp im Befehl angeben. Um beispielsweise eine Richtliniendefinition zu erstellen, die Protokolle an einen Log Analytics Arbeitsbereich sendet und für SQL Server Datenbanken Azure Event Hubs, verwenden Sie den folgenden Befehl:

    Create-AzDiagPolicy.ps1 -SubscriptionID <subscription id> -ResourceType Microsoft.Sql/servers/databases -ExportLA -ExportEH -ExportDir ".\PolicyFiles"
    
  4. Das Skript erstellt separate Ordner für jede Richtliniendefinition. Jeder Ordner enthält drei Dateien: azurepolicy.json, , azurepolicy.rules.jsonund azurepolicy.parameters.json. Zum manuellen Erstellen der Richtlinie im Azure-Portal kopieren und einfügen Sie den Inhalt, da azurepolicy.json er die gesamte Richtliniendefinition enthält. Verwenden Sie die anderen beiden Dateien mit PowerShell oder der Azure CLI, um die Richtliniendefinition über eine Befehlszeile zu erstellen.

    In den folgenden Beispielen wird gezeigt, wie die Richtliniendefinition sowohl über PowerShell als auch über die Azure CLI installiert wird. Jedes Beispiel enthält Metadaten zur Angabe einer Kategorie von Monitoring, um die neue Richtliniendefinition mit den integrierten Richtliniendefinitionen zu gruppieren.

    New-AzPolicyDefinition -name "Deploy Diagnostic Settings for SQL Server database to Log Analytics workspace" -policy .\Apply-Diag-Settings-LA-Microsoft.Sql-servers-databases\azurepolicy.rules.json -parameter .\Apply-Diag-Settings-LA-Microsoft.Sql-servers-databases\azurepolicy.parameters.json -mode All -Metadata '{"category":"Monitoring"}'
    
    az policy definition create --name 'deploy-diag-setting-sql-database--workspace' --display-name 'Deploy Diagnostic Settings for SQL Server database to Log Analytics workspace'  --rules 'Apply-Diag-Settings-LA-Microsoft.Sql-servers-databases\azurepolicy.rules.json' --params 'Apply-Diag-Settings-LA-Microsoft.Sql-servers-databases\azurepolicy.parameters.json' --subscription 'AzureMonitor_Docs' --mode All
    

Erstellen einer Initiative

Anstatt für jede Richtliniendefinition eine Zuweisung zu erstellen, ist es eine gängige Strategie, eine Initiative zu erstellen, die die Richtliniendefinitionen umfasst, um Diagnoseeinstellungen für jeden Azure-Dienst zu erstellen. Erstellen Sie abhängig von der Art der Verwaltung Ihrer Umgebung eine Zuweisung zwischen der Initiative und einer Verwaltungsgruppe, einem Abonnement oder einer Ressourcengruppe. Diese Strategie bietet folgende Vorteile:

  • Erstellen Sie eine einzelne Zuweisung für die Initiative anstelle mehrerer Zuweisungen für jeden Ressourcentyp. Verwenden Sie dieselbe Initiative für mehrere Überwachungsgruppen, Abonnements oder Ressourcengruppen.
  • Ändern Sie die Initiative, wenn Sie einen neuen Ressourcentyp oder ein neues Ziel hinzufügen müssen. Ihre anfänglichen Anforderungen können z. B. das Senden von Daten nur an einen Log Analytics Arbeitsbereich sein, aber später möchten Sie Azure Event Hubs hinzufügen. Ändern Sie die Initiative, anstatt neue Zuweisungen zu erstellen.

Ausführliche Informationen zum Erstellen einer Initiative finden Sie unter Erstellen und Zuweisen einer Initiativedefinition. Beachten Sie die folgenden Empfehlungen:

  • Legen Sie "Kategorie auf Überwachung " fest, um sie mit verwandten integrierten und benutzerdefinierten Richtliniendefinitionen zu gruppieren.
  • Anstatt die Details für den Log Analytics Arbeitsbereich anzugeben und Azure Event Hubs für Richtliniendefinitionen, die in der Initiative enthalten sind, verwenden Sie einen gemeinsamen Initiative-Parameter. Mit diesem Parameter können Sie bei Bedarf einen gemeinsamen Wert für alle Richtliniendefinitionen angeben und diesen Wert ändern.

Screenshot, der die Einstellungen zur Initiativdefinition zeigt.

Weisen Sie die Initiative zu

Weisen Sie die Initiative abhängig vom Umfang ihrer zu überwachenden Ressourcen einer Azure-Verwaltungsgruppe, einem Abonnement oder einer Ressourcengruppe zu. Eine Verwaltungsgruppe ist nützlich für bereichsbezogene Richtlinien, insbesondere wenn Ihre Organisation über mehrere Abonnements verfügt.

Screenshot der grundlegenden Einstellungen zum Zuweisen einer Initiative zu einem Log Analytics-Arbeitsbereich im Azure-Portal.

Mithilfe von Initiative-Parametern können Sie den Arbeitsbereich oder alle anderen Details einmal für alle Richtliniendefinitionen in der Initiative angeben.

Screenshot: Initiativenparameter auf der Registerkarte „Parameter“

Erstellen einer Behebungsaufgabe

Azure Policy wendet die Initiative auf jede Ressource an, wenn Sie die Ressource erstellen. Eine Wartungsaufgabe stellt die Richtliniendefinitionen in der Initiative für vorhandene Ressourcen bereit und erstellt Diagnoseeinstellungen für diese Ressourcen.

Wenn Sie die Zuweisung mithilfe des Azure-Portals erstellen, können Sie gleichzeitig einen Wartungstask erstellen. Ausführliche Informationen zur Behebung finden Sie unter "Korrigieren nicht kompatibler Ressourcen mit Azure-Richtlinie".

Screenshot: Korrektur eines Log Analytics-Arbeitsbereichs im Rahmen einer Initiative.

Überprüfen der Diagnoseeinstellungen

Vergewissern Sie sich nach Abschluss der Zuweisung und etwaiger Korrekturaufgaben, dass diagnoseeinstellungen für Ihre Ressourcen vorhanden sind:

  1. Wechseln Sie im Azure-Portal zu einer Ressource im Zuordnungsbereich, und wählen Sie dann diagnoseeinstellungen unter "Überwachung" aus. Vergewissern Sie sich, dass eine Einstellung Protokolle an die von Ihnen konfigurierten Ziele sendet.

  2. Alternativ können Sie die Diagnoseeinstellungen für eine Ressource mithilfe der Azure CLI auflisten:

    az monitor diagnostic-settings list --resource <resource-id>