다음을 통해 공유


Azure Firewall SKU 변경

이 문서에서는 Standard와 Premium 간에 Azure Firewall SKU를 변경하는 방법을 보여 줍니다. 표준에서 프리미엄으로 업그레이드하여 향상된 보안 기능을 활용하거나 해당 기능이 더 이상 필요하지 않은 경우 프리미엄에서 표준으로 다운그레이드할 수 있습니다. Azure Firewall Premium은 IDPS, TLS 검사 및 URL 필터링을 비롯한 고급 위협 방지 기능을 제공합니다.

다음 두 가지 방법 중 하나를 사용하여 방화벽 SKU를 변경할 수 있습니다.

  • 쉬운 SKU 변경 방법 (권장): Azure Portal, PowerShell 또는 Terraform을 사용하여 가동 중지 시간 제로 업그레이드 또는 다운그레이드
  • 수동 마이그레이션 방법: 복잡한 시나리오 또는 쉬운 SKU 변경을 사용할 수 없는 경우 단계별 마이그레이션

Azure Firewall Premium 기능에 대한 자세한 내용은 Azure Firewall Premium 기능을 참조하세요.

필수 조건

시작하기 전에 다음을 확인합니다.

  • Azure 구독, 기존 Azure Firewall 배포 포함
  • 방화벽 리소스를 수정하기 위한 적절한 권한(네트워크 기여자 역할 이상)
  • Azure PowerShell 모듈 버전 6.5.0 이상(PowerShell 메서드의 경우)
  • 계획된 유지 관리 기간(수동 마이그레이션 방법)

중요합니다

이 문서는 Azure Firewall 표준 및 프리미엄 SKU에만 적용됩니다. Azure Firewall Basic SKU 는 SKU 변경을 지원하지 않으며 프리미엄으로 업그레이드하기 전에 먼저 표준 SKU로 마이그레이션해야 합니다. 예약된 유지 관리 시간 동안 항상 SKU 변경 작업을 수행하고 먼저 비프로덕션 환경에서 프로세스를 철저히 테스트합니다.

가동 중지 시간이 0인 Azure Firewall SKU를 변경하는 가장 쉬운 방법은 SKU 변경 기능을 사용하는 것입니다. 이 메서드는 표준에서 프리미엄으로 업그레이드하고 프리미엄에서 표준으로 다운그레이드를 모두 지원합니다.

쉬운 SKU 변경을 사용하는 경우

다음과 같은 경우 쉬운 SKU 변경 방법을 사용합니다.

  • 방화벽 정책이 있는 Azure Firewall이 있습니다(클래식 규칙이 아님).
  • 방화벽이 지원되는 지역에 배포됨
  • 가동 중지 시간을 최소화하려고 합니다(이 메서드를 사용하는 가동 중지 시간 0개).
  • 복잡한 사용자 지정 구성이 없는 표준 배포가 있습니다.
  • 다운그레이드의 경우: 프리미엄 정책은 표준과 호환되지 않는 프리미엄 전용 기능을 사용하지 않습니다.

SKU 변경에 대한 정책 고려 사항

프리미엄으로 업그레이드

업그레이드 프로세스 중에 방화벽 정책을 처리하는 방법을 선택합니다.

  • 기존 프리미엄 정책: 업그레이드된 방화벽에 연결할 기존 프리미엄 정책 선택
  • 기존 표준 정책: 현재 표준 정책을 사용합니다. 시스템이 정책을 자동으로 복제하여 프리미엄 정책으로 업그레이드합니다.
  • 새 프리미엄 정책 만들기: 시스템에서 현재 구성에 따라 새 프리미엄 정책을 만들도록 허용

표준으로 다운그레이드

프리미엄에서 표준으로 다운그레이드하는 경우 다음 정책 요구 사항을 고려합니다.

중요합니다

프리미엄 전용 기능은 표준 SKU로 다운그레이드하기 전에 제거하거나 사용하지 않도록 설정해야 합니다.

