Jackson Martins

Desalocar o Azure Firewall e reduzir custos

Fala pessoal tudo bem com vocês?

Aconteceu nessa semana o evento Microsoft Security Week! www.secweek.com.br se você perdeu, corre lá e assista as gravações porque só tem faixa preta palestrando, só gente fera.

Lá eu falei um pouco sobre Azure Firewall e comentei que era possível desalocar o firewall para economizar custos. Existem ambientes que funcionam apenas em horário comercial, do mesmo jeito que você consegue desligar a vm e economizar, é possível fazer isso com Azure Firewall. Afinal, não teria sentido você desligar as máquinas virtuais e manter o firewall ligado, já que não teria “nada para proteger”

Vamos ao mapa de nosso cenário:

Arquitetura Hub-spoke Azure Firewall

Nessa arquitetura conhecida como Hubspoke, nós utilizamos apenas uma implantação de firewall para controlar todas as nossas VNETS na assinatura, basta que todas estejam emparelhadas com a Vnet do firewall, conforme imagem acima. Isso ajuda a reduzir custo, visto que não precisamos utilizar um firewall exclusivo para cada VNET.

Agora vamos ao nosso tutorial:

Você pode executar os comandos via cli do Azure, mas a intenção é deixar tudo automatizado. Vamos criar então um runbook para executar os comandos agendados.

1 – CRIAR CONTA DE AUTOMAÇÃO E IMPORTAR MÓDULOS

Primeiro passo é criar uma conta de automação, para isso vá ao Market place do Azure e procure pelo recurso chamado “Automação”

Conta de automação Market Place Portal do Azure

Colocar a conta de automação no mesmo grupo de recursos que está localizado o Azure Firewall:

Adicionar conta de automação no grupo de recursos do Firewall

Assim que o recurso for provisionado, vamos importar os módulos Az.Accounts e Az.Network para o funcionamento de nosso script, para isso vá na conta de automação recém criada, depois vá em Recursos Compartilhados e clique em Galeria de Módulos. Lá vamos procurar pela primeira dependência que é o módulo Az.Accounts:

Adicionar o módulo Az.Accounts pela galeria de módulos

Vamos abrir o módulo e clicar em Importar:

Importar o módulo Az.Accounts

Depois de aguardar a importação, vamos fazer o mesmo processo para o módulo Az.Network

Adicionar o módulo Az.Network pela galeria de módulos

Basta fazer o mesmo processo que fez no Az.Accounts e importar o módulo! Agora nossa conta está pronta para executar os scripts de runbook

2 – CRIAR O RUNBOOK PARA DESLIGAR O FIREWALL

vamos abrir a Conta de automação e clicar em Runbooks:

Criando Runbook pela conta de automação

Vamos criar um runbook do tipo powershell:

Runbook do tipo PowerShell

Agora chegamos na parte principal, vamos criar o script que vai desalocar o firewall, abaixo segue o script:

# Definindo a variavel de conexao

$connection = Get-AutomationConnection -Name AzureRunAsConnection

# Repeticao de autenticacao caso falha de rede
$logonAttempt = 0
while(!($connectionResult) -and ($logonAttempt -le 10))
{
    $LogonAttempt++
    # Logging in to Azure...
    $connectionResult = Connect-AzAccount `
                            -ServicePrincipal `
                            -Tenant $connection.TenantID `
                            -ApplicationId $connection.ApplicationID `
                            -CertificateThumbprint $connection.CertificateThumbprint

    Start-Sleep -Seconds 30
}

# Fazendo a conexao na sua assinatura
$AzureContext = Get-AzSubscription -SubscriptionId $connection.SubscriptionID

# Parar o Azure Firewall
$azfw = Get-AzFirewall -Name "NOME-DO-FW" -ResourceGroupName "GRUPO-DE-RECURSOS”
$azfw.Deallocate()
Set-AzFirewall -AzureFirewall $azfw

No meu caso ficou assim:

Script PowerShell para desalocar o Azure Firewall

3 – CRIAR O RUNBOOK PARA INICIAR O FIREWALL

Terceiro passo é criar o script para realocar o Azure Firewall, aqui vão alguns pontos a serem considerados.

1º Quando você desaloca o Azure Firewall ele desassocia a VNET e o endereço público do Firewall então o script deverá associar novamente esses dois itens, veja o exemplo abaixo:

Firewall ligado com endereçamento IP:

Azure Firewall Alocado e online

Firewall após desligar com Script:

Azure Firewall desalocado e offline

2º O Firewall demora cerca de 10 minutos para realocar novamente, então coloque isso no seu cronograma ao colocar o agendamento do script para iniciar.

Vamos agora criar o script para desligar o Azure firewall, vamos fazer o mesmo processo de criar um novo runbook do tipo powershell

Runbook do tipo PowerShell

Vamos criar o script que vai realocar o firewall, abaixo segue o script:

# Definindo a variavel de conexao

$connection = Get-AutomationConnection -Name AzureRunAsConnection

# Repeticao de autenticacao caso falha de rede
$logonAttempt = 0
while(!($connectionResult) -and ($logonAttempt -le 10))
{
    $LogonAttempt++
    # Logging in to Azure...
    $connectionResult = Connect-AzAccount `
                            -ServicePrincipal `
                            -Tenant $connection.TenantID `
                            -ApplicationId $connection.ApplicationID `
                            -CertificateThumbprint $connection.CertificateThumbprint

    Start-Sleep -Seconds 30
}

# Fazendo a conexao na sua assinatura
$AzureContext = Get-AzSubscription -SubscriptionId $connection.SubscriptionID


# Iniciar o Azure Firewall

$azfw = Get-AzFirewall -Name "Nome FW" -ResourceGroupName "Nome Grupo de Recursos"
$vnet = Get-AzVirtualNetwork -ResourceGroupName "Nome Grupo Recursos" -Name "Nome da VNET"
$publicip1 = Get-AzPublicIpAddress -Name "IP Publico do Firewall" -ResourceGroupName "Nome do Grupo de recursos"
$azfw.Allocate($vnet,@($publicip1))

Set-AzFirewall -AzureFirewall $azfw

No meu caso ficou assim:

Com os dois scripts prontos, basta criar uma agenda com o horário desejado para iniciar as vms (caso tenha dúvida de como fazer isso, explico no blog do Azure Academy, basta clicar aqui/)

 e aqui vai a última dica de hoje

Coloque o Firewall para iniciar aproximadamente 20 minutos antes de suas vms, pois é o tempo de ele leva para provisionar a estrutura.

Pronto! A partir de momento que o firewall estiver desligado, não incidirá mais em cobrança e você poderá economizar custos pagando somente a hora que utilizou o recurso.

Nos vemos nos próximos posts
Até mais 😉

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *