Anda dapat menggunakan grup keamanan jaringan untuk memfilter lalu lintas jaringan masuk dan keluar ke dan dari sumber daya Azure di jaringan virtual Azure.
Grup keamanan jaringan berisi aturan keamanan yang memfilter lalu lintas jaringan menurut alamat IP, port, dan protokol. Saat grup keamanan jaringan dikaitkan dengan subnet, aturan keamanan diterapkan ke sumber daya yang disebarkan di subnet tersebut.
Dalam tutorial ini, Anda akan belajar cara:
- Membuat grup keamanan jaringan dan aturan keamanan
- Membuat grup keamanan aplikasi
- Membuat jaringan virtual dan mengaitkan grup keamanan jaringan ke subnet
- Menyebarkan komputer virtual dan mengaitkan antarmuka jaringan mereka ke grup keamanan aplikasi
Prasyarat
Azure Cloud Shell
Azure menghosting Azure Cloud Shell, lingkungan shell interaktif yang dapat Anda gunakan melalui browser Anda. Anda dapat menggunakan Bash atau PowerShell dengan Cloud Shell untuk bekerja dengan layanan Azure. Anda dapat menggunakan perintah Cloud Shell yang telah diinstal sebelumnya untuk menjalankan kode dalam artikel ini, tanpa harus menginstal apa pun di lingkungan lokal Anda.
Untuk memulai Azure Cloud Shell:
| Opsi |
Contoh/Tautan |
| Pilih Coba di pojok kanan atas blok kode atau perintah. Memilih Coba tidak otomatis menyalin kode atau perintah ke Cloud Shell. |
|
| Pergi ke https://shell.azure.com, atau pilih tombol Luncurkan Cloud Shell untuk membuka Cloud Shell di browser Anda. |
|
| Pilih tombol Cloud Shell pada bilah menu di kanan atas di portal Microsoft Azure. |
|
Untuk menggunakan Azure Cloud Shell:
Mulai Cloud Shell.
Pilih tombol Salin pada blok kode (atau blok perintah) untuk menyalin kode atau perintah.
Tempelkan kode atau perintah ke sesi Cloud Shell dengan memilih Ctrl+Shift+V di Windows dan Linux, atau dengan memilih Cmd+Shift+V di macOS.
Pilih Masukkan untuk menjalankan kode atau perintah.
Jika Anda memilih untuk memasang dan menggunakan PowerShell secara lokal, artikel ini memerlukan modul Azure PowerShell versi 1.0.0 atau yang lebih baru. Jalankan Get-Module -ListAvailable Az untuk menemukan versi terinstal. Jika Anda perlu meningkatkan, lihat Pasang modul Azure PowerShell. Jika Anda menjalankan PowerShell secara lokal, Anda juga perlu menjalankan Connect-AzAccount untuk membuat koneksi dengan Azure.
Jika Anda tidak memiliki akun Azure, buat akun gratis sebelum memulai.
- Artikel ini memerlukan Azure CLI versi 2.0.28 atau yang lebih baru. Jika menggunakan Azure Cloud Shell, versi terbaru sudah terpasang.
Prosedur berikut membuat jaringan virtual dengan subnet sumber daya.
Di portal, cari dan pilih Jaringan virtual.
Pada halaman Jaringan virtual, pilih + Buat.
Pada tab Dasar dari Buat jaringan virtual, masukkan atau pilih informasi berikut:
| Pengaturan |
Nilai |
|
Detail proyek |
|
| Langganan |
Pilih langganan Anda. |
| Grup sumber daya |
Pilih Buat baru.
Masukkan test-rg di Nama.
Pilih OK. |
|
Rincian contoh |
|
| Nama |
Masukkan vnet-1. |
| Wilayah |
Pilih East US 2. |
Pilih Berikutnya untuk melanjutkan ke tab Keamanan.
Pilih Berikutnya untuk melanjutkan ke tab alamat IP.
Dalam kotak ruang alamat di bawah Subnet, pilih subnet default .
Pada panel Edit subnet , masukkan atau pilih informasi berikut ini:
| Pengaturan |
Nilai |
|
Rincian Subnet |
|
| Templat Subnet |
Biarkan default sebagai Default. |
| Nama |
Masukkan subnet-1. |
| Alamat pengiriman awal |
Biarkan nilai default tetap 10.0.0.0. |
| Ukuran subnet |
Pertahankan pengaturan default /24(256 alamat). |
Pilih Simpan.
Pilih Tinjau + buat di bagian bawah layar. Setelah melalui validasi, pilih Buat.
Pertama-tama buat grup sumber daya untuk semua sumber daya yang dibuat dalam artikel ini dengan New-AzResourceGroup. Contoh berikut membuat grup sumber daya di lokasi westus2 :
$rg = @{
ResourceGroupName = "test-rg"
Location = "westus2"
}
New-AzResourceGroup @rg
Buat jaringan virtual dengan New-AzVirtualNetwork. Contoh berikut membuat virtual bernama vnet-1:
$vnet = @{
ResourceGroupName = "test-rg"
Location = "westus2"
Name = "vnet-1"
AddressPrefix = "10.0.0.0/16"
}
$virtualNetwork = New-AzVirtualNetwork @vnet
Membuat konfigurasi subnet dengan New-AzVirtualNetworkSubnetConfig, lalu menulis konfigurasi subnet ke jaringan virtual dengan Set-AzVirtualNetwork. Contoh berikut menambahkan subnet bernama subnet-1 ke jaringan virtual dan mengaitkan grup keamanan jaringan nsg-1 ke dalamnya:
$subnet = @{
Name = "subnet-1"
VirtualNetwork = $virtualNetwork
AddressPrefix = "10.0.0.0/24"
}
Add-AzVirtualNetworkSubnetConfig @subnet
$virtualNetwork | Set-AzVirtualNetwork
Pertama-tama buat grup sumber daya untuk semua sumber daya yang dibuat dalam artikel ini dengan az group create. Contoh berikut membuat grup sumber daya di lokasi westus2 :
az group create \
--name test-rg \
--location westus2
Buat Virtual Network dengan az network vnet create. Contoh berikut membuat virtual bernama vnet-1:
az network vnet create \
--name vnet-1 \
--resource-group test-rg \
--address-prefixes 10.0.0.0/16
Tambahkan subnet ke jaringan virtual dengan az network vnet subnet create. Contoh berikut menambahkan subnet bernama subnet-1 ke jaringan virtual dan mengaitkan grup keamanan jaringan nsg-1 ke dalamnya:
az network vnet subnet create \
--vnet-name vnet-1 \
--resource-group test-rg \
--name subnet-1 \
--address-prefix 10.0.0.0/24
Membuat grup keamanan aplikasi
Grup keamanan aplikasi (ASG) memungkinkan Anda mengelompokkan server bersama dengan fungsi serupa, seperti server web.
Di kotak pencarian di bagian atas portal, masukkan Grup keamanan aplikasi. Pilih Grup keamanan aplikasi di hasil pencarian.
Pilih + Buat.
Pada tab Dasar dari Buat grup keamanan aplikasi, masukkan, atau pilih informasi ini:
| Pengaturan |
Nilai |
|
Detail proyek |
|
| Langganan |
Pilih langganan Anda. |
| Grup sumber daya |
Pilih test-rg. |
|
Rincian contoh |
|
| Nama |
Masukkan asg-web. |
| Wilayah |
Pilih West US 2. |
Pilih Tinjau + kreasikan.
Pilih + Buat.
Ulangi langkah-langkah sebelumnya, menentukan nilai berikut:
| Pengaturan |
Nilai |
|
Detail proyek |
|
| Langganan |
Pilih langganan Anda. |
| Grup sumber daya |
Pilih test-rg. |
|
Rincian contoh |
|
| Nama |
Masukkan asg-mgmt. |
| Wilayah |
Pilih West US 2. |
Pilih Tinjau + kreasikan.
Pilih Buat.
Buat grup keamanan aplikasi dengan New-AzApplicationSecurityGroup. Grup keamanan aplikasi memungkinkan Anda mengelompokkan server dengan persyaratan pemfilteran port serupa. Contoh berikut membuat dua grup keamanan aplikasi.
$web = @{
ResourceGroupName = "test-rg"
Name = "asg-web"
Location = "westus2"
}
$webAsg = New-AzApplicationSecurityGroup @web
$mgmt = @{
ResourceGroupName = "test-rg"
Name = "asg-mgmt"
Location = "westus2"
}
$mgmtAsg = New-AzApplicationSecurityGroup @mgmt
Buat grup keamanan aplikasi dengan az network asg create. Grup keamanan aplikasi memungkinkan Anda mengelompokkan server dengan persyaratan pemfilteran port serupa. Contoh berikut membuat dua grup keamanan aplikasi.
az network asg create \
--resource-group test-rg \
--name asg-web \
--location westus2
az network asg create \
--resource-group test-rg \
--name asg-mgmt \
--location westus2
Membuat grup keamanan jaringan
Kelompok keamanan jaringan (NSG) mengamankan lalu lintas jaringan di jaringan virtual Anda.
Di kotak pencarian di bagian atas portal, masukkan Grup keamanan jaringan. Pilih Grup keamanan jaringan di hasil penelusuran.
Nota
Dalam hasil pencarian untuk grup keamanan Jaringan, Anda mungkin melihat Grup keamanan jaringan (klasik). Pilih Kelompok keamanan jaringan.
Pilih + Buat.
Pada tab Dasar dari Buat grup keamanan jaringan, masukkan, atau pilih informasi ini:
| Pengaturan |
Nilai |
|
Detail proyek |
|
| Langganan |
Pilih langganan Anda. |
| Grup sumber daya |
Pilih test-rg. |
|
Rincian contoh |
|
| Nama |
Masukkan nsg-1. |
| Lokasi |
Pilih West US 2. |
Pilih Tinjau + kreasikan.
Pilih Buat.
Buat grup keamanan jaringan dengan New-AzNetworkSecurityGroup. Contoh berikut membuat grup keamanan jaringan bernama nsg-1:
$nsgParams = @{
ResourceGroupName = "test-rg"
Location = "westus2"
Name = "nsg-1"
}
$nsg = New-AzNetworkSecurityGroup @nsgParams
Buat sebuah grup keamanan jaringan dengan az network nsg create. Contoh berikut membuat grup keamanan jaringan bernama nsg-1:
# Create a network security group
az network nsg create \
--resource-group test-rg \
--name nsg-1
Mengaitkan grup keamanan jaringan ke subnet
Di bagian ini, Anda mengaitkan grup keamanan jaringan dengan subnet jaringan virtual yang Anda buat sebelumnya.
Di kotak pencarian di bagian atas portal, masukkan Grup keamanan jaringan. Pilih Grup keamanan jaringan di hasil penelusuran.
Pilih nsg-1.
Pilih Subnet dari bagian Pengaturannsg-1.
Di halaman Subnet , pilih + Kaitkan:
Di bawah Kaitkan subnet, pilih vnet-1 (test-rg) untuk Jaringan virtual.
Pilih subnet-1 untuk Subnet, lalu pilih OK.
Gunakan Get-AzVirtualNetwork untuk mengambil objek jaringan virtual, lalu gunakan Set-AzVirtualNetworkSubnetConfig untuk mengaitkan grup keamanan jaringan dengan subnet. Contoh berikut mengambil objek jaringan virtual dan memperbarui konfigurasi subnet untuk mengaitkan grup keamanan jaringan:
# Retrieve the virtual network
$vnet = Get-AzVirtualNetwork -Name "vnet-1" -ResourceGroupName "test-rg"
# Update the subnet configuration to associate the network security group
$subnetConfigParams = @{
VirtualNetwork = $vnet
Name = "subnet-1"
AddressPrefix = $vnet.Subnets[0].AddressPrefix
NetworkSecurityGroup = Get-AzNetworkSecurityGroup -Name "nsg-1" -ResourceGroupName "test-rg"
}
Set-AzVirtualNetworkSubnetConfig @subnetConfigParams
# Update the virtual network with the new subnet configuration
$vnet | Set-AzVirtualNetwork
Gunakan pembaruan subnet vnet jaringan az untuk mengaitkan grup keamanan jaringan dengan subnet. Contoh berikut mengaitkan grup keamanan jaringan nsg-1 dengan subnet subnet-1 :
az network vnet subnet update \
--resource-group test-rg \
--vnet-name vnet-1 \
--name subnet-1 \
--network-security-group nsg-1
Membuat aturan keamanan
Pilih Aturan keamanan masuk dari bagian Pengaturannsg-1.
Di halaman Aturan keamanan masuk , pilih + Tambahkan.
Buat aturan keamanan yang memungkinkan port 80 ke grup keamanan aplikasi asg-web . Di halaman Tambahkan aturan keamanan masuk , masukkan atau pilih informasi berikut:
| Pengaturan |
Nilai |
| Sumber |
Biarkan default Apa pun. |
| Rentang port sumber |
Biarkan default (*). |
| Tujuan |
Pilih Kelompok keamanan aplikasi. |
| Grup keamanan aplikasi tujuan |
Pilih asg-web. |
| Pelayanan |
Biarkan nilai default Kustom. |
| Rentang port tujuan |
Masukkan 80. |
| Protokol |
Pilih TCP. |
| Tindakan |
Biarkan default Izinkan. |
| Prioritas |
Biarkan nilai default 100. |
| Nama |
Masukkan allow-http-web. |
Pilih Tambahkan.
Selesaikan langkah-langkah sebelumnya dengan informasi berikut:
| Pengaturan |
Nilai |
| Sumber |
Biarkan default Apa pun. |
| Rentang port sumber |
Biarkan default (*). |
| Tujuan |
Pilih Kelompok keamanan aplikasi. |
| Grup keamanan aplikasi tujuan |
Pilih asg-mgmt. |
| Pelayanan |
Biarkan nilai default Kustom. |
| Rentang port tujuan |
Masukkan 8080. |
| Protokol |
Pilih TCP. |
| Tindakan |
Biarkan default Izinkan. |
| Prioritas |
Biarkan default 110. |
| Nama |
Masukkan allow-8080-mgmt. |
Pilih Tambahkan.
Buat aturan keamanan dengan New-AzNetworkSecurityRuleConfig. Contoh berikut membuat aturan yang memungkinkan lalu lintas masuk dari internet ke grup keamanan aplikasi asg-web melalui port 80:
$webAsgParams = @{
Name = "asg-web"
ResourceGroupName = "test-rg"
}
$webAsg = Get-AzApplicationSecurityGroup @webAsgParams
$webRuleParams = @{
Name = "Allow-HTTP-Web"
Access = "Allow"
Protocol = "Tcp"
Direction = "Inbound"
Priority = 100
SourceAddressPrefix = "Internet"
SourcePortRange = "*"
DestinationApplicationSecurityGroupId = $webAsg.id
DestinationPortRange = 80
}
$webRule = New-AzNetworkSecurityRuleConfig @webRuleParams
Contoh berikut membuat aturan yang memungkinkan lalu lintas masuk dari internet ke grup keamanan aplikasi asg-mgmt melalui port 8080:
$mgmtAsgParams = @{
Name = "asg-mgmt"
ResourceGroupName = "test-rg"
}
$mgmtAsg = Get-AzApplicationSecurityGroup @mgmtAsgParams
$mgmtRuleParams = @{
Name = "Allow-8080-Mgmt"
Access = "Allow"
Protocol = "Tcp"
Direction = "Inbound"
Priority = 110
SourceAddressPrefix = "Internet"
SourcePortRange = "*"
DestinationApplicationSecurityGroupId = $mgmtAsg.id
DestinationPortRange = 8080
}
$mgmtRule = New-AzNetworkSecurityRuleConfig @mgmtRuleParams
Gunakan Get-AzNetworkSecurityGroup untuk mengambil grup keamanan jaringan yang ada, lalu tambahkan aturan baru dengan += operator. Terakhir, perbarui grup keamanan jaringan dengan Set-AzNetworkSecurityGroup:
# Retrieve the existing network security group
$nsg = Get-AzNetworkSecurityGroup -Name "nsg-1" -ResourceGroupName "test-rg"
# Add the new rules to the security group
$nsg.SecurityRules += $webRule
$nsg.SecurityRules += $mgmtRule
# Update the network security group with the new rules
Set-AzNetworkSecurityGroup -NetworkSecurityGroup $nsg
Buat aturan keamanan dengan buat aturan nsg jaringan az. Contoh berikut membuat aturan yang memungkinkan lalu lintas masuk dari internet ke grup keamanan aplikasi asg-web melalui port 80:
az network nsg rule create \
--resource-group test-rg \
--nsg-name nsg-1 \
--name Allow-HTTP-Web \
--access Allow \
--protocol Tcp \
--direction Inbound \
--priority 100 \
--source-address-prefix Internet \
--source-port-range "*" \
--destination-asgs "asg-web" \
--destination-port-range 80
Contoh berikut membuat aturan yang memungkinkan lalu lintas masuk dari Internet ke grup keamanan aplikasi asg-mgmt melalui port 8080:
az network nsg rule create \
--resource-group test-rg \
--nsg-name nsg-1 \
--name Allow-8080-Mgmt \
--access Allow \
--protocol Tcp \
--direction Inbound \
--priority 110 \
--source-address-prefix Internet \
--source-port-range "*" \
--destination-asgs "asg-mgmt" \
--destination-port-range 8080
Membuat komputer virtual
Buat dua komputer virtual (VM) di jaringan virtual.
Di portal, cari dan pilih Mesin virtual.
Di Komputer virtual, pilih + Buat, lalu Komputer virtual.
Di Buat komputer virtual, masukkan atau pilih informasi ini di tab Dasar :
| Pengaturan |
Nilai |
|
Detail proyek |
|
| Langganan |
Pilih langganan Anda. |
| Grup sumber daya |
Pilih test-rg. |
|
Rincian contoh |
|
| Nama komputer virtual |
Masukkan vm-web. |
| Wilayah |
Pilih (AS) AS Barat 2. |
| Opsi ketersediaan |
Biarkan default Tidak diperlukan redundansi infrastruktur. |
| Jenis keamanan |
Pilih Standar. |
| Gambar |
Pilih Ubuntu Server 24.04 LTS - x64 Gen2. |
| Instans Azure Spot |
Biarkan pengaturan default dalam keadaan tidak dicentang. |
| Ukuran |
Pilih ukuran. |
|
Akun administrator |
|
| Jenis autentikasi |
Pilih Kunci publik SSH. |
| Nama pengguna |
Masukkan azureuser. |
| Sumber kunci publik SSH |
Pilih Buat pasangan kunci baru. |
| Nama pasangan kunci |
Masukkan vm-web-key. |
|
Aturan port masuk |
|
| Pilih port masuk |
Pilih Tidak ada. |
Pilih Berikutnya: Disk lalu Berikutnya: Jaringan.
Di tab Jaringan, masukkan atau pilih informasi berikut ini:
| Pengaturan |
Nilai |
|
Antarmuka jaringan |
|
| Jaringan virtual |
Pilih vnet-1. |
| Subnet |
Pilih subnet-1 (10.0.0.0/24). |
| IP Publik |
Biarkan default IP publik baru. |
| kelompok keamanan jaringan NIC |
Pilih Tidak ada. |
Pilih tab Tinjau + buat, atau pilih tombol Tinjau + buat biru di bagian bawah halaman.
Pilih Buat.
Saat diminta untuk Membuat pasangan kunci baru, pilih Unduh kunci privat dan buat sumber daya. Kunci privat diunduh ke komputer lokal Anda. VM mungkin membutuhkan waktu beberapa menit untuk disebarkan.
Ulangi langkah-langkah sebelumnya untuk membuat komputer virtual kedua bernama vm-mgmt dengan nama pasangan kunci vm-mgmt-key.
Sebelum membuat VM, ambil objek jaringan virtual dengan subnet dengan Get-AzVirtualNetwork:
$virtualNetworkParams = @{
Name = "vnet-1"
ResourceGroupName = "test-rg"
}
$virtualNetwork = Get-AzVirtualNetwork @virtualNetworkParams
Buat alamat IP publik untuk setiap VM dengan New-AzPublicIpAddress:
$publicIpWebParams = @{
AllocationMethod = "Static"
ResourceGroupName = "test-rg"
Location = "westus2"
Name = "public-ip-vm-web"
}
$publicIpWeb = New-AzPublicIpAddress @publicIpWebParams
$publicIpMgmtParams = @{
AllocationMethod = "Static"
ResourceGroupName = "test-rg"
Location = "westus2"
Name = "public-ip-vm-mgmt"
}
$publicIpMgmt = New-AzPublicIpAddress @publicIpMgmtParams
Buat dua antarmuka jaringan dengan New-AzNetworkInterface, dan tetapkan alamat IP publik ke antarmuka jaringan. Contoh berikut membuat antarmuka jaringan, mengaitkan alamat IP publik-ip-vm-web publik ke antarmuka tersebut.
$webNicParams = @{
Location = "westus2"
Name = "vm-web-nic"
ResourceGroupName = "test-rg"
SubnetId = $virtualNetwork.Subnets[0].Id
PublicIpAddressId = $publicIpWeb.Id
}
$webNic = New-AzNetworkInterface @webNicParams
Contoh berikut membuat antarmuka jaringan, mengaitkan alamat IP publik -ip-vm-mgmt publik ke dalamnya.
$mgmtNicParams = @{
Location = "westus2"
Name = "vm-mgmt-nic"
ResourceGroupName = "test-rg"
SubnetId = $virtualNetwork.Subnets[0].Id
PublicIpAddressId = $publicIpMgmt.Id
}
$mgmtNic = New-AzNetworkInterface @mgmtNicParams
Buat dua VM di jaringan virtual sehingga Anda dapat memvalidasi pemfilteran lalu lintas di langkah selanjutnya.
Hasilkan kunci SSH di Azure dengan New-AzSshKey. Contoh berikut membuat sumber daya kunci SSH untuk setiap VM:
# Create SSH key for vm-web
$webSshKeyParams = @{
ResourceGroupName = "test-rg"
Name = "vm-web-key"
}
New-AzSshKey @webSshKeyParams
# Create SSH key for vm-mgmt
$mgmtSshKeyParams = @{
ResourceGroupName = "test-rg"
Name = "vm-mgmt-key"
}
New-AzSshKey @mgmtSshKeyParams
Buat konfigurasi VM dengan New-AzVMConfig, lalu buat VM dengan New-AzVM. Contoh berikut membuat VM yang berfungsi sebagai server web. Opsi -AsJob membuat VM di latar belakang, sehingga Anda dapat melanjutkan ke langkah berikutnya:
# Get the SSH public key
$sshKey = Get-AzSshKey -Name "vm-web-key" -ResourceGroupName "test-rg"
$webVmConfigParams = @{
VMName = "vm-web"
VMSize = "Standard_DS1_V2"
}
$vmImageParams = @{
PublisherName = "Canonical"
Offer = "ubuntu-24_04-lts"
Skus = "server"
Version = "latest"
}
$webVmConfig = New-AzVMConfig @webVmConfigParams | `
Set-AzVMOperatingSystem -Linux -ComputerName "vm-web" -Credential (New-Object System.Management.Automation.PSCredential("azureuser", (ConvertTo-SecureString "DummyP@ssw0rd" -AsPlainText -Force))) -DisablePasswordAuthentication | `
Set-AzVMSourceImage @vmImageParams | `
Add-AzVMNetworkInterface -Id $webNic.Id | `
Set-AzVMOSDisk -CreateOption FromImage | `
Set-AzVMBootDiagnostic -Disable | `
Add-AzVMSshPublicKey -KeyData $sshKey.publicKey -Path "/home/azureuser/.ssh/authorized_keys"
$webVmParams = @{
ResourceGroupName = "test-rg"
Location = "westus2"
VM = $webVmConfig
}
New-AzVM @webVmParams -AsJob
Buat VM untuk berfungsi sebagai server manajemen:
# Get the SSH public key
$sshKey = Get-AzSshKey -Name "vm-mgmt-key" -ResourceGroupName "test-rg"
$mgmtVmConfigParams = @{
VMName = "vm-mgmt"
VMSize = "Standard_DS1_V2"
}
$vmImageParams = @{
PublisherName = "Canonical"
Offer = "ubuntu-24_04-lts"
Skus = "server"
Version = "latest"
}
$mgmtVmConfig = New-AzVMConfig @mgmtVmConfigParams | `
Set-AzVMOperatingSystem -Linux -ComputerName "vm-mgmt" -Credential (New-Object System.Management.Automation.PSCredential("azureuser", (ConvertTo-SecureString "DummyP@ssw0rd" -AsPlainText -Force))) -DisablePasswordAuthentication | `
Set-AzVMSourceImage @vmImageParams | `
Add-AzVMNetworkInterface -Id $mgmtNic.Id | `
Set-AzVMOSDisk -CreateOption FromImage | `
Set-AzVMBootDiagnostic -Disable | `
Add-AzVMSshPublicKey -KeyData $sshKey.publicKey -Path "/home/azureuser/.ssh/authorized_keys"
$mgmtVmParams = @{
ResourceGroupName = "test-rg"
Location = "westus2"
VM = $mgmtVmConfig
}
New-AzVM @mgmtVmParams
Komputer virtual membutuhkan waktu beberapa menit untuk dibuat. Jangan lanjutkan dengan langkah berikutnya hingga Azure selesai membuat VM.
Buat dua VM di jaringan virtual sehingga Anda dapat memvalidasi pemfilteran lalu lintas di langkah selanjutnya.
Buat VM dengan az vm create. Contoh berikut membuat VM yang berfungsi sebagai server web. Opsi --nsg "" ini ditentukan untuk mencegah Azure membuat grup keamanan jaringan default untuk antarmuka jaringan yang dibuat Azure saat membuat VM. Parameter --generate-ssh-keys menyebabkan CLI mencari kunci ssh yang tersedia di ~/.ssh. Jika ditemukan, kunci tersebut akan digunakan. Jika tidak, satu dihasilkan dan disimpan di ~/.ssh:
az vm create \
--resource-group test-rg \
--name vm-web \
--image Ubuntu2404 \
--vnet-name vnet-1 \
--subnet subnet-1 \
--nsg "" \
--admin-username azureuser \
--generate-ssh-keys
VM membutuhkan waktu beberapa menit untuk dibuat. Setelah VM dibuat, output yang mirip dengan contoh berikut dikembalikan:
{
"fqdns": "",
"id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test-rg/providers/Microsoft.Compute/virtualMachines/vm-web",
"location": "westus2",
"macAddress": "00-0D-3A-23-9A-49",
"powerState": "VM running",
"privateIpAddress": "10.0.0.4",
"publicIpAddress": "203.0.113.24",
"resourceGroup": "test-rg"
}
Buat VM dengan az vm create. Contoh berikut membuat VM yang berfungsi sebagai server manajemen:
az vm create \
--resource-group test-rg \
--name vm-mgmt \
--image Ubuntu2404 \
--vnet-name vnet-1 \
--subnet subnet-1 \
--nsg "" \
--admin-username azureuser \
--generate-ssh-keys
VM membutuhkan waktu beberapa menit untuk dibuat. Jangan lanjutkan dengan langkah berikutnya hingga Azure selesai membuat VM.
Mengaitkan antarmuka jaringan ke ASG
Saat Anda membuat VM, Azure membuat antarmuka jaringan untuk setiap VM, dan melampirkannya ke VM.
Tambahkan antarmuka jaringan setiap VM ke salah satu grup keamanan aplikasi yang Anda buat sebelumnya:
Di kotak pencarian di bagian atas portal, masukkan Jaringan virtual. Pilih Komputer virtual di hasil pencarian, lalu pilih vm-web.
Pilih Grup keamanan aplikasi dari bagian Jaringanvm-web.
Pilih Tambahkan grup keamanan aplikasi, lalu di tab Tambahkan grup keamanan aplikasi , pilih asg-web. Terakhir, pilih Tambahkan.
Ulangi langkah-langkah sebelumnya untuk vm-mgmt, memilih asg-mgmt di tab Tambahkan grup keamanan aplikasi .
Gunakan Get-AzNetworkInterface untuk mengambil antarmuka jaringan komputer virtual, lalu gunakan Get-AzApplicationSecurityGroup untuk mengambil grup keamanan aplikasi. Terakhir, gunakan Set-AzNetworkInterface untuk mengaitkan kelompok keamanan aplikasi dengan antarmuka jaringan. Contoh berikut mengaitkan grup keamanan aplikasi asg-web dengan antarmuka jaringan vm-web-nic :
$params1 = @{
Name = "vm-web-nic"
ResourceGroupName = "test-rg"
}
$nic = Get-AzNetworkInterface @params1
$params2 = @{
Name = "asg-web"
ResourceGroupName = "test-rg"
}
$asg = Get-AzApplicationSecurityGroup @params2
$nic.IpConfigurations[0].ApplicationSecurityGroups = @($asg)
$params3 = @{
NetworkInterface = $nic
}
Set-AzNetworkInterface @params3
Ulangi perintah untuk mengaitkan grup keamanan aplikasi asg-mgmt dengan antarmuka jaringan vm-mgmt-nic .
$params1 = @{
Name = "vm-mgmt-nic"
ResourceGroupName = "test-rg"
}
$nic = Get-AzNetworkInterface @params1
$params2 = @{
Name = "asg-mgmt"
ResourceGroupName = "test-rg"
}
$asg = Get-AzApplicationSecurityGroup @params2
$nic.IpConfigurations[0].ApplicationSecurityGroups = @($asg)
$params3 = @{
NetworkInterface = $nic
}
Set-AzNetworkInterface @params3
Gunakan az network nic update untuk mengaitkan antarmuka jaringan dengan kelompok keamanan aplikasi. Contoh berikut mengaitkan grup keamanan aplikasi asg-web dengan antarmuka jaringan vm-web-nic :
# Retrieve the network interface name associated with the virtual machine
nic_name=$(az vm show --resource-group test-rg --name vm-web --query 'networkProfile.networkInterfaces[0].id' -o tsv | xargs basename)
# Associate the application security group with the network interface
az network nic ip-config update \
--name ipconfigvm-web \
--nic-name $nic_name \
--resource-group test-rg \
--application-security-groups asg-web
Ulangi perintah untuk mengaitkan grup keamanan aplikasi asg-mgmt dengan antarmuka jaringan vm-mgmt-nic .
# Retrieve the network interface name associated with the virtual machine
nic_name=$(az vm show --resource-group test-rg --name vm-mgmt --query 'networkProfile.networkInterfaces[0].id' -o tsv | xargs basename)
# Associate the application security group with the network interface
az network nic ip-config update \
--name ipconfigvm-mgmt \
--nic-name $nic_name \
--resource-group test-rg \
--application-security-groups asg-mgmt
Menguji filter lalu lintas
Di kotak pencarian di bagian atas portal, masukkan Jaringan virtual. Pilih Jaringan Virtual dalam hasil pencarian.
Pilih vm-web.
Pilih Jalankan perintah dari bagian Operasi .
Pilih RunShellScript.
Di panel Jalankan Skrip Perintah , masukkan perintah berikut ini:
sudo apt-get update -y
sudo apt-get install -y nginx
sudo systemctl enable nginx
sudo systemctl start nginx
Pilih Jalankan. Tunggu hingga skrip berhasil diselesaikan.
Pada halaman Gambaran Umumvm-web, perhatikan alamat IP Publik untuk VM Anda.
Untuk mengonfirmasi bahwa Anda dapat mengakses server web vm-web dari internet di port 80, buka browser internet di komputer Anda dan telusuri ke http://<public-ip-address-from-previous-step>.
Anda melihat halaman default nginx, karena lalu lintas masuk dari internet ke grup keamanan aplikasi asg-web diizinkan melalui port 80.
Antarmuka jaringan yang dilampirkan untuk vm-web dikaitkan dengan kelompok keamanan aplikasi asg-web dan memungkinkan koneksi.
Cobalah untuk mengakses vm-web pada port 443 dengan menelusuri https://<public-ip-address-vm-web> di browser Anda. Koneksi gagal atau kehabisan waktu karena aturan keamanan untuk asg-web tidak mengizinkan port 443 masuk dari internet.
Sekarang konfigurasikan vm-mgmt dengan nginx pada port 8080. Pilih vm-mgmt dari halaman Komputer virtual.
Pilih Jalankan perintah dari bagian Operasi .
Pilih RunShellScript.
Di panel Jalankan Skrip Perintah , masukkan perintah berikut untuk menginstal nginx pada port 8080:
sudo apt-get update -y
sudo apt-get install -y nginx
# Configure nginx to listen on port 8080
sudo tee /etc/nginx/sites-available/default > /dev/null <<EOF
server {
listen 8080 default_server;
listen [::]:8080 default_server;
root /var/www/html;
index index.html index.htm index.nginx-debian.html;
server_name _;
location / {
try_files \$uri \$uri/ =404;
}
}
EOF
sudo systemctl restart nginx
Pilih Jalankan. Tunggu hingga skrip berhasil diselesaikan.
Pada halaman Gambaran Umumvm-mgmt, perhatikan alamat IP Publik untuk VM Anda.
Untuk mengonfirmasi bahwa Anda dapat mengakses server web vm-mgmt dari internet di port 8080, buka browser internet di komputer Anda dan telusuri ke http://<public-ip-address-vm-mgmt>:8080.
Anda melihat halaman default nginx karena lalu lintas masuk dari internet ke grup keamanan aplikasi asg-mgmt diizinkan melalui port 8080.
Cobalah untuk mengakses vm-mgmt pada port 80 dengan menelusuri di http://<public-ip-address-vm-mgmt> browser Anda. Koneksi gagal atau waktu habis karena tidak ada aturan keamanan yang memungkinkan port 80 masuk ke grup keamanan aplikasi asg-mgmt .
Antarmuka jaringan yang dilampirkan untuk vm-web dikaitkan dengan kelompok keamanan aplikasi asg-web dan memungkinkan koneksi.
Instal nginx di vm-web menggunakan Invoke-AzVMRunCommand:
$webInstallParams = @{
ResourceGroupName = "test-rg"
VMName = "vm-web"
CommandId = "RunShellScript"
ScriptString = @"
sudo apt-get update -y
sudo apt-get install -y nginx
sudo systemctl enable nginx
sudo systemctl start nginx
"@
}
Invoke-AzVMRunCommand @webInstallParams
Perintah mungkin memerlukan waktu beberapa menit untuk diselesaikan. Setelah selesai, uji akses web di vm-web.
Dapatkan alamat IP publik vm-web:
$webIPParams = @{
Name = "public-ip-vm-web"
ResourceGroupName = "test-rg"
}
$webIP = Get-AzPublicIpAddress @webIPParams
Write-Host "vm-web IP: $($webIP.IpAddress)"
Untuk mengonfirmasi bahwa Anda dapat mengakses server web vm-web dari internet di port 80, buka browser internet di komputer Anda dan telusuri ke http://<vm-web-ip-address>.
Anda melihat halaman default nginx karena lalu lintas masuk dari internet ke grup keamanan aplikasi asg-web diizinkan melalui port 80. Antarmuka jaringan yang terpasang pada VM vm-web ada di grup ini.
Cobalah untuk mengakses vm-web pada port 443 dengan menelusuri https://<vm-web-ip-address> di browser Anda. Koneksi gagal atau kehabisan waktu karena aturan keamanan untuk asg-web tidak mengizinkan port 443 masuk dari internet.
Sekarang instal nginx pada port 8080 pada vm-mgmt:
$mgmtInstallParams = @{
ResourceGroupName = "test-rg"
VMName = "vm-mgmt"
CommandId = "RunShellScript"
ScriptString = @"
sudo apt-get update -y
sudo apt-get install -y nginx
# Configure nginx to listen on port 8080
sudo tee /etc/nginx/sites-available/default > /dev/null <<'EOF'
server {
listen 8080 default_server;
listen [::]:8080 default_server;
root /var/www/html;
index index.html index.htm index.nginx-debian.html;
server_name _;
location / {
try_files \$uri \$uri/ =404;
}
}
EOF
sudo systemctl restart nginx
"@
}
Invoke-AzVMRunCommand @mgmtInstallParams
Dapatkan alamat IP publik vm-mgmt:
$mgmtIPParams = @{
Name = "public-ip-vm-mgmt"
ResourceGroupName = "test-rg"
}
$mgmtIP = Get-AzPublicIpAddress @mgmtIPParams
Write-Host "vm-mgmt IP: $($mgmtIP.IpAddress)"
Untuk mengonfirmasi bahwa Anda dapat mengakses server web vm-mgmt dari internet di port 8080, buka browser internet di komputer Anda dan telusuri ke http://<vm-mgmt-ip-address>:8080.
Anda melihat halaman default nginx karena lalu lintas masuk dari internet ke grup keamanan aplikasi asg-mgmt diizinkan melalui port 8080.
Cobalah untuk mengakses vm-mgmt pada port 80 dengan menelusuri di http://<vm-mgmt-ip-address> browser Anda. Koneksi gagal atau waktu habis karena tidak ada aturan keamanan yang memungkinkan port 80 masuk ke grup keamanan aplikasi asg-mgmt .
Instal nginx di vm-web menggunakan az vm run-command invoke:
az vm run-command invoke \
--resource-group test-rg \
--name vm-web \
--command-id RunShellScript \
--scripts "sudo apt-get update -y && sudo apt-get install -y nginx && sudo systemctl enable nginx && sudo systemctl start nginx"
Dapatkan alamat IP publik vm-web:
webIP=$(az vm show --show-details --resource-group test-rg --name vm-web --query publicIps --output tsv)
echo "vm-web IP: $webIP"
Untuk mengonfirmasi bahwa Anda dapat mengakses server web vm-web dari internet di port 80, gunakan curl:
curl http://$webIP
Koneksi berhasil karena kelompok keamanan aplikasi asg-web , yang dilampirkan antarmuka jaringan ke VM vm-web , memungkinkan port 80 masuk dari Internet.
Cobalah untuk mengakses vm-web pada port 443:
curl -k https://$webIP
Koneksi gagal atau kehabisan waktu karena aturan keamanan untuk asg-web tidak mengizinkan port 443 masuk dari internet.
Sekarang instal nginx pada port 8080 pada vm-mgmt:
az vm run-command invoke \
--resource-group test-rg \
--name vm-mgmt \
--command-id RunShellScript \
--scripts "sudo apt-get update -y && \
sudo apt-get install -y nginx && \
sudo bash -c 'cat > /etc/nginx/sites-available/default <<EOF
server {
listen 8080 default_server;
listen [::]:8080 default_server;
root /var/www/html;
index index.html index.htm index.nginx-debian.html;
server_name _;
location / {
try_files \\\$uri \\\$uri/ =404;
}
}
EOF' && \
sudo systemctl restart nginx"
Dapatkan alamat IP publik vm-mgmt:
mgmtIP=$(az vm show --show-details --resource-group test-rg --name vm-mgmt --query publicIps --output tsv)
echo "vm-mgmt IP: $mgmtIP"
Untuk mengonfirmasi bahwa Anda dapat mengakses server web vm-mgmt dari internet di port 8080, gunakan curl:
curl http://$mgmtIP:8080
Koneksi berhasil karena lalu lintas masuk dari internet ke kelompok keamanan aplikasi asg-mgmt diizinkan melalui port 8080.
Cobalah untuk mengakses vm-mgmt pada port 80:
curl http://$mgmtIP
Koneksi gagal atau waktu habis karena tidak ada aturan keamanan yang memungkinkan port 80 masuk ke grup keamanan aplikasi asg-mgmt .
Setelah selesai menggunakan sumber daya yang Anda buat, Anda dapat menghapus grup sumber daya dan semua sumber dayanya.
Di portal Azure, cari dan pilih Grup sumber daya.
Pada halaman Resource groups, pilih kelompok sumber daya test-rg.
Pada halaman test-rg, pilih Hapus grup sumber daya.
Masukkan test-rg di Masukkan nama grup sumber daya untuk mengonfirmasi penghapusan, lalu pilih Hapus.
Jika tidak lagi dibutuhkan, Anda dapat menggunakan Remove-AzResourceGroup untuk menghapus grup sumber daya dan semua sumber daya yang terkandung di dalamnya:
$params = @{
Name = "test-rg"
Force = $true
}
Remove-AzResourceGroup @params
Jika tidak lagi diperlukan, gunakan az group delete untuk menghapus grup sumber daya dan semua sumber daya yang ada di dalamnya.
az group delete \
--name test-rg \
--yes \
--no-wait
Langkah selanjutnya
Di tutorial ini, Anda akan:
- Membuat grup keamanan jaringan dan mengaitkannya ke subnet jaringan virtual.
- Membuat grup keamanan aplikasi untuk lalu lintas web dan manajemen.
- Membuat dua komputer virtual Linux dengan autentikasi kunci SSH dan mengaitkan antarmuka jaringan mereka dengan kelompok keamanan aplikasi.
- Menginstal server web nginx pada kedua VM dengan konfigurasi port yang berbeda.
- Menguji pemfilteran jaringan kelompok keamanan aplikasi dengan menunjukkan bahwa vm-web memungkinkan port 80 (HTTP) tetapi menolak port 443, sementara vm-mgmt memungkinkan port 8080 tetapi menolak port 80 (HTTP).
Untuk mempelajari selengkapnya tentang grup keamanan jaringan, lihat Gambaran umum grup keamanan jaringan dan Mengelola grup keamanan jaringan.
Azure merutekan lalu lintas antar subnet secara default. Sebagai gantinya, Anda dapat memilih untuk merutekan lalu lintas antar subnet melalui VM, yang berfungsi sebagai firewall, misalnya.
Untuk mempelajari cara membuat tabel rute, lanjutkan ke tutorial berikutnya.