Membatasi akses jaringan ke sumber daya PaaS dengan titik akhir layanan jaringan virtual menggunakan Azure CLI

Titik akhir layanan jaringan virtual memungkinkan Anda membatasi akses jaringan ke beberapa sumber daya layanan Azure ke subnet jaringan virtual. Anda juga dapat menghapus akses internet ke sumber daya. Titik akhir layanan menyediakan koneksi langsung dari jaringan virtual Anda ke layanan Azure yang didukung, memungkinkan Anda menggunakan ruang alamat privat jaringan virtual untuk mengakses layanan Azure. Lalu lintas yang ditetapkan ke sumber daya Azure melalui titik akhir layanan tetap berada di jaringan backbone Microsoft Azure. Dalam artikel ini, Anda akan pelajari cara:

  • Membuat jaringan virtual dengan satu subnet
  • Menambahkan subnet dan mengaktifkan titik akhir layanan
  • Membuat sumber daya Azure dan mengizinkan akses jaringan hanya dari subnet
  • Menyebarkan komputer virtual (VM) ke setiap subnet
  • Mengonfirmasi akses ke sumber daya dari subnet
  • Mengonfirmasi akses ditolak ke sumber daya dari subnet dan internet

Jika Anda tidak memiliki langganan Azure, buatlah akun gratis sebelum Anda memulai.

Prasyarat

  • Gunakan lingkungan Bash di Azure Cloud Shell.

    Luncurkan Cloud Shell di jendela baru

  • Jika mau, instal Azure CLI untuk menjalankan perintah referensi CLI.

    • Jika Anda menggunakan instalasi lokal, masuk ke Azure CLI dengan menggunakan perintah login az. Untuk menyelesaikan proses autentikasi, ikuti langkah-langkah yang ditampilkan di terminal Anda. Untuk opsi masuk tambahan, lihat Masuk dengan Azure CLI.

    • Saat diminta, instal ekstensi saat pertama kali menggunakan Azure CLI. Untuk informasi selengkapnya tentang ekstensi, lihat Menggunakan ekstensi dengan Azure CLI.

    • Jalankan versi az untuk menemukan versi dan pustaka dependen yang diinstal. Untuk memutakhirkan ke versi terbaru, jalankan pemutakhiran az.

  • Artikel ini memerlukan Azure CLI versi 2.0.28 atau yang lebih baru. Jika ingin menggunakan Azure Cloud Shell, versi terbaru sudah terpasang.

Membuat jaringan virtual

Sebelum membuat jaringan virtual, Anda harus membuat grup sumber daya untuk jaringan virtual, dan semua sumber daya lain yang dibuat di artikel ini. Membuat grup sumber daya dengan membuat grup az. Contoh berikut ini menampilkan cara membuat grup sumber daya bernama myResourceGroup di lokasi eastus.

az group create \
  --name myResourceGroup \
  --location eastus

Membuat jaringan virtual menggunakan satu subnet dengan membuat vnet jaringan az .

az network vnet create \
  --name myVirtualNetwork \
  --resource-group myResourceGroup \
  --address-prefix 10.0.0.0/16 \
  --subnet-name Public \
  --subnet-prefix 10.0.0.0/24

Mengaktifkan titik akhir layanan

Anda hanya dapat mengaktifkan titik akhir layanan untuk layanan yang mendukung titik akhir layanan. Melihat layanan yang mendukung titik akhir layanan tersedia di lokasi Azure dengan jaringan az vnet list-endpoint-services. Contoh berikut mengembalikan daftar layanan yang mendukung titik akhir layanan yang tersedia di wilayah eastus. Daftar layanan yang dikembalikan akan bertambah banyak karena layanan Azure yang menjadi titik akhir layanan yang diaktifkan juga semakin banyak.

az network vnet list-endpoint-services \
  --location eastus \
  --out table

Membuat subnet tambahan di jaringan virtual dengan membuat subnet vnet jaringan . Dalam contoh ini, titik akhir layanan untuk Microsoft Storage dibuat untuk subnet:

az network vnet subnet create \
  --vnet-name myVirtualNetwork \
  --resource-group myResourceGroup \
  --name Private \
  --address-prefix 10.0.1.0/24 \
  --service-endpoints Microsoft.Storage

Membatasi akses jaringan untuk subnet

Membuat kelompok keamanan jaringan dengan membuat nsg jaringan az. Contoh berikut membuat kelompok keamanan jaringan bernama myNsgPrivate.

az network nsg create \
  --resource-group myResourceGroup \
  --name myNsgPrivate

Kaitkan kelompok keamanan jaringan ke subnet Privat dengan pembaruan subnet vnet jaringan az . Contoh berikut mengaitkan kelompok keamanan jaringan myNsgPrivate ke subnet Privat:

az network vnet subnet update \
  --vnet-name myVirtualNetwork \
  --name Private \
  --resource-group myResourceGroup \
  --network-security-group myNsgPrivate

Membuat aturan keamanan dengan membuat aturan nsg jaringan az. Aturan berikut ini memungkinkan akses keluar ke alamat IP publik yang ditetapkan ke layanan Microsoft Azure Storage:

az network nsg rule create \
  --resource-group myResourceGroup \
  --nsg-name myNsgPrivate \
  --name Allow-Storage-All \
  --access Allow \
  --protocol "*" \
  --direction Outbound \
  --priority 100 \
  --source-address-prefix "VirtualNetwork" \
  --source-port-range "*" \
  --destination-address-prefix "Storage" \
  --destination-port-range "*"

Setiap kelompok keamanan jaringan berisi beberapa aturan keamanan default. Aturan yang mengikuti mengambil alih aturan keamanan default yang memungkinkan akses keluar ke semua alamat IP publik. Opsi destination-address-prefix "Internet" ini menolak akses keluar ke semua alamat IP publik. Aturan sebelumnya mengambil alih aturan ini karena prioritasnya yang lebih tinggi, yang memungkinkan akses ke alamat IP publik Microsoft Azure Storage.

az network nsg rule create \
  --resource-group myResourceGroup \
  --nsg-name myNsgPrivate \
  --name Deny-Internet-All \
  --access Deny \
  --protocol "*" \
  --direction Outbound \
  --priority 110 \
  --source-address-prefix "VirtualNetwork" \
  --source-port-range "*" \
  --destination-address-prefix "Internet" \
  --destination-port-range "*"

Aturan berikut memungkinkan lalu lintas SSH masuk ke subnet dari mana saja. Aturan ini mengambil alih aturan keamanan default yang menolak semua lalu lintas masuk dari internet. SSH diizinkan ke subnet agar konektivitas dapat diuji di langkah selanjutnya.

az network nsg rule create \
  --resource-group myResourceGroup \
  --nsg-name myNsgPrivate \
  --name Allow-SSH-All \
  --access Allow \
  --protocol Tcp \
  --direction Inbound \
  --priority 120 \
  --source-address-prefix "*" \
  --source-port-range "*" \
  --destination-address-prefix "VirtualNetwork" \
  --destination-port-range "22"

Membatasi akses jaringan ke sumber daya

Langkah-langkah yang diperlukan untuk membatasi akses jaringan ke sumber daya yang dibuat melalui layanan Azure, yang diaktifkan untuk titik akhir layanan akan bervariasi di seluruh layanan. Lihat dokumentasi layanan individual untuk langkah-langkah spesifik setiap layanan. Tutorial selanjutnya mencakup langkah-langkah untuk membatasi akses jaringan untuk akun Microsoft Azure Storage, sebagai contoh.

Buat akun penyimpanan

Membuat dua akun penyimpanan Azure dengan membuat akun penyimpanan az. Memasukkan<replace-with-your-unique-storage-account-name> nama yang unik di semua lokasi Azure, dengan panjang antara 3-24 karakter, hanya menggunakan angka dan huruf kecil.

storageAcctName="<replace-with-your-unique-storage-account-name>"

az storage account create \
  --name $storageAcctName \
  --resource-group myResourceGroup \
  --sku Standard_LRS \
  --kind StorageV2

Setelah akun penyimpanan dibuat, ambil string koneksi untuk akun penyimpanan ke dalam variabel dengan akun penyimpanan az show-connection-string. String koneksi digunakan untuk membuat berbagi file di langkah selanjutnya.

