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
- Instale o Powershell
1
winget install --id Microsoft.PowerShell --source winget
- 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
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
- 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.
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
- 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
- Aqui é uma visão da VNet + Subnets que acabamos de criar:
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
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
- Com o Deploy do Bastion concluído, podemos agora fazer o login em uma VM Linux para validar a funcionalidade do recurso.
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
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.
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.
- Após alguns segundos, uma nova janela será aberta, permitindo que você interaja com a linha de comando da sua VM Linux.
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!! 😉
#CloudInsights #Azure #Tech #Cloud #Security #Network #PowerShell