Post

Deploy Azure Bastion (PowerShell)

Fala galera!👋

Bem-vindo ao Blog Cloud Insights! ☁️

Neste post, vamos explorar como realizar o Deploy do Azure Bastion via PowerShell.

Pré-requisitos

Antes de começarmos nosso laboratório, verifique se você possui:

  • Uma conta do Azure com uma assinatura/subscription ativa.

Caso você não tenha uma subscription, você pode criar uma Trial. Mais informações consulte aqui.

Passo 1: Instale o PowerShell 7

Primeiro, caso você não tenha PowerShell 7 instalado, aqui estão os links com a documentação oficial para diferentes sistemas operacionais:

No meu laboratório vou simular a instalação do Powershell no Windows 10.

  • Verifique as versões disponiveis do PowerShell 7 com o comando a seguir:
1
winget search Microsoft.PowerShell

resource-group

  • Instale o Powershell
1
winget install --id Microsoft.PowerShell --source winget

resource-group

  • Instale também o Azure PowerShell

Para instalar o Azure PowerShell siga o passo-a-passo disponivel aqui.

Passo 2: Verifique a Instalação

  • Após a instalação, verifique se o Powershell 7 está funcionando corretamente. Abra o powershell em sua máquina e execute o comando abaixo para validar a versão:
1
$PSVersionTable.PSVersion

resource-group

Obs.: Talvez seja necessário reiniciar sua máquina.

Passo 3: Faça login com Azure PowerShell

Dica: Se você tiver acesso em mais de uma subscription, você pode executar o comando a seguir para determinar qual subscription você pretende deixar como default para toda vez que fizer login no Azure. Clique aqui para validar mais parâmetros que você pode utilizar.

1
Update-AzConfig -DefaultSubscriptionForLogin subscriptionID

resource-group

  • Com o Powershell aberto execute o comando a seguir para logar no Azure.
1
Connect-AzAccount -DeviceCode
  • Abra o link e copie o código para logar com suas credenciais.

Depois de ter logado você vai notar que no terminal vai aparecer a subscription default que você associou.

resource-group

Para mais informações sobre os métodos de login com o Azure Powershell, consulte aqui.


Passo 4: Deploy dos Recursos Base

  • Crie um novo resource-group com o comando a seguir:
1
New-AzResourceGroup -Name RG-BastionPS -Location eastus2

resource-group

  • Crie uma nova Virtual Network + AzureBastionSubnet:

Obs.: Vamos aproveitar e criar a subnet (subApp). Ela será necessária quando formos criar a VM Linux para testarmos o acesso via Azure Bastion.

1
2
3
4
5
6
7
$subApp = New-AzVirtualNetworkSubnetConfig -Name subApp -AddressPrefix "10.110.10.0/24" # Cria uma variável da subApp

$virtualNetwork = New-AzVirtualNetwork -ResourceGroupName RG-BastionPS -Location eastus2 -Name BastionPSVNet -AddressPrefix 10.110.0.0/16 -Subnet $subApp # Faz o deploy da BastionPSVNet e cria uma variável dela associando a subnet subApp

Add-AzVirtualNetworkSubnetConfig -Name AzureBastionSubnet -VirtualNetwork $virtualNetwork -AddressPrefix "10.110.30.0/26" # Cria a AzureBastionSubnet

$virtualNetwork | Set-AzVirtualNetwork # Associa a AzureBastionSubnet na VNet BastionPSVNet

resource-group

  • Aqui é uma visão da VNet + Subnets que acabamos de criar:

resource-group


Passo 5: Deploy do Azure Bastion

Para que seja possível fazer o deploy do Azure Bastion, necessitamos ter um Public-IP. Veja abaixo como fazer a criação dele.

1
$publicIp = New-AzPublicIpAddress -ResourceGroupName RG-BastionPS -Location eastus2 -Name BastionPS-PIP -AllocationMethod Static -Sku Standard -Zone 1,2,3

azure-automation-account

Se quiser saber mais sobre o Public IP, para entender sua Limitações, Preços e SKU, consulte aqui.

  • Agora vamos fazer o Deploy do Azure Bastion. Vamos utilizar os recursos base que criamos acima.
1
New-AzBastion -ResourceGroupName RG-BastionPS -Name BastionHostPS -PublicIpAddressId $publicIp.Id -VirtualNetworkId $virtualNetwork.Id -Sku Basic

azure-automation-account

  • Com o Deploy do Bastion concluído, podemos agora fazer o login em uma VM Linux para validar a funcionalidade do recurso.