saConnectionString=$(az storage account show-connection-string \
  --name $storageAcctName \
  --resource-group myResourceGroup \
  --query 'connectionString' \
  --out tsv)

Lihat konten variabel dan catat nilai AccountKey yang dikembalikan dalam output, karena digunakan di langkah selanjutnya.

echo $saConnectionString

Membuat berbagi file di akun penyimpanan

Membuat berbagi file di akun penyimpanan dengan membuat berbagi penyimpanan az. Pada langkah selanjutnya, berbagi file ini dipasang untuk mengonfirmasi akses jaringan ke file tersebut.

az storage share create \
  --name my-file-share \
  --quota 2048 \
  --connection-string $saConnectionString > /dev/null

Menolak semua akses jaringan ke akun penyimpanan

Secara default, akun penyimpanan menerima koneksi jaringan dari klien di jaringan apa pun. Untuk membatasi akses ke jaringan yang dipilih, ubah tindakan default ke Tolak dengan pembaruan akun penyimpanan az. Setelah akses jaringan ditolak, akun penyimpanan tidak dapat diakses dari jaringan apa pun.

az storage account update \
  --name $storageAcctName \
  --resource-group myResourceGroup \
  --default-action Deny

Mengaktifkan akses jaringan dari subnet

Mengizinkan akses jaringan ke akun penyimpanan dari subnet Privat dengan menambahkan aturan jaringan akun penyimpanan az.

az storage account network-rule add \
  --resource-group myResourceGroup \
  --account-name $storageAcctName \
  --vnet-name myVirtualNetwork \
  --subnet Private

Membuat komputer virtual

Untuk menguji akses jaringan ke akun penyimpanan,sebarkan komputer virtual ke setiap subnet.

Membuat komputer virtual pertama

Membuat VM di subnet Privat dengan membuat az vm. Jika tombol SSH belum ada di lokasi kunci default, perintah akan membuatnya. Untuk menggunakan set tombol tertentu, gunakan opsi --ssh-key-value.

az vm create \
  --resource-group myResourceGroup \
  --name myVmPublic \
  --image UbuntuLTS \
  --vnet-name myVirtualNetwork \
  --subnet Public \
  --generate-ssh-keys

Komputer virtual membutuhkan waktu beberapa menit untuk dibuat. Saat akun Azure Cosmos DB dibuat, Azure CLI menampilkan informasi yang mirip dengan contoh berikut:

{
  "fqdns": "",
  "id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myResourceGroup/providers/Microsoft.Compute/virtualMachines/myVmPublic",
  "location": "eastus",
  "macAddress": "00-0D-3A-23-9A-49",
  "powerState": "VM running",
  "privateIpAddress": "10.0.0.4",
  "publicIpAddress": "13.90.242.231",
  "resourceGroup": "myResourceGroup"
}

Perhatikan publicIpAddress dalam output yang dikembalikan. Alamat ini digunakan untuk mengakses komputer virtual dari internet di langkah selanjutnya.

Membuat komputer virtual kedua

az vm create \
  --resource-group myResourceGroup \
  --name myVmPrivate \
  --image UbuntuLTS \
  --vnet-name myVirtualNetwork \
  --subnet Private \
  --generate-ssh-keys

Komputer virtual membutuhkan waktu beberapa menit untuk dibuat. Setelah pembuatan, perhatikan publicIpAddress dalam output yang dikembalikan. Alamat ini digunakan untuk mengakses komputer virtual dari internet di langkah selanjutnya.

Mengonfirmasi akses ke akun penyimpanan

SSH ke komputer virtual myVmPrivate. Ganti <publicIpAddress> dengan alamat IP publik myVmPrivate VM Anda.

ssh <publicIpAddress>

Membuat folder untuk titik kait:

sudo mkdir /mnt/MyAzureFileShare

Mengaitkan berbagi file Azure ke direktori yang Anda buat. Sebelum menjalankan perintah berikut, ganti <storage-account-name> dengan nama akun dan <storage-account-key>dengan kunci yang Anda ambil di Buat akun penyimpanan.

sudo mount --types cifs //<storage-account-name>.file.core.windows.net/my-file-share /mnt/MyAzureFileShare --options vers=3.0,username=<storage-account-name>,password=<storage-account-key>,dir_mode=0777,file_mode=0777,serverino

Anda menerima user@myVmPrivate:~$ perintah. Berbagi file Azure berhasil dipasang ke /mnt/MyAzureFileShare.

Pastikan bahwa komputer virtual tidak memiliki konektivitas keluar ke alamat IP publik lainnya:

ping bing.com -c 4

Anda tidak menerima balasan karena kelompok keamanan jaringan yang terkait dengan subnet Privat tidak mengizinkan akses keluar ke alamat IP publik selain alamat yang ditetapkan ke layanan Microsoft Azure Storage.

Keluar dari sesi SSH ke komputer virtual myVmPublic.

Konfirmasi akses ditolak ke akun penyimpanan

Menggunakan perintah berikut untuk membuat sesi SSH dengan komputer virtual myVMPublic. Mengganti <publicIpAddress> dengan alamat IP publik komputer virtual myVmPrivate Anda:

ssh <publicIpAddress>

Membuat direktori untuk titik kait:

sudo mkdir /mnt/MyAzureFileShare

Mengaitkan berbagi file Azure ke direktori yang Anda buat. Artikel ini mengasumsikan Anda menyebarkan Ubuntu versi terbaru. Jika Anda menggunakan Ubuntu versi lama, lihat Mount on Linux untuk petunjuk tambahan pemasangan berbagi file. Sebelum menjalankan perintah berikut, ganti <storage-account-name> dengan nama akun dan <storage-account-key>dengan kunci yang Anda ambil di Membuat akun penyimpanan:

sudo mount --types cifs //storage-account-name>.file.core.windows.net/my-file-share /mnt/MyAzureFileShare --options vers=3.0,username=<storage-account-name>,password=<storage-account-key>,dir_mode=0777,file_mode=0777,serverino

Akses ditolak, dan Anda menerima mount error(13): Permission denied kesalahan, karena komputer virtual myVmPublic diterapkan dalam subnet Publik. Subnet publik tidak memiliki titik akhir layanan yang diaktifkan untuk Microsoft Azure Storage, dan akun penyimpanan hanya mengizinkan akses jaringan dari subnet Privat, bukan subnet Publik.

Keluar dari sesi SSH ke komputer virtual myVmPublic.

Dari komputer Anda, coba lihat berbagi di akun penyimpanan Anda dengan daftar berbagi penyimpanan az. Mengganti <account-name> dan <account-key>dengan nama akun penyimpanan dan kunci dari Membuat akun penyimpanan:

az storage share list \
  --account-name <account-name> \
  --account-key <account-key>

Akses ditolak dan Anda menerima Permintaan ini tidak berwenang untuk melakukan kesalahan operasi ini, karena komputer Anda tidak berada di subnet Privat dari jaringan virtual MyVirtualNetwork.

Bersihkan sumber daya

Jika tidak lagi dibutuhkan, gunakan hapus grup az untuk menghapus grup sumber daya dan semua sumber daya di dalamnya.

az group delete --name myResourceGroup --yes

Langkah berikutnya

Dalam tutorial ini, Anda mengaktifkan titik akhir layanan untuk subnet jaringan virtual. Anda mempelajari bahwa titik akhir layanan dapat diaktifkan untuk sumber daya yang diterapkan dengan beberapa layanan Azure. Anda membuat akun Microsoft Azure Storage dan membatasi akses jaringan ke akun penyimpanan hanya untuk sumber daya dalam subnet jaringan virtual. Untuk mempelajari selengkapnya tentang titik akhir layanan, lihat Ringkasan titik akhir layanan dan Mengelola subnet.

Jika ada beberapa jaringan virtual di akun Anda, Anda mungkin ingin menghubungkan dua jaringan virtual sehingga sumber daya dalam setiap jaringan virtual dapat berkomunikasi satu sama lain. Untuk mempelajari caranya, lihat Menyambungkan jaringan virtual.