다운그레이드하기 전에 해결할 프리미엄 기능:

  • TLS 검사: TLS 검사 규칙을 사용하지 않도록 설정하고 연결된 인증서 제거
  • IDPS(침입 감지 및 방지): IDPS 모드를 경고 및 거부에서 경고 전용 또는 해제로 변경
  • URL 필터링: URL 필터링 규칙을 가능한 경우 FQDN 필터링으로 바꾸기
  • 웹 범주: 웹 범주 규칙을 제거하거나 특정 FQDN 규칙으로 바꾸기

정책 처리 옵션:

  • 기존 표준 정책 사용: 프리미엄 기능을 포함하지 않는 기존 표준 정책 선택
  • 새 표준 정책 만들기: 시스템에서 새 표준 정책을 만들어 프리미엄 관련 기능을 자동으로 제거할 수 있습니다.
  • 현재 정책 수정: 다운그레이드하기 전에 현재 정책에서 프리미엄 기능을 수동으로 제거

Azure Portal을 사용하여 SKU 변경

Azure Portal을 사용하여 방화벽 SKU를 변경하려면 다음을 수행합니다.

프리미엄으로 업그레이드

  1. Azure Portal에 로그인합니다.
  2. Azure Firewall 리소스로 이동합니다.
  3. 개요 페이지에서 SKU 변경을 선택합니다.
  4. SKU 변경 대화 상자에서 프리미엄 을 대상 SKU로 선택합니다.
  5. 정책 옵션을 선택합니다.
    • 기존 프리미엄 정책을 선택하거나
    • 시스템에서 현재 표준 정책을 프리미엄으로 업그레이드하도록 허용
  6. 저장을 선택하여 업그레이드를 시작합니다.

표준으로 다운그레이드

  1. Azure Portal에 로그인합니다.
  2. Azure Firewall Premium 리소스로 이동합니다.
  3. 다운그레이드 전: 방화벽 정책에 프리미엄 전용 기능(TLS 검사, IDPS 경고 및 거부 모드, URL 필터링, 웹 범주)이 포함되어 있지 않은지 확인합니다.
  4. 개요 페이지에서 SKU 변경을 선택합니다.
  5. SKU 변경 대화 상자에서 표준 을 대상 SKU로 선택합니다.
  6. 정책 옵션을 선택합니다.
    • 기존 표준 정책을 선택하거나
    • 시스템에서 새 표준 정책을 만들 수 있도록 허용(프리미엄 기능이 자동으로 제거됨)
  7. 저장을 선택하여 다운그레이드를 시작합니다.

SKU 변경 프로세스는 일반적으로 가동 중지 시간이 0인 상태에서 몇 분 내에 완료됩니다.

SKU 업그레이드를 보여 주는 스크린샷

PowerShell 및 Terraform SKU 변경

다음을 사용하여 SKU 변경 작업을 수행할 수도 있습니다.

  • PowerShell: 속성을 "프리미엄" 또는 "표준"으로 변경 sku_tier
  • Terraform: 구성의 sku_tier 특성을 원하는 SKU로 업데이트

제한점

쉬운 SKU 변경 방법에는 다음과 같은 제한 사항이 있습니다.

일반적인 제한 사항:

  • Azure Firewall 기본 SKU를 지원하지 않음 - 기본 SKU 사용자는 먼저 표준으로 마이그레이션해야 합니다.
  • 특정 복잡한 구성이 있는 방화벽에는 사용할 수 없음
  • 일부 지역의 제한된 가용성
  • 기존 방화벽 정책 필요(클래식 규칙에 사용할 수 없음)

다운그레이드 관련 제한 사항:

  • 프리미엄 기능(TLS 검사, IDPS 경고 및 거부 모드, URL 필터링, 웹 범주)은 다운그레이드하기 전에 제거해야 합니다.
  • 프리미엄 정책에 호환되지 않는 기능이 포함된 경우 정책을 수정하거나 새 표준 정책을 만들어야 합니다.
  • 일부 규칙 구성은 다운그레이드 후 수동 조정이 필요할 수 있습니다.

