Freigeben über


Hinzufügen oder Ändern mehrerer Azure Firewall-Regeln mithilfe von Azure PowerShell

In diesem Artikel erfahren Sie, wie Sie mehrere Azure Firewall-Regeln mithilfe von Azure PowerShell effizient hinzufügen und ändern können. Wenn Sie die Schritte in diesem Artikel ausführen, können Sie die Aktualisierungszeit reduzieren und Konfigurationskonflikte vermeiden.

Voraussetzungen

Bevor Sie beginnen, stellen Sie sicher, dass Sie folgendes haben:

  • Ein Azure-Abonnement mit einer vorhandenen Azure-Firewall- oder Azure-Firewallrichtlinie
  • Azure PowerShell installiert und konfiguriert
  • Geeignete Berechtigungen zum Ändern von Firewallrichtlinien
  • Eine Testumgebung zum Überprüfen von Änderungen vor der Anwendung auf die Produktion

Überblick

Wenn Sie der Azure-Firewall- oder Azure-Firewallrichtlinie neue Regeln hinzufügen, verwenden Sie den folgenden Ansatz, um die Gesamtaktualisierungszeit zu reduzieren und potenzielle Konflikte zu vermeiden:

  1. Rufen Sie das Azure Firewall- oder Azure Firewall Policy-Objekt ab.
  2. Fügen Sie alle neuen Regeln hinzu, und führen Sie andere gewünschte Änderungen im lokalen Objekt aus. Sie können sie einer vorhandenen Regelsammlung hinzufügen oder nach Bedarf neue erstellen.
  3. Senden Sie die Firewall- oder Firewallrichtlinien-Aktualisierungen erst dann per Push, wenn alle Änderungen vorgenommen wurden.

Dieser Ansatz gewährleistet atomrelevante Updates und reduziert das Risiko von Konfigurationskonflikten.

In den folgenden Abschnitten wird gezeigt, wie Sie neue DNAT-Regeln hinzufügen und vorhandene Regeln in einer Firewallrichtlinie aktualisieren. Sie sollten die gleichen Prinzipien befolgen, wenn Sie:

  • Aktualisieren von Anwendungs- oder Netzwerkregeln
  • Aktualisieren einer Firewall, die mit klassischen Regeln verwaltet wird
  • Ändern vorhandener Regelkonfigurationen

Von Bedeutung

Testen Sie diese Verfahren immer zuerst in einer Testrichtlinie, um sicherzustellen, dass sie für Ihre spezifischen Anforderungen erwartungsgemäß funktionieren.

Herstellen einer Verbindung mit Azure und Festlegen des Kontexts

Stellen Sie eine Verbindung mit Ihrem Azure-Konto her, und legen Sie den Kontext auf Ihr Zielabonnement fest:

Connect-AzAccount
Set-AzContext -Subscription "<Subscription ID>"

Abrufen von Firewallrichtlinienobjekten

Erstellen Sie lokale Objekte für die Firewallrichtlinie, die Regelsammlungsgruppe und die spezifische Regelsammlung, die Sie ändern möchten:

$policy = Get-AzFirewallPolicy -Name "<Policy Name>" -ResourceGroupName "<Resource Group Name>"
$natrulecollectiongroup = Get-AzFirewallPolicyRuleCollectionGroup -Name "<Rule Collection Group Name>" -ResourceGroupName "<Resource Group Name>" -AzureFirewallPolicyName "<Firewall Policy Name>"
$existingrulecollection = $natrulecollectiongroup.Properties.RuleCollection | Where-Object {$_.Name -eq "<rule collection name>"}

Hinzufügen neuer Regeln

Definieren neuer Regeln

Definieren Sie die neuen DNAT-Regeln, die Sie der Regelsammlung hinzufügen möchten:

$newrule1 = New-AzFirewallPolicyNatRule -Name "dnat-rule1" -Protocol "TCP" -SourceAddress "<Source Address>" -DestinationAddress "<Destination Address>" -DestinationPort "<Destination Port>" -TranslatedAddress "<Translated Address>" -TranslatedPort "<Translated Port>"
$newrule2 = New-AzFirewallPolicyNatRule -Name "dnat-rule2" -Protocol "TCP" -SourceAddress "<Source Address>" -DestinationAddress "<Destination Address>" -DestinationPort "<Destination Port>" -TranslatedAddress "<Translated Address>" -TranslatedPort "<Translated Port>"

Hinzufügen von Regeln zur Regelsammlung

Fügen Sie dem lokalen Regelsammlungsobjekt die neuen Regeln hinzu:

$existingrulecollection.Rules.Add($newrule1)
$existingrulecollection.Rules.Add($newrule2)

Hinweis

Sie können in diesem Schritt beliebig viele Regeln hinzufügen. Alle Änderungen werden am lokalen Objekt vorgenommen, bis Sie Azure im letzten Schritt aktualisieren.

Aktualisieren vorhandener Regeln

So ändern Sie vorhandene Regeln in der Regelsammlung:

Suchen und Ändern vorhandener Regeln

Suchen Sie eine vorhandene Regel anhand des Namens, und ändern Sie deren Eigenschaften:

# Find the existing rule
$existingRule = $existingrulecollection.Rules | Where-Object {$_.Name -eq "existing-rule-name"}

# Modify rule properties
if ($existingRule) {
    $existingRule.SourceAddresses = @("10.0.0.0/8", "192.168.0.0/16")
    $existingRule.DestinationPorts = @("80", "443")
    $existingRule.TranslatedAddress = "10.1.1.100"
    $existingRule.TranslatedPort = "8080"
    Write-Host "Rule '$($existingRule.Name)' updated successfully."
} else {
    Write-Warning "Rule 'existing-rule-name' not found."
}

Entfernen vorhandener Regeln

So entfernen Sie eine Regel aus der Auflistung:

# Find and remove the rule
$ruleToRemove = $existingrulecollection.Rules | Where-Object {$_.Name -eq "rule-to-delete"}
if ($ruleToRemove) {
    $existingrulecollection.Rules.Remove($ruleToRemove)
    Write-Host "Rule '$($ruleToRemove.Name)' removed successfully."
} else {
    Write-Warning "Rule 'rule-to-delete' not found."
}

Auflisten aller Regeln in der Sammlung

So zeigen Sie alle aktuellen Regeln in der Auflistung an:

# Display all rules
$existingrulecollection.Rules | Select-Object Name, Protocol, SourceAddresses, DestinationAddresses, DestinationPorts, TranslatedAddress, TranslatedPort | Format-Table

Anwenden von Änderungen auf Azure

Nachdem Sie alle Änderungen an den lokalen Objekten vorgenommen haben, aktualisieren Sie die Regelsammlungsgruppe in Azure:

try {
    Set-AzFirewallPolicyRuleCollectionGroup -Name "<Rule Collection Group Name>" -FirewallPolicyObject $policy -Priority 200 -RuleCollection $natrulecollectiongroup.Properties.RuleCollection
    Write-Host "Firewall policy updated successfully."
} catch {
    Write-Error "Failed to update firewall policy: $($_.Exception.Message)"
}

Von Bedeutung

In diesem Schritt werden alle Änderungen auf Azure angewendet. Stellen Sie sicher, dass Sie Ihre Konfiguration gründlich getestet haben, bevor Sie diesen Befehl in der Produktion ausführen.

Überprüfen von Änderungen

Überprüfen Sie nach dem Aktualisieren der Richtlinie, ob Ihre Änderungen ordnungsgemäß angewendet wurden:

# Refresh the policy object and verify changes
$updatedPolicy = Get-AzFirewallPolicy -Name "<Policy Name>" -ResourceGroupName "<Resource Group Name>"
$updatedRuleGroup = Get-AzFirewallPolicyRuleCollectionGroup -Name "<Rule Collection Group Name>" -ResourceGroupName "<Resource Group Name>" -AzureFirewallPolicyName "<Firewall Policy Name>"

# Display the updated rules
$updatedRuleCollection = $updatedRuleGroup.Properties.RuleCollection | Where-Object {$_.Name -eq "<rule collection name>"}
$updatedRuleCollection.Rules | Select-Object Name, Protocol, SourceAddresses, DestinationAddresses | Format-Table

Bereinigen von Ressourcen

Wenn Sie Testressourcen für dieses Lernprogramm erstellt haben, können Sie sie entfernen, um Gebühren zu vermeiden. Wenn Sie die Ressourcengruppe löschen, löschen Sie auch die Firewall und alle zugehörigen Ressourcen.

Remove-AzResourceGroup -Name "<Resource Group Name>" -Force

Vorsicht

Führen Sie diesen Befehl nur aus, wenn Sie alle Ressourcen in der Ressourcengruppe löschen möchten. Diese Aktion kann nicht rückgängig gemacht werden.

Nächste Schritte

Weitere Informationen zu Azure Firewall-Richtlinien und -Regelverwaltung finden Sie in den folgenden Artikeln: