빠른 시작: Azure PowerShell 사용하여 Azure Firewall 정책 만들기 및 업데이트

이 빠른 시작에서는 Azure PowerShell을 사용하여 네트워크 및 애플리케이션 규칙으로 Azure Firewall 정책을 만듭니다. 또한 네트워크 및 애플리케이션 규칙을 추가하여 기존 정책을 업데이트합니다.

사전 요구 사항

  • Azure 구독이 아직 없는 경우 시작하기 전에 체험 계정을 만듭니다.

Azure Cloud Shell 사용

Azure는 브라우저를 통해 사용할 수 있는 대화형 셸 환경인 Azure Cloud Shell을 호스트합니다. Cloud Shell에서 Bash 또는 PowerShell을 사용하여 Azure 서비스 작업을 수행할 수 있습니다. 로컬 환경에 아무 것도 설치할 필요 없이 Azure Cloud Shell의 미리 설치된 명령을 사용하여 이 문서의 코드를 실행할 수 있습니다.

Azure Cloud Shell을 시작하려면 다음을 수행합니다.

옵션 예제/링크
코드 블록의 오른쪽 위 모서리에서 사용 을 선택합니다. 사용해보기 를 선택하면 코드가 Cloud Shell에 자동으로 복사되지 않습니다. Azure Cloud Shell에 대한 사용 예제
https://shell.azure.com으로 이동하거나 Cloud Shell 시작 버튼을 선택하여 브라우저에서 Cloud Shell을 엽니다. 새 창에서 Cloud Shell 시작
Azure Portal의 오른쪽 위에 있는 메뉴 모음에서 Cloud Shell 단추를 선택합니다. Azure Portal의 Cloud Shell 단추

이 문서의 코드를 Azure Cloud Shell에서 실행하려면 다음을 수행합니다.

  1. Cloud Shell을 시작합니다.

  2. 코드 블록의 복사 단추를 선택하여 코드를 복사합니다.

  3. Windows 및 Linux에서 Ctrl+Shift+V 를 선택하거나 macOS에서 Cmd+Shift+V 를 선택하여 코드를 Cloud Shell 세션에 붙여넣습니다.

  4. Enter 를 선택하여 코드를 실행합니다.

Azure에 로그인

Connect-AzAccount
Select-AzSubscription -Subscription "<sub name>"

네트워크 및 정책 설정

먼저 리소스 그룹과 가상 네트워크를 만듭니다. 그런 다음, Azure Firewall 정책을 만듭니다.

리소스 그룹 만들기

리소스 그룹에는 이 절차에 사용된 모든 리소스가 포함되어 있습니다.

New-AzResourceGroup -Name Test-FWpolicy-RG -Location "East US"

가상 네트워크 만들기

$ServerSubnet = New-AzVirtualNetworkSubnetConfig -Name subnet-1 -AddressPrefix 10.0.0.0/24
$testVnet = New-AzVirtualNetwork -Name Test-FWPolicy-VNET -ResourceGroupName Test-FWPolicy-RG -Location "East US" -AddressPrefix 10.0.0.0/8 -Subnet $ServerSubnet

방화벽 정책 만들기

New-AzFirewallPolicy -Name EUS-Policy -ResourceGroupName Test-FWPolicy-RG -Location "EAST US"

네트워크 규칙 컬렉션 그룹 만들기 및 새 규칙 추가

먼저 규칙 컬렉션 그룹을 만든 다음, 규칙을 통해 규칙 컬렉션을 추가합니다.

네트워크 규칙 컬렉션 그룹 만들기

$firewallpolicy = Get-AzFirewallPolicy -Name EUS-Policy -ResourceGroupName Test-FWPolicy-RG
$newnetworkrulecollectiongroup = New-AzFirewallPolicyRuleCollectionGroup  -Name "NetworkRuleCollectionGroup" -Priority 200 -ResourceGroupName Test-FWPolicy-RG -FirewallPolicyName EUS-Policy
$networkrulecollectiongroup = Get-AzFirewallPolicyRuleCollectionGroup -Name "NetworkRuleCollectionGroup" -ResourceGroupName Test-FWPolicy-RG -AzureFirewallPolicyName EUS-Policy

네트워크 규칙 만들기

$networkrule1= New-AzFirewallPolicyNetworkRule -Name NwRule1 -Description testRule1  -SourceAddress 10.0.0.0/24 -Protocol TCP -DestinationAddress 192.168.0.1/32 -DestinationPort 22 
$networkrule2= New-AzFirewallPolicyNetworkRule -Name NWRule2 -Description TestRule2  -SourceAddress 10.0.0.0/24 -Protocol UDP -DestinationAddress 192.168.0.10/32 -DestinationPort 1434

네트워크 규칙 컬렉션 만들기 및 새 규칙 추가

$newrulecollectionconfig=New-AzFirewallPolicyFilterRuleCollection -Name myfirstrulecollection -Priority 1000 -Rule $networkrule1,$networkrule2 -ActionType Allow
$newrulecollection = $networkrulecollectiongroup.Properties.RuleCollection.Add($newrulecollectionconfig)

네트워크 규칙 컬렉션 탭 업데이트

Set-AzFirewallPolicyRuleCollectionGroup -Name "NetworkRuleCollectionGroup" -Priority "200" -FirewallPolicyObject $firewallpolicy -RuleCollection $networkrulecollectiongroup.Properties.RuleCollection

출력

새 규칙 컬렉션 및 해당 규칙 보기:

$output = $networkrulecollectiongroup.Properties.GetRuleCollectionByName("myfirstrulecollection")
Write-Output  $output

기존 규칙 컬렉션에 네트워크 규칙 추가

기존 규칙 컬렉션이 생겼으므로 규칙을 더 추가할 수 있습니다.

기존 네트워크 규칙 그룹 컬렉션 얻기

$firewallpolicy = Get-AzFirewallPolicy -Name EUS-Policy -ResourceGroupName Test-FWPolicy-RG
$networkrulecollectiongroup = Get-AzFirewallPolicyRuleCollectionGroup -Name "NetworkRuleCollectionGroup" -ResourceGroupName Test-FWPolicy-RG -AzureFirewallPolicyName EUS-Policy 

새 네트워크 규칙 만들기

$newnetworkrule1 = New-AzFirewallPolicyNetworkRule -Name newNwRule01 -Description testRule01  -SourceAddress 10.0.0.0/24 -Protocol TCP -DestinationAddress 192.168.0.5/32 -DestinationPort 3389
$newnetworkrule2 = New-AzFirewallPolicyNetworkRule -Name newNWRule02 -Description TestRule02  -SourceAddress 10.0.0.0/24 -Protocol UDP -DestinationAddress 192.168.0.15/32 -DestinationPort 1434

네트워크 규칙 컬렉션 업데이트 및 새 규칙 추가

$getexistingrullecollection = $networkrulecollectiongroup.Properties.RuleCollection | where {$_.Name -match "myfirstrulecollection"}
$getexistingrullecollection.RuleS.Add($newnetworkrule1)
$getexistingrullecollection.RuleS.Add($newnetworkrule2)

네트워크 규칙 컬렉션 그룹 업데이트

Set-AzFirewallPolicyRuleCollectionGroup -Name "NetworkRuleCollectionGroup" -FirewallPolicyObject $firewallpolicy -Priority 200 -RuleCollection $networkrulecollectiongroup.Properties.RuleCollection

출력

방금 추가한 규칙 확인:

$output = $networkrulecollectiongroup.Properties.GetRuleCollectionByName("myfirstrulecollection")
Write-output $output

애플리케이션 규칙 컬렉션 만들기 및 새 규칙 추가

먼저 규칙 컬렉션 그룹을 만든 다음, 규칙을 통해 규칙 컬렉션을 추가합니다.

애플리케이션 규칙 컬렉션 만들기

$firewallpolicy = Get-AzFirewallPolicy -Name EUS-Policy -ResourceGroupName Test-FWPolicy-RG
$newapprulecollectiongroup = New-AzFirewallPolicyRuleCollectionGroup  -Name "ApplicationRuleCollectionGroup" -Priority 300 -ResourceGroupName Test-FWPolicy-RG -FirewallPolicyName EUS-Policy

새 애플리케이션 규칙 만들기

$apprule1 = New-AzFirewallPolicyApplicationRule -Name apprule1 -Description testapprule1 -SourceAddress 192.168.0.1/32 -TargetFqdn "*.contoso.com" -Protocol HTTPS
$apprule2 = New-AzFirewallPolicyApplicationRule -Name apprule2 -Description testapprule2  -SourceAddress 192.168.0.10/32 -TargetFqdn "www.contosoweb.com" -Protocol HTTPS

규칙으로 새 애플리케이션 규칙 컬렉션 만들기

$apprulecollectiongroup = Get-AzFirewallPolicyRuleCollectionGroup -Name "ApplicationRuleCollectionGroup" -ResourceGroupName Test-FWPolicy-RG -AzureFirewallPolicyName EUS-Policy
$apprulecollection = New-AzFirewallPolicyFilterRuleCollection -Name myapprulecollection -Priority 1000 -Rule $apprule1,$apprule2 -ActionType Allow 
$newapprulecollection = $apprulecollectiongroup.Properties.RuleCollection.Add($apprulecollection) 

애플리케이션 규칙 컬렉션 업데이트

Set-AzFirewallPolicyRuleCollectionGroup -Name "ApplicationRuleCollectionGroup" -FirewallPolicyObject $firewallpolicy -Priority 300 -RuleCollection $apprulecollectiongroup.Properties.RuleCollection 

출력

새 규칙 컬렉션 그룹 및 해당 새 규칙 검사:

$output = $apprulecollectiongroup.Properties.GetRuleCollectionByName("myapprulecollection")
Write-Output $output

기존 규칙 컬렉션에 애플리케이션 규칙 추가

기존 규칙 컬렉션이 생겼으므로 규칙을 더 추가할 수 있습니다.

#Create new Application Rules for exist Rule collection
$newapprule1 = New-AzFirewallPolicyApplicationRule -Name newapprule01 -Description testapprule01 -SourceAddress 192.168.0.5/32 -TargetFqdn "*.contosoabc.com" -Protocol HTTPS
$newapprule2 = New-AzFirewallPolicyApplicationRule -Name newapprule02 -Description testapprule02  -SourceAddress 192.168.0.15/32 -TargetFqdn "www.contosowebabcd.com" -Protocol HTTPS

애플리케이션 규칙 컬렉션 업데이트

$apprulecollection = $apprulecollectiongroup.Properties.RuleCollection | where {$_.Name -match "myapprulecollection"}
$apprulecollection.Rules.Add($newapprule1)
$apprulecollection.Rules.Add($newapprule2)

# Update Application Rule collection Group  
Set-AzFirewallPolicyRuleCollectionGroup -Name "ApplicationRuleCollectionGroup" -FirewallPolicyObject $firewallpolicy -Priority 300 -RuleCollection $apprulecollectiongroup.Properties.RuleCollection

출력

새 규칙 보기:

$Output = $apprulecollectiongroup.Properties.GetRuleCollectionByName("myapprulecollection")
Write-Output $output

리소스 정리

만든 리소스가 더 이상 필요하지 않은 경우 해당 리소스 그룹을 삭제합니다. 그러면 만든 모든 리소스가 제거됩니다.

리소스 그룹을 삭제하려면 Remove-AzResourceGroup cmdlet을 사용합니다.

Remove-AzResourceGroup -Name Test-FWpolicy-RG

다음 단계