쉬운 SKU 변경 방법을 시나리오에 사용할 수 없는 경우 다음 섹션에 설명된 수동 마이그레이션 방법을 사용합니다.

수동 마이그레이션 방법

쉬운 업그레이드 방법을 사용할 수 없거나 배포에 적합하지 않은 경우 수동 마이그레이션 방법을 사용할 수 있습니다. 이 방법은 더 많은 제어를 제공하지만 가동 중지 시간이 필요합니다.

수동 마이그레이션을 사용하는 경우

다음과 같은 경우 수동 마이그레이션을 사용합니다.

  • 당신의 시나리오에 대해 쉬운 업그레이드를 사용할 수 없습니다.
  • 마이그레이션이 필요한 클래식 방화벽 규칙이 있습니다.
  • 복잡한 사용자 지정 구성이 있습니다.
  • 마이그레이션 프로세스를 완전히 제어해야 합니다.
  • 방화벽이 가용성 영역을 사용하여 동남 아시아에 배포됨

성능 고려 사항

성능은 표준 SKU에서 마이그레이션할 때 고려해야 합니다. IDPS 및 TLS 검사는 계산 집약적인 작업입니다. 프리미엄 SKU는 표준 SKU와 비교할 수 있는 더 높은 처리량으로 스케일링되는 더 강력한 VM SKU를 사용합니다. Azure Firewall 성능에 대한 자세한 내용은 Azure Firewall 성능을 참조하세요.

Microsoft는 고객이 Azure 배포에서 본격적인 테스트를 수행하여 방화벽 서비스 성능이 기대에 부합하는지 확인하는 것이 좋습니다.

가동 중지 시간 고려 사항

중지/시작 프로세스 중에 약간의 가동 중지 시간(일반적으로 20-30분)이 있으므로 수동 마이그레이션 방법을 사용할 때 유지 관리 기간을 계획합니다.

마이그레이션 단계 개요

성공적인 수동 마이그레이션을 위해서는 다음과 같은 일반적인 단계가 필요합니다.

  1. 기존 표준 정책 또는 클래식 규칙에 따라 새 프리미엄 정책 만들기
  2. 중지/시작을 사용하여 표준에서 프리미엄으로 Azure Firewall 마이그레이션
  3. 프리미엄 방화벽에 프리미엄 정책 연결

1단계: 클래식 규칙을 표준 정책으로 마이그레이션

클래식 방화벽 규칙이 있는 경우 먼저 Azure Portal을 사용하여 표준 정책으로 마이그레이션합니다.

  1. Azure Portal에서 표준 방화벽을 선택합니다.
  2. 개요 페이지에서 방화벽 정책으로 마이그레이션을 선택합니다.
  3. 방화벽 정책으로 마이그레이션 페이지에서 검토 + 만들기를 선택합니다.
  4. 선택하고생성합니다.

배포를 완료하는 데 몇 분이 걸립니다.

Azure PowerShell을 사용하여 기존 클래식 규칙을 마이그레이션할 수도 있습니다. 자세한 내용은 PowerShell을 사용하여 Azure Firewall 구성을 Azure Firewall 정책으로 마이그레이션을 참조하세요.

2단계: PowerShell을 사용하여 프리미엄 정책 만들기

다음 PowerShell 스크립트를 사용하여 기존 표준 정책에서 새 프리미엄 정책을 만듭니다.

중요합니다

스크립트는 위협 인텔리전스 및 SNAT 프라이빗 범위 설정을 마이그레이션하지 않습니다. 계속하기 전에 이러한 설정을 적어 두고 수동으로 마이그레이션해야 합니다.

<#
    .SYNOPSIS
        Given an Azure firewall policy id the script will transform it to a Premium Azure firewall policy.
        The script will first pull the policy, transform/add various parameters and then upload a new premium policy.
        The created policy will be named <previous_policy_name>_premium if no new name provided else new policy will be named as the parameter passed.
    .Example
        Transform-Policy -PolicyId /subscriptions/XXXXX-XXXXXX-XXXXX/resourceGroups/some-resource-group/providers/Microsoft.Network/firewallPolicies/policy-name -NewPolicyName <optional param for the new policy name>
#>

param (
    #Resource id of the azure firewall policy.
    [Parameter(Mandatory=$true)]
    [string]
    $PolicyId,

    #new filewallpolicy name, if not specified will be the previous name with the '_premium' suffix
    [Parameter(Mandatory=$false)]
    [string]
    $NewPolicyName = ""
)
$ErrorActionPreference = "Stop"
$script:PolicyId = $PolicyId
$script:PolicyName = $NewPolicyName

function ValidatePolicy {
    [CmdletBinding()]
    param (
        [Parameter(Mandatory=$true)]
        [Object]
        $Policy
    )

    Write-Host "Validating resource is as expected"

    if ($null -eq $Policy) {
        Write-Error "Received null policy"
        exit(1)
    }
    if ($Policy.GetType().Name -ne "PSAzureFirewallPolicy") {
        Write-Error "Resource must be of type Microsoft.Network/firewallPolicies"
        exit(1)
    }

    if ($Policy.Sku.Tier -eq "Premium") {
        Write-Host "Policy is already premium" -ForegroundColor Green
        exit(1)
    }
}

function GetPolicyNewName {
    [CmdletBinding()]
    param (
        [Parameter(Mandatory=$true)]
        [Microsoft.Azure.Commands.Network.Models.PSAzureFirewallPolicy]
        $Policy
    )

    if (-not [string]::IsNullOrEmpty($script:PolicyName)) {
        return $script:PolicyName
    }

    return $Policy.Name + "_premium"
}

function TransformPolicyToPremium {
    [CmdletBinding()]
    param (
        [Parameter(Mandatory=$true)]
        [Microsoft.Azure.Commands.Network.Models.PSAzureFirewallPolicy]
        $Policy
    )
    $NewPolicyParameters = @{
                        Name = (GetPolicyNewName -Policy $Policy)
                        ResourceGroupName = $Policy.ResourceGroupName
                        Location = $Policy.Location
                        BasePolicy = $Policy.BasePolicy.Id
                        ThreatIntelMode = $Policy.ThreatIntelMode
                        ThreatIntelWhitelist = $Policy.ThreatIntelWhitelist
                        PrivateRange = $Policy.PrivateRange
                        DnsSetting = $Policy.DnsSettings
                        SqlSetting = $Policy.SqlSetting
                        ExplicitProxy  = $Policy.ExplicitProxy
                        DefaultProfile  = $Policy.DefaultProfile
                        Tag = $Policy.Tag
                        SkuTier = "Premium"
    }

    Write-Host "Creating new policy"
    $premiumPolicy = New-AzFirewallPolicy @NewPolicyParameters

    Write-Host "Populating rules in new policy"
    foreach ($ruleCollectionGroup in $Policy.RuleCollectionGroups) {
        $ruleResource = Get-AzResource -ResourceId $ruleCollectionGroup.Id
        $ruleToTransform = Get-AzFirewallPolicyRuleCollectionGroup -AzureFirewallPolicy $Policy -Name $ruleResource.Name
        $ruleCollectionGroup = @{
            FirewallPolicyObject = $premiumPolicy
            Priority = $ruleToTransform.Properties.Priority
            Name = $ruleToTransform.Name
        }

        if ($ruleToTransform.Properties.RuleCollection.Count) {
            $ruleCollectionGroup["RuleCollection"] = $ruleToTransform.Properties.RuleCollection
        }

        Set-AzFirewallPolicyRuleCollectionGroup @ruleCollectionGroup
    }
}

