如何使用 Azure 虛擬網絡 Manager 封鎖網路流量 - Azure PowerShell

本文將教你如何建立安全規則,阻擋指向 80 和 443 埠的外發網路流量,並將這些流量加入你的規則集合中。 如需詳細資訊,請參閱 安全性系統管理員規則。

必要條件

開始設定安全性規則之前,請先確認下列步驟:

建立安全管理設定

請使用 New-AzNetworkManagerSecurityAdminConfiguration. 建立安全管理設定。 這個配置包含了你在接下來章節中建立的規則集合和規則。

$config = @{
    Name = 'SecurityConfig'
    ResourceGroupName = 'myAVNMResourceGroup'
    NetworkManagerName = 'myAVNM'
}
$securityconfig = New-AzNetworkManagerSecurityAdminConfiguration @config

將網路群組加入設定群組

安全管理員設定適用於一個或多個網路群組。 這些步驟會將網路群組儲存在變數中,並將其加入設定群組。

  1. 將網路群組儲存在變數中,方法是使用 Get-AzNetworkManagerGroup。

    $ng = @{
        Name = 'myNetworkGroup'
        ResourceGroupName = 'myAVNMResourceGroup'
        NetworkManagerName = 'myAVNM'
    }
    $networkgroup = Get-AzNetworkManagerGroup @ng   
    
  2. 使用 New-AzNetworkManagerSecurityGroupItem 為網路群組建立安全性群組項目。

    $groupItem = New-AzNetworkManagerSecurityGroupItem -NetworkGroupId $networkgroup.id
    
  3. 建立組態群組,並加入上一個步驟中的群組項目。

    [System.Collections.Generic.List[Microsoft.Azure.Commands.Network.Models.PSNetworkManagerSecurityGroupItem]]$configGroup = @()  
    $configGroup.Add($groupItem) 
    

建立規則集合

使用 New-AzNetworkManagerSecurityAdminRuleCollection 建立安全性系統管理員規則集合。 這個集合適用於你在前一節建立的組態群組。

$collection = @{
    Name = 'myRuleCollection'
    ResourceGroupName = 'myAVNMResourceGroup'
    NetworkManagerName = 'myAVNM'
    ConfigName = 'SecurityConfig'
}
$rulecollection = New-AzNetworkManagerSecurityAdminRuleCollection @collection -AppliesToGroup $configGroup

為 80 和 443 埠建立拒絕規則

這些步驟定義規則的位址前綴與埠口,並建立一個規則, Block_HTTP_HTTPS 阻止埠 80 與 443 的外站流量。

  1. 使用 New-AzNetworkManagerAddressPrefixItem 定義來源和目的地位址前置詞及連接埠。

    $sourceip = @{
        AddressPrefix = 'Internet'
        AddressPrefixType = 'ServiceTag'
    }
    $sourceprefix = New-AzNetworkManagerAddressPrefixItem @sourceip
    
    $destinationip = @{
        AddressPrefix = '10.0.0.0/24'
        AddressPrefixType = 'IPPrefix'
    }
    $destinationprefix = New-AzNetworkManagerAddressPrefixItem @destinationip
    
    [System.Collections.Generic.List[string]]$sourcePortList = @() 
    $sourcePortList.Add("65500") 
    
    [System.Collections.Generic.List[string]]$destinationPortList = @() 
    $destinationPortList.Add("80")
    $destinationPortList.Add("443")
    
  2. 透過使用 New-AzNetworkManagerSecurityAdminRule來建立安全規則。

    $rule = @{
        Name = 'Block_HTTP_HTTPS'
        ResourceGroupName = 'myAVNMResourceGroup'
        NetworkManagerName = 'myAVNM'
        SecurityAdminConfigurationName = 'SecurityConfig'
        RuleCollectionName = 'myRuleCollection'
        Protocol = 'TCP'
        Access = 'Deny'
        Priority = '100'
        Direction = 'Outbound'
        SourceAddressPrefix = $sourceprefix
        SourcePortRange = $sourcePortList
        DestinationAddressPrefix = $destinationprefix
        DestinationPortRange = $destinationPortList
    }
    $securityrule = New-AzNetworkManagerSecurityAdminRule @rule
    

認可與提交部署

使用 Deploy-AzNetworkManagerCommit 將安全性設定提交到目標區域。 根據你先前建立的安全性管理員組態,建立 $configIds 清單,然後將其傳遞給提交作業。

[System.Collections.Generic.List[string]]$configIds = @()
$configIds.Add($securityconfig.Id)

$regions = @("westus")
$deployment = @{
    Name = 'myAVNM'
    ResourceGroupName = 'myAVNMResourceGroup'
    ConfigurationId = $configIds
    TargetLocation = $regions
    CommitType = 'SecurityAdmin'
}
Deploy-AzNetworkManagerCommit @deployment 

刪除安全性設定

如果您不再需要安全設定,請確認以下條件為真,以便您能刪除安全設定本身:

  • 目前沒有將任何組態部署到任何區域。
  • 刪除與安全性組態相關聯之規則集合中的所有安全性規則。

移除安全性設定部署

透過部署帶有 Deploy-AzNetworkManagerCommit的配置來移除安全部署。

[System.Collections.Generic.List[string]]$configIds = @()
[System.Collections.Generic.List[string]]$regions = @()   
$regions.Add("westus")     
$removedeployment = @{
    Name = 'myAVNM'
    ResourceGroupName = 'myAVNMResourceGroup'
    ConfigurationId = $configIds
    TargetLocation = $regions
    CommitType = 'SecurityAdmin'
}
Deploy-AzNetworkManagerCommit @removedeployment

拿掉安全性規則

使用 Remove-AzNetworkManagerSecurityAdminRule 移除你先前建立的安全性規則。

$removerule = @{
    Name = 'Block_HTTP_HTTPS'
    ResourceGroupName = 'myAVNMResourceGroup'
    NetworkManagerName = 'myAVNM'
    SecurityAdminConfigurationName = 'SecurityConfig'
    RuleCollectionName = 'myRuleCollection'
}
Remove-AzNetworkManagerSecurityAdminRule @removerule

移除安全性規則集合

$removecollection = @{
    Name = 'myRuleCollection'
    ResourceGroupName = 'myAVNMResourceGroup'
    NetworkManagerName = 'myAVNM'
    SecurityAdminConfigurationName = 'SecurityConfig'
}
Remove-AzNetworkManagerSecurityAdminRuleCollection @removecollection

刪除設定

使用 Remove-AzNetworkManagerSecurityAdminConfiguration 刪除安全性設定。

$removeconfig = @{
    Name = 'SecurityConfig'
    ResourceGroupName = 'myAVNMResourceGroup'
    NetworkManagerName = 'myAVNM'
}
Remove-AzNetworkManagerSecurityAdminConfiguration @removeconfig

下一步

深入瞭解 安全性系統管理員規則。