azure-automation-account

Passo 6: Deploy VM Linux para teste de acesso

  • Vamos fazer o deploy de uma VM Linux para validar o acesso com o Azure Bastion.

  • Crie uma NSG (Network Security Group) + Nic (Interface de Rede) + Rule (Regra de Acesso SSH = Porta 22)

No exemplo a seguir, estou criando uma regra com a porta 22 aberta para acesso externo (Internet). Fiz isso apenas para cenários de teste do Azure Bastion. Nunca faça isso em um ambiente de Produção. Como melhor prática, realize o micro-gerenciamento das regras NSG na sua organização, permitindo apenas a comunicação estritamente necessária.

1
2
3
4
# Crie um Network Security Group (NSG) e uma Rule para permitir SSH
$nsg = New-AzNetworkSecurityGroup -ResourceGroupName $resourceGroupName -Location $location -Name "nsg-ps"
$nsgRuleSSH = Add-AzNetworkSecurityRuleConfig -Name "Allow-SSH" -NetworkSecurityGroup $nsg -Protocol "Tcp" -Direction "Inbound" -Priority 150 -SourceAddressPrefix "*" -SourcePortRange "*" -DestinationAddressPrefix "*" -DestinationPortRange 22 -Access "Allow"
$nsg | Set-AzNetworkSecurityGroup
1
2
3
4
5
6
7
8
9
10
# Defina variáveis
$resourceGroupName = "RG-BastionPS"
$location = "eastus2"
$vmName = "vm-lnx"
$adminUsername = "usernamedavm"
$adminPassword = "senhadeacessonavm"  # adicione uma senha complexa
$vnetName = "BastionPSVNet"
$subnetName = "subApp"
$nsgName = "nsg-ps"
$nicName = "vm-lnx-nic"
1
2
3
4
# Obtenha os recursos existentes
$virtualNetwork = Get-AzVirtualNetwork -ResourceGroupName $resourceGroupName -Name $vnetName
$subnet = Get-AzVirtualNetworkSubnetConfig -VirtualNetwork $virtualNetwork -Name $subnetName
$nsg = Get-AzNetworkSecurityGroup -ResourceGroupName $resourceGroupName -Name $nsgName
1
2
# Crie uma interface de rede (NIC)
$nic = New-AzNetworkInterface -ResourceGroupName $resourceGroupName -Location $location -Name $nicName -SubnetId $subnet.Id -NetworkSecurityGroupId $nsg.Id
1
2
3
4
5
# Crie a VM com usuário e senha
$vmConfig = New-AzVMConfig -VMName $vmName -VMSize "Standard_DS1_v2" | `
  Set-AzVMOperatingSystem -Linux -ComputerName $vmName -Credential (Get-Credential -UserName $adminUsername -Message "Enter password") | `
  Set-AzVMSourceImage -PublisherName "Canonical" -Offer "UbuntuServer" -Skus "18.04-LTS" -Version "latest" | `
  Add-AzVMNetworkInterface -Id $nic.Id
1
New-AzVM -ResourceGroupName $resourceGroupName -Location $location -VM $vmConfig

azure-automation-account

Obs.: Em breve vou montar laboratórios ensinando como fazer o deploy de VMs em diferentes formatos, além do Powershell.

Passo 7: Acessando VMs Linux

  • Acesse o Portal do Azure e Localize sua VM Linux.
    • Já logado no Portal do Azure.
    • Navegue até o Resource-Group onde está a VM Linux que criamos.

resource-group

Passo 8: Conecte-se via Bastion

  • Clique na sua máquina virtual Linux para abrir a página de detalhes.
    • No painel de navegação da VM, clique em Connect.
    • Selecione Connect via Bastion.
    • Uma nova tela será exibida. Insira as credenciais de login da sua VM (nome de usuário e senha).
    • Clique em Connect.

resource-group

resource-group

  • Após alguns segundos, uma nova janela será aberta, permitindo que você interaja com a linha de comando da sua VM Linux.

resource-group

Documentação Adicional

Para mais detalhes, você pode consultar a documentação oficial no Microsoft Learn:

Deploy VMs Linux usando o Powershell

Deploy Azure Bastion usando o PowerShell

Conclusão

Agora você sabe como realizar o deploy do Azure Bastion e de uma Virtual Machine Linux através do PowerShell.

Até a próxima!! 😉

resource-group

#CloudInsights #Azure #Tech #Cloud #Security #Network #PowerShell


Build and Deploy

Este post está licenciado sob CC BY 4.0 e pelo autor.