function ValidateAzNetworkModuleExists {
    Write-Host "Validating needed module exists"
    $networkModule = Get-InstalledModule -Name "Az.Network" -MinimumVersion 4.5 -ErrorAction SilentlyContinue
    if ($null -eq $networkModule) {
        Write-Host "Please install Az.Network module version 4.5.0 or higher, see instructions: https://github.com/Azure/azure-powershell#installation"
        exit(1)
    }
    $resourceModule = Get-InstalledModule -Name "Az.Resources" -MinimumVersion 4.2 -ErrorAction SilentlyContinue
    if ($null -eq $resourceModule) {
        Write-Host "Please install Az.Resources module version 4.2.0 or higher, see instructions: https://github.com/Azure/azure-powershell#installation"
        exit(1)
    }
    Import-Module Az.Network -MinimumVersion 4.5.0
    Import-Module Az.Resources -MinimumVersion 4.2.0
}

ValidateAzNetworkModuleExists
$policy = Get-AzFirewallPolicy -ResourceId $script:PolicyId
ValidatePolicy -Policy $policy
TransformPolicyToPremium -Policy $policy

사용 예제:

Transform-Policy -PolicyId /subscriptions/XXXXX-XXXXXX-XXXXX/resourceGroups/some-resource-group/providers/Microsoft.Network/firewallPolicies/policy-name

3단계: 중지/시작을 사용하여 Azure Firewall 마이그레이션

방화벽 정책과 함께 Azure Firewall Standard SKU를 사용하는 경우 Allocate/Deallocate 메서드를 사용하여 방화벽 SKU를 프리미엄으로 마이그레이션할 수 있습니다. 이 마이그레이션 방법은 가상 네트워크 허브 및 보안 허브 방화벽 모두에서 지원됩니다.

비고

최소 Azure PowerShell 버전 요구 사항은 6.5.0입니다. 자세한 내용은 Az 6.5.0을 참조하세요.

가상 네트워크 허브 방화벽 마이그레이션

표준 방화벽 할당을 취소합니다.

$azfw = Get-AzFirewall -Name "<firewall-name>" -ResourceGroupName "<resource-group-name>"
$azfw.Deallocate()
Set-AzFirewall -AzureFirewall $azfw

방화벽 프리미엄 할당(단일 공용 IP 주소):

$azfw = Get-AzFirewall -Name "<firewall-name>" -ResourceGroupName "<resource-group-name>"
$azfw.Sku.Tier="Premium"
$vnet = Get-AzVirtualNetwork -ResourceGroupName "<resource-group-name>" -Name "<Virtual-Network-Name>"
$publicip = Get-AzPublicIpAddress -Name "<Firewall-PublicIP-name>" -ResourceGroupName "<resource-group-name>"
$azfw.Allocate($vnet,$publicip)
Set-AzFirewall -AzureFirewall $azfw

방화벽 프리미엄 할당(여러 공용 IP 주소):

$azfw = Get-AzFirewall -Name "FW Name" -ResourceGroupName "RG Name"
$azfw.Sku.Tier="Premium"
$vnet = Get-AzVirtualNetwork -ResourceGroupName "RG Name" -Name "VNet Name"
$publicip1 = Get-AzPublicIpAddress -Name "Public IP1 Name" -ResourceGroupName "RG Name"
$publicip2 = Get-AzPublicIpAddress -Name "Public IP2 Name" -ResourceGroupName "RG Name"
$azfw.Allocate($vnet,@($publicip1,$publicip2))
Set-AzFirewall -AzureFirewall $azfw

강제 터널 모드에서 방화벽 프리미엄 할당:

$azfw = Get-AzFirewall -Name "<firewall-name>" -ResourceGroupName "<resource-group-name>"
$azfw.Sku.Tier="Premium"
$vnet = Get-AzVirtualNetwork -ResourceGroupName "<resource-group-name>" -Name "<Virtual-Network-Name>"
$publicip = Get-AzPublicIpAddress -Name "<Firewall-PublicIP-name>" -ResourceGroupName "<resource-group-name>"
$mgmtPip = Get-AzPublicIpAddress -ResourceGroupName "<resource-group-name>"-Name "<Management-PublicIP-name>"
$azfw.Allocate($vnet,$publicip,$mgmtPip)
Set-AzFirewall -AzureFirewall $azfw

