Azure PowerShell kullanarak birden çok Azure Güvenlik Duvarı kuralı ekleme veya değiştirme

Bu makalede, Azure PowerShell kullanarak birden çok Azure Güvenlik Duvarı kuralını verimli bir şekilde ekleme ve değiştirme adımları gösterilmektedir. Bu makaledeki adımları izleyerek güncelleştirme süresini kısaltabilir ve yapılandırma çakışmalarını önleyebilirsiniz.

Önkoşullar

Başlamadan önce aşağıdakilere sahip olduğunuzdan emin olun:

  • Mevcut Azure Güvenlik Duvarı veya Azure Güvenlik Duvarı İlkesi ile Bir Azure aboneliği
  • Azure PowerShell yüklendi ve yapılandırıldı
  • Güvenlik duvarı ilkelerini değiştirmek için uygun izinler
  • Üretime uygulamadan önce değişiklikleri doğrulamak için bir test ortamı

Genel Bakış

Azure Güvenlik Duvarı'na veya Azure Güvenlik Duvarı İlkesi'ne yeni kurallar eklediğinizde, toplam güncelleştirme süresini kısaltmak ve olası çakışmaları önlemek için aşağıdaki yaklaşımı kullanın:

  1. Azure Güvenlik Duvarı veya Azure Güvenlik Duvarı İlkesi nesnesini alın.
  2. Tüm yeni kuralları ekleyin ve yerel nesnede diğer istenen değişiklikleri yapın. Bunları mevcut bir kural koleksiyonuna ekleyebilir veya gerektiğinde yenilerini oluşturabilirsiniz.
  3. Güvenlik Duvarı veya Güvenlik Duvarı İlkesi güncelleştirmelerini yalnızca tüm değişiklikler tamamlandığında gönder.

Bu yaklaşım atomik güncelleştirmeler sağlar ve yapılandırma çakışması riskini azaltır.

Aşağıdaki bölümlerde yeni DNAT kuralları ekleme ve güvenlik duvarı ilkesindeki mevcut kuralları güncelleştirme işlemleri gösterilmektedir. Aşağıdaki durumlarda da aynı ilkelere uymanız gerekir:

  • Uygulama veya Ağ kurallarını güncelleştirme
  • Klasik kurallarla yönetilen bir güvenlik duvarını güncelleştirme
  • Mevcut kural yapılandırmalarını değiştirme

Önemli

Belirli gereksinimleriniz için beklendiği gibi çalıştığını doğrulamak amacıyla bu yordamları her zaman önce bir test politikasında test edin.

Azure'a bağlanma ve bağlamı ayarlama

Azure hesabınıza bağlanın ve bağlamı hedef aboneliğinize ayarlayın:

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

Güvenlik duvarı ilkesi nesnelerini alma

Güvenlik duvarı ilkesi, kural koleksiyonu grubu ve değiştirmek istediğiniz belirli kural koleksiyonu için yerel nesneler oluşturun:

$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>"}

Yeni kurallar ekleme

Yeni kurallar tanımlama

Kural koleksiyonuna eklemek istediğiniz yeni DNAT kurallarını tanımlayın:

$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>"

Kural koleksiyonuna kural ekleme

Yeni kuralları yerel kural koleksiyonu nesnesine ekleyin:

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

Uyarı

Bu adımda gerektiği kadar kural ekleyebilirsiniz. Son adımda Azure'ı güncelleştirene kadar yerel nesnede tüm değişiklikler yapılır.

Mevcut kuralları güncelleştirme

Kural koleksiyonundaki mevcut kuralları değiştirmek için:

Mevcut kuralları bulma ve değiştirme

Var olan bir kuralı ada göre bulun ve özelliklerini değiştirin:

# 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."
}

Mevcut kuralları kaldırma

Bir kuralı koleksiyondan kaldırmak için:

# 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."
}

Koleksiyondaki tüm kuralları listeleme

Koleksiyondaki tüm geçerli kuralları görüntülemek için:

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

Değişiklikleri Azure'a uygulama

Yerel nesnelerde tüm değişikliklerinizi yaptıktan sonra Azure'da kural koleksiyonu grubunu güncelleştirin:

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)"
}

Önemli

Bu adım, Azure'da yapılan tüm değişiklikleri uygular. Bu komutu üretimde çalıştırmadan önce yapılandırmanızı kapsamlı bir şekilde test ettiğinizden emin olun.

Değişiklikleri doğrulama

İlkeyi güncelleştirdikten sonra, değişikliklerinizin doğru uygulandığını doğrulayın:

# 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

Kaynakları temizle

Bu öğretici için test kaynakları oluşturduysanız, ücretlerden kaçınmak için bunları kaldırabilirsiniz. Kaynak grubunu sildiğinizde, güvenlik duvarını ve tüm ilgili kaynakları da silersiniz.

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

Dikkat

Bu komutu yalnızca kaynak grubundaki tüm kaynakları silmek istiyorsanız çalıştırın. Bu eylem geri alınamaz.

Sonraki Adımlar

Azure Güvenlik Duvarı ilkeleri ve kural yönetimi hakkında daha fazla bilgi edinmek için aşağıdaki makalelere bakın: