Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Banyak aplikasi memiliki lebih dari satu komponen. Misalnya, Anda mungkin memiliki frontend yang dapat diakses secara publik dan terhubung ke API backend atau aplikasi web. Sumber daya backend mungkin terhubung ke database, akun penyimpanan, brankas kunci, komputer virtual lain, atau kombinasi sumber daya ini. Arsitektur ini adalah fondasi aplikasi N-tingkat. Penting bahwa aplikasi seperti ini dirancang untuk melindungi sumber daya backend sejauh mungkin.
Tutorial ini menjelaskan cara menyebarkan aplikasi N-tingkat yang aman dengan aplikasi web frontend yang terhubung ke aplikasi web lain yang terisolasi jaringan. Seluruh lalu lintas diisolasi dalam Microsoft Azure Virtual Network Anda dengan integrasi Virtual Network dan titik akhir privat. Untuk panduan lebih komprehensif yang mencakup skenario lain, lihat:
Di tutorial ini, Anda akan:
- Membuat jaringan virtual dan subnet untuk integrasi jaringan virtual App Service
- Membuat zona DNS privat dan titik akhir privat
- Mengonfigurasi integrasi jaringan virtual di App Service
- Menonaktifkan autentikasi dasar di App service
- Menerapkan secara berkelanjutan ke aplikasi web backend yang diamankan secara ketat
Prasyarat
Tutorial ini menggunakan dua sampel aplikasi Node.js yang dihosting di GitHub. Jika Anda belum memiliki akun GitHub, buat akun secara gratis.
Jika Anda tidak memiliki akun Azure, buat akun gratis sebelum memulai.
Untuk menyelesaikan tutorial ini:
Gunakan lingkungan Bash di Azure Cloud Shell. Untuk informasi selengkapnya, lihat Mulai menggunakan Azure Cloud Shell.
Jika Anda lebih suka menjalankan perintah referensi CLI secara lokal, instal Azure CLI. Jika Anda menjalankan Windows atau macOS, pertimbangkan untuk menjalankan Azure CLI dalam kontainer Docker. Untuk informasi lebih lanjut, lihat Cara menjalankan Azure CLI di kontainer Docker.
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 lainnya, lihat Mengautentikasi ke Azure menggunakan Azure CLI.
Saat Anda diminta, instal ekstensi Azure CLI pada penggunaan pertama. Untuk informasi selengkapnya tentang ekstensi, lihat Menggunakan dan mengelola ekstensi dengan Azure CLI.
Jalankan versi az untuk menemukan versi dan pustaka dependen yang diinstal. Untuk memutakhirkan ke versi terbaru, jalankan az upgrade.
Tinjau arsitektur skenario
Tutorial ini menunjukkan cara mengonfigurasi arsitektur yang diilustrasikan dalam diagram berikut. Skenario ini mewakili salah satu kemungkinan konfigurasi N-tingkat di App Service. Anda dapat menggunakan konsep yang tercakup dalam tutorial ini untuk membangun aplikasi N-tingkat yang lebih kompleks.
Arsitektur memiliki jaringan virtual yang berisi dua subnet. Satu subnet terintegrasi dengan aplikasi web frontend, dan subnet lainnya memiliki titik akhir privat untuk aplikasi web backend. Jaringan virtual memblokir semua lalu lintas jaringan masuk, kecuali lalu lintas yang menargetkan aplikasi frontend terintegrasi.
Aplikasi web frontend diintegrasikan ke dalam jaringan virtual dan dapat diakses dari internet publik.
Aplikasi web backend hanya dapat diakses melalui titik akhir privat di jaringan virtual.
Titik akhir privat terintegrasi dengan aplikasi web backend dan membuat aplikasi web dapat diakses melalui alamat IP privat.
Zona Private DNS memungkinkan resolusi nama DNS ke alamat IP titik akhir privat.
Catatan
Untuk mengonfigurasi integrasi jaringan virtual dan titik akhir privat, Anda memerlukan Basic tingkat Azure App Service atau tingkat yang lebih tinggi. Tingkat Gratis tidak mendukung fitur-fitur ini.
Skenario dalam tutorial ini menyediakan perilaku berikut:
- Lalu lintas publik ke aplikasi backend diblokir.
- Lalu lintas keluar dari App Service dirutekan ke jaringan virtual dan dapat mencapai aplikasi backend.
- App Service dapat melakukan resolusi DNS ke aplikasi backend.
Membuat dua aplikasi web
Anda memerlukan dua aplikasi web App Service, satu untuk frontend dan satu untuk backend. Aplikasi dapat berjalan di lokasi wilayah yang sama. Untuk menyiapkan integrasi jaringan virtual dan bekerja dengan titik akhir privat, gunakan setidaknya tingkat Basic Azure App Service. Anda mengonfigurasi integrasi jaringan virtual dan pengaturan lainnya nanti.
Buat grup sumber daya untuk mengelola semua sumber daya untuk tutorial ini.
Atur placeholder
<resource-group>menjadi nama grup sumber daya baru Anda, sepertizava-resources. Atur placeholder<region-location>ke wilayah untuk grup sumber daya baru Anda, sepertieastus.# Define variables for the resource group name and region location resourceGroupName=<resource-group> regionLocation=<region-location> # Create the resource group az group create --name $resourceGroupName --location $regionLocationUntuk informasi selengkapnya, lihat referensi perintah az group create .
Buat paket App Service untuk sumber daya Anda.
Atur placeholder
<app-service-plan>menjadi nama untuk paket App Service baru Anda, sepertizava-app-service-plan.Contoh tutorial menetapkan parameter
--skukeP1V3(Premium V3). Anda dapat menggunakan nilai ini atau menentukan SKU yang berbeda. SKU harus mendukung fitur jaringan yang diperlukan untuk tutorial ini. Pilih tingkat Dasar atau yang lebih tinggi.# Define a variable for the App Service plan name appServicePlanName=<app-service-plan> # Create the App Service plan az appservice plan create --name $appServicePlanName --resource-group $resourceGroupName --is-linux --location $regionLocation --sku P1V3Untuk informasi selengkapnya, lihat referensi perintah az appservice plan create .
Buat aplikasi web frontend dan backend.
Contoh tutorial membuat dua sampel Node.js aplikasi, di mana versi bahasa runtime adalah
NODE:24-lts. Jika Anda lebih suka menggunakan aplikasi Anda sendiri, sesuaikan nilai parameter--runtime<language-version>. Anda dapat menjalankanaz webapp list-runtimesperintah untuk daftar runtime yang tersedia:az webapp list-runtimesAtur placeholder
<frontend-app-name>menjadi nama untuk aplikasi web frontend baru Anda, sepertizava-frontend-app. Nama harus unik secara global dan terdiri dari karakter yang valid (a-z,0-9,-). Begitu pula, atur placeholder<backend-app-name>menjadi nama untuk aplikasi web backend baru Anda, sepertizava-backend-app.# Define variables for the App Service web app names frontendAppName=<frontend-app-name> backendAppName=<backend-app-name> # Create the web apps az webapp create --name $frontendAppName --resource-group $resourceGroupName --plan $appServicePlanName --runtime "NODE:24-lts" az webapp create --name $backendAppName --resource-group $resourceGroupName --plan $appServicePlanName --runtime "NODE:24-lts"Untuk informasi selengkapnya, lihat referensi perintah az webapp create .
Buat infrastruktur jaringan.
Infrastruktur jaringan virtual terdiri dari sumber daya berikut:
- Instans Microsoft Azure Virtual Network
- Subnet untuk integrasi jaringan virtual App Service
- Subnet lain untuk titik akhir privat
- Zona Azure Private DNS
- Titik akhir privat
Membuat Azure Virtual Network.
Atur placeholder
<virtual-network-name>ke nama jaringan virtual baru Anda, sepertizava-virtual-network. Nama harus unik secara global.# Define a variable for the virtual network name virtualNetworkName=<virtual-network-name> # Create the virtual network az network vnet create --resource-group $resourceGroupName --location $regionLocation --name $virtualNetworkName --address-prefixes 10.0.0.0/16Untuk informasi selengkapnya, lihat referensi perintah az network vnet create .
Buat subnet untuk integrasi jaringan virtual App Service.
Atur placeholder
<network-integration-subnet>menjadi nama subnet baru Anda yang mendukung integrasi jaringan virtual, sepertizava-integration-subnet.Untuk App Service, subnet integrasi jaringan virtual disarankan untuk memiliki blok CIDR minimal
/26./24sudah lebih dari cukup.--delegations Microsoft.Web/serverfarmsmenetapkan bahwa subnet didelegasikan untuk integrasi jaringan virtual App Service.# Define a variable for the integration subnet name networkIntegrationSubnet=<network-integration-subnet> # Create the subnet for virtual network integration az network vnet subnet create --resource-group $resourceGroupName --vnet-name $virtualNetworkName --name $networkIntegrationSubnet \ --address-prefixes 10.0.0.0/24 --delegations Microsoft.Web/serverfarms \ --disable-private-endpoint-network-policies falseUntuk informasi selengkapnya, lihat referensi perintah az network vnet subnet create .
Buat subnet lain untuk titik akhir privat.
Atur placeholder
<private-endpoint-subnet>menjadi nama subnet baru Anda yang mendukung private endpoint, sepertizava-endpoint-subnet.# Define a variable for the private endpoint subnet name privateEndpointSubnet=<private-endpoint-subnet> # Create the subnet for the private endpoint az network vnet subnet create --resource-group $resourceGroupName --vnet-name $virtualNetworkName --name $privateEndpointSubnet \ --address-prefixes 10.0.1.0/24 \ --disable-private-endpoint-network-policies trueUntuk subnet private endpoint, Anda harus menonaktifkan kebijakan jaringan private endpoint dengan menetapkan flag
--disable-private-endpoint-network-policiesketrue. Untuk informasi selengkapnya, lihat parameter Opsional untuk perintah az network vnet subnet create .Catatan
Bendera
--private-endpoint-network-policiesmungkin segera menggantikan--disable-private-endpoint-network-policiesbendera.Buat zona Azure Private DNS.
Atur placeholder
<private-zone-name>menjadi nama untuk zona Private DNS baru Anda, sepertizava-private.azurewebsites.net.# Define a variable for the Private DNS zone privateDNSZone=<private-zone-name> # Create the Private DNS zone az network private-dns zone create --resource-group $resourceGroupName --name $privateDNSZoneUntuk informasi selengkapnya, lihat referensi perintah az network vnet subnet create . Untuk informasi selengkapnya tentang mengonfigurasi zona Private DNS, lihat konfigurasi zona DNS layanan Azure.
Catatan
Jika Anda membuat titik akhir privat di portal Azure, zona Azure Private DNS dibuat untuk konfigurasi Anda secara otomatis. Untuk konsistensi prosedural dalam tutorial ini, Anda membuat zona Private DNS dan titik akhir privat secara terpisah dengan menggunakan Azure CLI.
Tautkan zona Private DNS ke jaringan virtual.
Atur placeholder
<dns-link-name>menjadi nama untuk tautan DNS baru Anda, sepertizava-private-link.# Define a variable for the DNS link name dnsLinkName=<dns-link-name> # Create the link between the Private DNS zone and the virtual network az network private-dns link vnet create --resource-group $resourceGroupName --name $dnsLinkName --zone-name $privateDNSZone \ --virtual-network $virtualNetworkName --registration-enabled FalseUntuk informasi selengkapnya, lihat referensi perintah az network private-dns link vnet create .
Di subnet endpoint privat pada jaringan virtual Anda, buat endpoint privat untuk aplikasi web backend Anda.
Atur placeholder
<private-endpoint-name>menjadi nama titik akhir privat baru untuk aplikasi web backend Anda, sepertizava-backend-endpoint. Atur placeholder<service-connection-name>menjadi nama koneksi layanan baru, sepertizava-backend-connection.# Define variables for the private endpoint and service connection privateEndpointName=<private-endpoint-name> serviceConnectionName=<service-connection-name> # Get the resource ID of the backend web app resourceId=$(az webapp show --resource-group $resourceGroupName --name $backendAppName --query id --output tsv) # Create the private endpoint for the backend web app by using the resource ID az network private-endpoint create --resource-group $resourceGroupName --name $privateEndpointName --location $regionLocation \ --connection-name $serviceConnectionName --private-connection-resource-id $resourceId \ --group-id sites --vnet-name $virtualNetworkName --subnet $privateEndpointSubnetUntuk informasi selengkapnya, lihat referensi perintah buat titik akhir privat jaringan az .
Tautkan titik akhir privat ke zona Private DNS dengan grup Zona DNS untuk titik akhir privat aplikasi web backend.
Atur placeholder
<dns-zone-group-name>ke nama grup zona DNS baru Anda, misalnyazava-dns-zone-group. Grup zona DNS membantu pembaruan otomatis zona Private DNS saat titik akhir privat diperbarui.# Define a variable for the DNS Zone group dnsZoneGroupName=<dns-zone-group-name> # Link the private endpoint to the Private DNS az network private-endpoint dns-zone-group create --resource-group $resourceGroupName --endpoint-name $privateEndpointName \ --name $dnsZoneGroupName --private-dns-zone $privateDNSZone --zone-name $privateDNSZoneUntuk informasi selengkapnya, lihat referensi perintah az network private-endpoint dns-zone-group create .
Pastikan akses langsung ke endpoint privat Anda ditolak.
Saat Anda membuat titik akhir privat untuk aplikasi App Service, akses publik secara implisit dinonaktifkan. Jika Anda mencoba mengakses aplikasi web backend dengan menggunakan URL defaultnya, akses Anda ditolak.
Di browser, masukkan URL default untuk aplikasi web backend Anda, seperti
<backend-app-name>.azurewebsites.net.Pesan browser menunjukkan akses langsung ditolak:
Untuk informasi selengkapnya tentang pembatasan akses App Service dengan titik akhir privat, lihat Pembatasan akses Azure App Service.
Mengonfigurasi integrasi jaringan virtual
Setelah membuat infrastruktur jaringan virtual, Anda dapat menyiapkan integrasi jaringan virtual di aplikasi web frontend Anda. Integrasi jaringan virtual memungkinkan lalu lintas keluar mengalir langsung ke jaringan virtual. Secara default, hanya lalu lintas IP lokal yang ditentukan dalam rute protokol Ruang Alamat Privat RFC-1918 > ke jaringan virtual. Tingkat perutean inilah yang Anda butuhkan untuk mengaktifkan titik akhir privat.
Aktifkan integrasi jaringan virtual di aplikasi web frontend Anda. Perintah berikut mengasumsikan subnet dan aplikasi web terletak di grup sumber daya yang sama.
az webapp vnet-integration add --resource-group $resourceGroupName --name $frontendAppName --vnet $virtualNetworkName --subnet $networkIntegrationSubnet
Untuk informasi selengkapnya, lihat referensi perintah az webapp vnet-integration add .
Untuk merutekan semua lalu lintas ke jaringan virtual, lihat Mengelola perutean integrasi jaringan virtual. Perutean semua lalu lintas juga dapat digunakan jika Anda ingin merutekan lalu lintas internet melalui jaringan virtual Anda, seperti melalui Microsoft Azure Virtual Network NAT atau Azure Firewall.
Mengaktifkan penyebaran ke aplikasi web backend
Karena aplikasi web backend Anda tidak dapat diakses secara publik, Anda harus mengizinkan alat penyebaran berkelanjutan menjangkau aplikasi Anda dengan membuat situs SCM dapat diakses secara publik dari internet. Aplikasi web utama itu sendiri dapat terus menolak semua lalu lintas.
Aktifkan akses publik untuk aplikasi web back-end.
az webapp update --resource-group $resourceGroupName --name $backendAppName --set publicNetworkAccess=EnabledAtur tindakan untuk aturan yang tidak sesuai pada aplikasi web utama agar menolak semua trafik.
Pengaturan ini menolak akses publik ke aplikasi web utama meskipun pengaturan akses aplikasi umum diatur untuk mengizinkan akses publik.
az resource update --resource-group $resourceGroupName --name $backendAppName --namespace Microsoft.Web \ --resource-type sites --set properties.siteConfig.ipSecurityRestrictionsDefaultAction=DenyAtur tindakan untuk aturan yang tidak cocok pada situs SCM agar mengizinkan semua trafik.
az resource update --resource-group $resourceGroupName --name $backendAppName --namespace Microsoft.Web \ --resource-type sites --set properties.siteConfig.scmIpSecurityRestrictionsDefaultAction=Allow
Membatasi akses FTP dan SCM
Karena situs SCM backend Anda dapat diakses secara publik, Anda perlu menguncinya dengan keamanan yang lebih baik.
Nonaktifkan akses FTP untuk aplikasi web frontend dan backend:
az resource update --resource-group $resourceGroupName --name ftp --namespace Microsoft.Web \ --resource-type basicPublishingCredentialsPolicies --parent sites/<frontend-app-name> --set properties.allow=false az resource update --resource-group $resourceGroupName --name ftp --namespace Microsoft.Web \ --resource-type basicPublishingCredentialsPolicies --parent sites/<backend-app-name> --set properties.allow=falseNonaktifkan akses autentikasi dasar ke port WebDeploy dan situs alat SCM/tingkat lanjut untuk kedua aplikasi web:
az resource update --resource-group $resourceGroupName --name scm --namespace Microsoft.Web \ --resource-type basicPublishingCredentialsPolicies --parent sites/<frontend-app-name> --set properties.allow=false az resource update --resource-group $resourceGroupName --name scm --namespace Microsoft.Web \ --resource-type basicPublishingCredentialsPolicies --parent sites/<backend-app-name> --set properties.allow=false
Saat menonaktifkan autentikasi dasar di App Service, Anda membatasi akses ke titik akhir FTP dan SCM kepada pengguna yang terdaftar di Microsoft Entra ID. Tindakan ini semakin mengamankan aplikasi Anda. Untuk informasi selengkapnya tentang menonaktifkan autentikasi dasar termasuk cara menguji dan memantau login, lihat Menonaktifkan autentikasi dasar di App Service.
Mengonfigurasi penyebaran berkelanjutan dengan GitHub Actions
Untuk prosedur ini, Anda memerlukan dua aplikasi yang siap disebarkan ke aplikasi frontend dan backend App Service Anda. Untuk mengakses aplikasi web, Anda memerlukan perwakilan layanan dan penyebaran berkelanjutan dengan GitHub Actions.
Mendapatkan aplikasi web untuk pengujian penyebaran
Repositori Azure Samples di GitHub menyediakan aplikasi sampel Node.js untuk penerapan.
Di browser, buka aplikasi sampel Node.js Backend.
Fork repositori GitHub sehingga Anda memiliki salinan Anda sendiri untuk membuat perubahan. Contoh ini membuat aplikasi 'Halo Dunia'. Anda menyebarkan aplikasi ini ke aplikasi web backend Anda.
Ulangi proses yang sama untuk aplikasi sampel Node.js Frontend.
Fork repositori GitHub sehingga Anda memiliki salinan Anda sendiri untuk membuat perubahan. Sampel ini membangun aplikasi web yang mengambil dan menampilkan konten URL. Anda menyebarkan aplikasi ini ke aplikasi web frontend Anda.
Mengonfigurasi prinsipal layanan
Anda memerlukan perwakilan layanan untuk aplikasi web frontend dan aplikasi web backend Anda.
Buat prinsipal layanan.
Atur placeholder
<service-principal-name>ke nama prinsipal layanan baru Anda, sepertizava-service-principal.Ganti nilai parameter lainnya
<placeholder>dengan informasi untuk sumber daya Anda sendiri.# Define a variable for the service principal name servicePrincipalName=<service-principal-name> # Link the private endpoint to the Private DNS az ad sp create-for-rbac --name <service-principal-name> --role contributor --scopes \ /subscriptions/<subscription-ID>/resourceGroups/<resource-group>/providers/Microsoft.Web/sites/<frontend-app-name> \ /subscriptions/<subscription-ID>/resourceGroups/<resource-group>/providers/Microsoft.Web/sites/<backend-app-name>Output adalah objek JSON dengan kredensial penetapan peran yang menyediakan akses ke aplikasi App Service Anda.
{ "appId": "00001111-aaaa-2222-bbbb-3333cccc4444", "displayName": "<service-principal-name>", "password": "0Aa!1Bb!2Cc!3Dd!4Ee!5Ff!6Gg!7Hh!8Ii!9Jj!", "tenantId": "aaaabbbb-6666-cccc-7777-dddd8888eeee" }JSON menyertakan kata sandi perwakilan layanan Anda, yang hanya terlihat saat ini.
Petunjuk
Ini adalah praktik yang baik untuk memberikan akses minimum. Dalam contoh ini, cakupan terbatas hanya pada aplikasi, bukan seluruh grup sumber daya.
Salin objek JSON agar Anda memiliki catatan service principal name Anda.
Berikan kredensial perwakilan layanan Anda ke operasi Masuk Azure sebagai bagian dari alur kerja GitHub Actions Anda.
Simpan kredensial sebagai secret GitHub yang dirujuk dalam alur kerja Anda.
Di browser, buka repositori fork untuk aplikasi Node.js backend Anda di GitHub.
Buka Pengaturan> RahasiaKeamanan> danTindakan>.
Pilih Rahasia repositori baru dan buat rahasia untuk setiap pengaturan berikut.
Gunakan nilai dari output JSON Anda.
Pengaturan Nilai Example AZURE_CLIENT_ID <application/client-id>00001111-aaaa-2222-bbbb-3333cccc4444AZURE_TENANT_ID <tenant-id>aaaabbbb-6666-cccc-7777-dddd8888eeeeAZURE_SUBSCRIPTION_ID <subscription-id>cccc2c2c-dd3d-ee4e-ff5f-aaaaaa6a6a6aUlangi proses ini untuk repositori fork untuk aplikasi Node.js frontend Anda di GitHub.
Menyiapkan penyebaran berkelanjutan dengan GitHub Actions
Anda dapat menyiapkan penyebaran berkelanjutan dengan GitHub Actions.
Di portal Azure, buka halaman Gambaran umum untuk aplikasi web frontend Anda.
Di menu sebelah kiri, pilihPusat Penyebaran>.
Di tab Settings, atur opsi Source ke GitHub:
Jika Anda menyebarkan dari GitHub untuk pertama kalinya, pilih Otorisasi dan ikuti permintaan otoritasi. Jika Anda ingin menyebar dari repositori pengguna yang berbeda, pilih Ubah Akun.
Setelah Anda mengotorisasi akun Azure Anda dengan GitHub, pilih Organization, Repository, dan Branch untuk mengonfigurasi CI/CD. Jika Anda tidak dapat menemukan organisasi atau repositori, Anda mungkin perlu mengaktifkan lebih banyak izin pada GitHub. Untuk informasi selengkapnya, lihat Mengelola akses pengguna ke repositori organisasi Anda.
Pengaturan Nilai Organisasi <your-GitHub-organization>Repositori <forked-repository-name>Cabang utama Pilih Simpan.
Ulangi proses ini untuk aplikasi web backend Anda dan repositori fork yang sesuai.
Memvalidasi koneksi dan akses aplikasi
Sekarang Anda siap untuk memeriksa koneksi dan akses ke aplikasi web frontend dan backend Anda.
Coba telusuri langsung ke aplikasi web backend Anda dengan URL-nya,
https://<backend-app-name>.azurewebsites.net.Anda akan melihat pesan browser berikut:
Jika Anda dapat menjangkau aplikasi, periksa konfigurasi Anda:
Pastikan private endpoint dikonfigurasi dengan benar.
Konfirmasikan pembatasan akses untuk aplikasi Anda diatur untuk menolak semua lalu lintas untuk aplikasi web utama.
Sekarang coba telusuri langsung ke aplikasi web frontend Anda dengan URL-nya,
https://<frontend-app-name>.azurewebsites.net.Saat koneksi berhasil, Anda akan melihat halaman berikut:
Dalam kotak URL, masukkan URL untuk aplikasi web back-end Anda,
https://<backend-app-name>.azurewebsites.net, lalu pilih Fetch.Jika Anda menyiapkan koneksi dengan benar, halaman akan di-refresh untuk menampilkan konten pesan dari aplikasi web backend:
Semua lalu lintas outbound dari aplikasi web frontend dirutekan melalui jaringan virtual. Aplikasi web frontend Anda terhubung dengan aman ke aplikasi web backend Anda melalui titik akhir privat.
Jika ada yang salah dengan koneksi Anda, Anda akan melihat pesan Kesalahan 403 - Terlarang dalam output.
Membuat sesi SSH dan membuka shell jarak jauh
Verifikasi bahwa aplikasi web frontend dapat mengakses aplikasi web backend melalui tautan privat dengan menggunakan SSH ke instans frontend.
Buat sesi SSH ke kontainer web aplikasi Anda dan buka shell jarak jauh di browser Anda:
az webapp ssh --resource-group $resourceGroupName --name $frontendAppNameUntuk informasi selengkapnya, lihat referensi perintah az webapp ssh .
Setelah shell terbuka di browser Anda, konfirmasikan aplikasi web backend Anda sedang dijangkau dengan menggunakan IP privat aplikasi web backend Anda.
Dalam perintah berikut, ganti
<placeholder>nilai parameter dengan informasi untuk sumber daya Anda sendiri.Jalankan
nslookupperintah:nslookup <backend-app-name>.azurewebsites.netJalankan
curlperintah untuk memvalidasi konten situs lagi:curl https://<backend-app-name>.azurewebsites.net
Perintah
nslookupharus mengarah ke alamat IP privat aplikasi web backend Anda. Alamat IP privat harus berupa alamat dari jaringan virtual Anda.Anda dapat mengonfirmasi alamat IP privat Anda di portal Azure. Buka halaman Jaringan Pengaturan> untuk aplikasi web backend Anda.
Ulangi perintah
nslookupdancurlyang sama dari terminal lain (yang bukan merupakan sesi SSH pada instance frontend Anda).
Perintah
nslookupmengembalikan IP publik untuk aplikasi web backend. Karena akses publik ke aplikasi web backend dinonaktifkan, jika Anda mencoba menjangkau IP publik, Anda mendapatkan kesalahan akses ditolak. Kesalahan ini berarti situs tidak dapat diakses dari internet publik, yang merupakan perilaku yang dimaksudkan.Perintah
nslookuptidak diselesaikan ke IP privat karena alamat hanya dapat diselesaikan dari dalam jaringan virtual melalui zona DNS privat. Hanya aplikasi web frontend yang berada dalam jaringan virtual. Jika Anda mencoba menjalankancurlperintah pada aplikasi web backend dari terminal eksternal, HTML yang dikembalikan berisi pesan Kesalahan 403, Terlarang - Aplikasi web yang telah Anda coba jangkau telah memblokir akses Anda. Beberapa terminal juga menampilkan HTML yang sama dengan halaman kesalahan yang dikembalikan saat Anda mencoba mengakses aplikasi web backend secara langsung.
Membersihkan sumber daya
Di langkah-langkah sebelumnya, Anda membuat sumber daya Azure dalam grup sumber daya. Jika Anda tidak ingin membutuhkan sumber daya ini di masa mendatang, hapus grup sumber daya dengan menjalankan perintah berikut ini di Cloud Shell.
<placeholder> Ganti nilai parameter dengan informasi untuk sumber daya Anda sendiri:
az group delete --name <resource-group>
Perintah ini bisa memakan waktu beberapa menit untuk diselesaikan.
Tanya jawab umum
Dalam tutorial ini, Anda menyebarkan infrastruktur dasar untuk mendukung aplikasi web N-tingkat yang aman. App Service menyediakan fitur yang dapat membantu Anda memastikan Anda menjalankan aplikasi yang mengikuti praktik dan rekomendasi terbaik keamanan.
Bagian ini berisi jawaban atas pertanyaan yang sering diajukan yang dapat membantu Anda mengamankan aplikasi lebih lanjut dan menyebarkan dan mengelola sumber daya Anda sesuai dengan praktik terbaik.
Menerapkan dengan metode lain selain menggunakan service principal
Dalam tutorial ini, Anda menonaktifkan autentikasi dasar. Anda tidak dapat mengautentikasi dengan situs SCM backend dengan menggunakan nama pengguna dan kata sandi, atau dengan menggunakan profil publikasi. Namun, alih-alih mengautentikasi menggunakan perwakilan layanan, Anda dapat menggunakan kredensial OpenID Connect.
Mengonfigurasi penyebaran GitHub Actions di App Service
Azure membuat file alur kerja secara otomatis di repositori Anda. Komit baru dalam repositori dan cabang yang dipilih diterapkan secara berkelanjutan ke aplikasi App Service Anda. Anda dapat melacak penerapan dan penyebaran pada tab Logs di GitHub.
File alur kerja default yang menggunakan profil penerbitan untuk mengautentikasi ke App Service ditambahkan ke repositori GitHub Anda. Anda dapat melihat file ini dengan masuk ke <repo-name>/.github/workflows/ direktori.
Konfirmasi akses publik yang aman ke situs backend SCM
Saat Anda mengunci akses FTP dan SCM, Anda dapat memastikan bahwa hanya prinsipal yang didukung Microsoft Entra yang dapat mengakses titik akhir SCM, meskipun titik akhir tersebut dapat diakses secara publik. Pengaturan ini membantu meyakinkan Anda bahwa aplikasi web backend Anda masih aman.
Menyebarkan tanpa situs backend SCM yang terbuka
Jika Anda khawatir tentang mengaktifkan akses publik ke situs SCM, atau Anda memiliki pembatasan kebijakan, pertimbangkan opsi penyebaran App Service lainnya seperti berjalan dari paket ZIP.
Terapkan arsitektur ini menggunakan templat
Sumber daya yang Anda buat dalam tutorial ini dapat disebarkan dengan menggunakan templat Azure Resource Manager (templat ARM) atau templat Bicep. Aplikasi yang terhubung ke file Bicep aplikasi web backend memungkinkan Anda untuk membuat solusi aplikasi berlapis N yang aman.
Untuk mempelajari cara menyebarkan templat ARM dan Bicep, lihat Deploy Bicep files with the Azure CLI.