보안 허브 방화벽 마이그레이션

표준 방화벽 할당을 취소합니다.

$azfw = Get-AzFirewall -Name "<firewall-name>" -ResourceGroupName "<resource-group-name>"
$azfw.Deallocate()
Set-AzFirewall -AzureFirewall $azfw

방화벽 프리미엄 할당:

$azfw = Get-AzFirewall -Name "<firewall-name>" -ResourceGroupName "<resource-group-name>"
$hub = get-azvirtualhub -ResourceGroupName "<resource-group-name>" -name "<vWANhub-name>"
$azfw.Sku.Tier="Premium"
$azfw.Allocate($hub.id)
Set-AzFirewall -AzureFirewall $azfw

4단계: 프리미엄 정책 연결

방화벽을 프리미엄으로 업그레이드한 후 Azure Portal을 사용하여 프리미엄 정책을 연결합니다.

  1. Azure Portal에서 프리미엄 방화벽으로 이동합니다.
  2. 개요 페이지에서 방화벽 정책을 선택합니다.
  3. 새로 만든 프리미엄 정책을 선택합니다.
  4. 저장을 선택합니다.

방화벽 정책을 보여 주는 스크린샷

Terraform 마이그레이션

Terraform을 사용하여 Azure Firewall을 배포하는 경우 Terraform을 사용하여 Azure Firewall Premium으로 마이그레이션할 수 있습니다. 자세한 내용은 Terraform을 사용하여 Azure Firewall Standard를 프리미엄으로 마이그레이션을 참조하세요.

SKU 변경 문제 해결

일반적인 문제 및 해결 방법

  • 쉬운 SKU 변경을 사용할 수 없음: 이 문서에 설명된 수동 마이그레이션 방법 사용
  • 정책 마이그레이션 오류: 올바른 PowerShell 모듈 버전이 설치되어 있는지 확인합니다.
  • 예상보다 긴 가동 중지 시간: 네트워크 연결 및 리소스 가용성 확인
  • 업그레이드 후 성능 문제: 성능 고려 사항을 검토하고 철저한 테스트를 수행합니다.
  • 프리미엄 기능으로 차단된 다운그레이드: 다운그레이드를 시도하기 전에 프리미엄 전용 기능 제거 또는 사용 안 함

다운그레이드 문제 해결

프리미엄에서 표준으로 다운그레이드할 수 없는 경우:

  1. 프리미엄 기능 확인: 방화벽 정책에 다음이 포함되어 있지 않은지 확인합니다.

    • TLS 검사 규칙
    • 경고 및 거부 모드의 IDPS
    • URL 필터링 규칙
    • 웹 범주 규칙
  2. 정책 수정 옵션:

    • 프리미엄 기능 없이 새 표준 정책 만들기
    • 프리미엄 기능을 제거하도록 기존 정책 수정
    • Azure PowerShell을 사용하여 호환되지 않는 규칙 식별 및 제거
  3. 유효성 검사 단계:

    # Check current firewall policy for Premium features
    $policy = Get-AzFirewallPolicy -ResourceGroupName "myResourceGroup" -Name "myPolicy"
    
    # Review policy settings for Premium features
    $policy.ThreatIntelMode
    $policy.IntrusionDetection
    $policy.TransportSecurity
    

알려진 제한 사항

  • 가용성 영역을 사용하여 동남 아시아에 배포된 표준 방화벽 업그레이드는 현재 수동 마이그레이션에 지원되지 않습니다.
  • 쉬운 SKU 변경은 기본 SKU 방화벽을 지원하지 않습니다. 기본 SKU를 사용하는 사용자는 프리미엄으로 업그레이드하기 전에 먼저 표준 SKU로 마이그레이션해야 합니다.
  • 일부 사용자 지정 구성에는 수동 마이그레이션 방법이 필요할 수 있습니다.
  • 활성 프리미엄 기능으로 다운그레이드는 해당 기능이 제거될 때까지 실패합니다.

다음 단계