Tutorial: Membuat aplikasi n-tingkat yang aman di Azure App Service
Banyak aplikasi memiliki lebih dari satu komponen. Misalnya, Anda mungkin memiliki ujung depan yang dapat diakses secara publik dan terhubung ke API back-end atau aplikasi web yang pada gilirannya terhubung ke database, akun penyimpanan, brankas kunci, VM lain, atau kombinasi sumber daya ini. Arsitektur ini membentuk aplikasi N-tingkat. Penting bahwa aplikasi seperti ini dirancang untuk melindungi sumber daya back-end sejauh mungkin.
Dalam tutorial ini, Anda mempelajari cara menyebarkan aplikasi N-tingkat yang aman, dengan aplikasi web front-end yang terhubung ke aplikasi web lain yang terisolasi jaringan. Semua lalu lintas diisolasi dalam Azure Virtual Network Anda menggunakan integrasi Virtual Network dan titik akhir privat. Untuk panduan lebih komprehensif yang mencakup skenario lain, lihat:
Arsitektur skenario
Diagram berikut menunjukkan arsitektur yang akan Anda buat selama tutorial ini.
- Jaringan virtual Berisi dua subnet, satu terintegrasi dengan aplikasi web front-end, dan yang lainnya memiliki titik akhir privat untuk aplikasi web back-end. Jaringan virtual memblokir semua lalu lintas jaringan masuk, kecuali untuk aplikasi front-end yang terintegrasi dengannya.
- Aplikasi web front-end Terintegrasi ke dalam jaringan virtual dan dapat diakses dari internet publik.
- Aplikasi web back-end Hanya dapat diakses melalui titik akhir privat di jaringan virtual.
- Titik akhir privat Terintegrasi dengan aplikasi web back-end dan membuat aplikasi web dapat diakses dengan alamat IP privat.
- Zona DNS Privat Memungkinkan Anda mengatasi nama DNS ke alamat IP titik akhir privat.
Catatan
Integrasi jaringan virtual dan titik akhir privat tersedia hingga ke tingkat Dasar di App Service. Tingkat Gratis tidak mendukung fitur-fitur ini. Dengan arsitektur ini:
- Lalu lintas publik ke aplikasi back-end diblokir.
- Lalu lintas keluar dari App Service dirutekan ke jaringan virtual dan dapat menjangkau aplikasi back-end.
- App Service dapat melakukan resolusi DNS ke aplikasi back-end.
Skenario ini menunjukkan salah satu skenario N-tingkat yang mungkin di App Service. Anda dapat menggunakan konsep yang tercakup dalam tutorial ini untuk membangun aplikasi N-tingkat yang lebih kompleks.
Yang akan Anda pelajari:
- Buat jaringan virtual dan subnet untuk integrasi jaringan virtual App Service.
- Membuat zona DNS privat.
- Membuat titik akhir privat.
- Konfigurasikan integrasi jaringan virtual di App Service.
- Nonaktifkan autentikasi dasar di layanan aplikasi.
- Terus menyebarkan ke aplikasi web backend yang dikunci.
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 Langganan Azure, buat Akun gratis Azure sebelum memulai.
Untuk menyelesaikan tutorial ini:
Gunakan lingkungan Bash di Azure Cloud Shell. Untuk informasi selengkapnya, lihat Mulai Cepat untuk Bash di 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 Masuk dengan Azure CLI.
Saat Anda diminta, instal ekstensi Azure CLI pada penggunaan pertama. Untuk informasi selengkapnya tentang ekstensi, lihat Menggunakan ekstensi dengan Azure CLI.
Jalankan versi az untuk menemukan versi dan pustaka dependen yang diinstal. Untuk meningkatkan ke versi terbaru, jalankan peningkatan az.
1. Membuat dua instans aplikasi web
Anda memerlukan dua instans aplikasi web, satu untuk frontend dan satu untuk backend. Anda perlu menggunakan setidaknya tingkat Dasar untuk menggunakan integrasi jaringan virtual dan titik akhir privat. Anda akan mengonfigurasi integrasi jaringan virtual dan konfigurasi lain nanti.
Buat grup sumber daya untuk mengelola semua sumber daya yang Anda buat dalam tutorial ini.
# Save resource group name and region as variables for convenience groupName=myresourcegroup region=eastus az group create --name $groupName --location $region
Membuat paket App Service. Ganti
<app-service-plan-name>
dengan nama yang unik.--sku
Ubah parameter jika Anda perlu menggunakan SKU yang berbeda. Pastikan Anda tidak menggunakan tingkat gratis karena SKU tidak mendukung fitur jaringan yang diperlukan.# Save App Service plan name as a variable for convenience aspName=<app-service-plan-name> az appservice plan create --name $aspName --resource-group $groupName --is-linux --location $region --sku P1V3
Buat aplikasi web. Ganti
<frontend-app-name>
dan<backend-app-name>
dengan dua nama unik global (karakter yang valid adalaha-z
, ,0-9
dan-
). Untuk tutorial ini, Anda disediakan dengan contoh aplikasi Node.js. Jika Anda ingin menggunakan aplikasi Anda sendiri, ubah parameter yang--runtime
sesuai. Jalankanaz webapp list-runtimes
untuk daftar runtime yang tersedia.az webapp create --name <frontend-app-name> --resource-group $groupName --plan $aspName --runtime "NODE:18-lts" az webapp create --name <backend-app-name> --resource-group $groupName --plan $aspName --runtime "NODE:18-lts"
2. Buat infrastruktur jaringan
Anda akan membuat sumber daya jaringan berikut:
- Jaringan virtual.
- Subnet untuk integrasi jaringan virtual App Service.
- Subnet untuk titik akhir privat.
- Zona DNS privat.
- Titik akhir privat.
Buat jaringan virtual. Ganti
<virtual-network-name>
dengan nama yang unik.# Save vnet name as variable for convenience vnetName=<virtual-network-name> az network vnet create --resource-group $groupName --location $region --name $vnetName --address-prefixes 10.0.0.0/16
Buat subnet untuk integrasi jaringan virtual App Service.
az network vnet subnet create --resource-group $groupName --vnet-name $vnetName --name vnet-integration-subnet --address-prefixes 10.0.0.0/24 --delegations Microsoft.Web/serverfarms --disable-private-endpoint-network-policies false
Untuk App Service, subnet integrasi jaringan virtual disarankan untuk memiliki blok
/26
CIDR minimal./24
sudah lebih dari cukup.--delegations Microsoft.Web/serverfarms
menetapkan bahwa subnet didelegasikan untuk integrasi jaringan virtual App Service.Buat subnet lain untuk titik akhir privat.
az network vnet subnet create --resource-group $groupName --vnet-name $vnetName --name private-endpoint-subnet --address-prefixes 10.0.1.0/24 --disable-private-endpoint-network-policies true
Untuk subnet titik akhir privat, Anda harus menonaktifkan kebijakan jaringan titik akhir privat dengan mengatur
--disable-private-endpoint-network-policies
ketrue
.Buat zona DNS privat.
az network private-dns zone create --resource-group $groupName --name privatelink.azurewebsites.net
Untuk informasi selengkapnya tentang pengaturan ini, lihat Konfigurasi DNS Titik Akhir Privat Azure.
Catatan
Jika Anda membuat titik akhir privat menggunakan portal, zona DNS privat dibuat secara otomatis untuk Anda dan Anda tidak perlu membuatnya secara terpisah. Untuk konsistensi dengan tutorial ini, Anda membuat zona DNS privat dan titik akhir privat secara terpisah menggunakan Azure CLI.
Tautkan zona DNS privat ke jaringan virtual.
az network private-dns link vnet create --resource-group $groupName --name myDnsLink --zone-name privatelink.azurewebsites.net --virtual-network $vnetName --registration-enabled False
Di subnet titik akhir privat jaringan virtual Anda, buat titik akhir privat untuk aplikasi web backend Anda. Ganti
<backend-app-name>
dengan nama aplikasi web backend Anda.# Get backend web app resource ID resourceId=$(az webapp show --resource-group $groupName --name <backend-app-name> --query id --output tsv) az network private-endpoint create --resource-group $groupName --name myPrivateEndpoint --location $region --connection-name myConnection --private-connection-resource-id $resourceId --group-id sites --vnet-name $vnetName --subnet private-endpoint-subnet
Tautkan titik akhir privat ke zona DNS privat dengan grup zona DNS untuk titik akhir privat aplikasi web backend. Grup zona DNS ini membantu Anda memperbarui zona DNS privat secara otomatis saat ada pembaruan ke titik akhir privat.
az network private-endpoint dns-zone-group create --resource-group $groupName --endpoint-name myPrivateEndpoint --name myZoneGroup --private-dns-zone privatelink.azurewebsites.net --zone-name privatelink.azurewebsites.net
Saat Anda membuat titik akhir privat untuk App Service, akses publik akan dinonaktifkan secara implisit. Jika Anda mencoba mengakses aplikasi web backend menggunakan URL defaultnya, akses Anda ditolak. Dari browser, navigasikan ke
<backend-app-name>.azurewebsites.net
untuk mengonfirmasi perilaku ini.Untuk informasi selengkapnya tentang pembatasan akses App Service dengan titik akhir privat, lihat Pembatasan akses Azure App Service.
3. Mengonfigurasi integrasi jaringan virtual di aplikasi web frontend Anda
Aktifkan integrasi jaringan virtual di aplikasi Anda. Ganti <frontend-app-name>
dengan nama aplikasi web frontend Anda.
az webapp vnet-integration add --resource-group $groupName --name <frontend-app-name> --vnet $vnetName --subnet vnet-integration-subnet
Integrasi jaringan virtual memungkinkan lalu lintas keluar mengalir langsung ke jaringan virtual. Secara default, hanya lalu lintas IP lokal yang ditentukan dalam RFC-1918 yang dirutekan ke jaringan virtual, yang Anda perlukan untuk titik akhir privat. Untuk merutekan semua lalu lintas Anda ke jaringan virtual, lihat Mengelola perutean integrasi jaringan virtual. Merutekan semua lalu lintas juga dapat digunakan jika Anda ingin merutekan lalu lintas internet melalui jaringan virtual Anda, seperti melalui Azure Virtual Network NAT atau Azure Firewall.
4. Aktifkan penyebaran ke aplikasi web back-end dari internet
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. Aplikasi web utama itu sendiri dapat terus menolak semua lalu lintas.
Aktifkan akses publik untuk aplikasi web back-end.
az webapp update --resource-group $groupName --name <backend-app-name> --set publicNetworkAccess=Enabled
Atur tindakan aturan yang tidak cocok untuk aplikasi web utama untuk menolak semua lalu lintas. Pengaturan ini menolak akses publik ke aplikasi web utama meskipun pengaturan akses aplikasi umum diatur untuk mengizinkan akses publik.
az resource update --resource-group $groupName --name <backend-app-name> --namespace Microsoft.Web --resource-type sites --set properties.siteConfig.ipSecurityRestrictionsDefaultAction=Deny
Atur tindakan aturan yang tidak cocok untuk situs SCM untuk mengizinkan semua lalu lintas.
az resource update --resource-group $groupName --name <backend-app-name> --namespace Microsoft.Web --resource-type sites --set properties.siteConfig.scmIpSecurityRestrictionsDefaultAction=Allow
5. Mengunci akses FTP dan SCM
Sekarang setelah situs SCM back-end dapat diakses publik, Anda perlu menguncinya dengan keamanan yang lebih baik.
Nonaktifkan akses FTP untuk aplikasi web front-end dan back-end. Ganti
<frontend-app-name>
dan<backend-app-name>
dengan nama aplikasi Anda.az resource update --resource-group $groupName --name ftp --namespace Microsoft.Web --resource-type basicPublishingCredentialsPolicies --parent sites/<frontend-app-name> --set properties.allow=false az resource update --resource-group $groupName --name ftp --namespace Microsoft.Web --resource-type basicPublishingCredentialsPolicies --parent sites/<backend-app-name> --set properties.allow=false
Nonaktifkan akses autentikasi dasar ke port WebDeploy dan situs alat SCM/tingkat lanjut untuk kedua aplikasi web. Ganti
<frontend-app-name>
dan<backend-app-name>
dengan nama aplikasi Anda.az resource update --resource-group $groupName --name scm --namespace Microsoft.Web --resource-type basicPublishingCredentialsPolicies --parent sites/<frontend-app-name> --set properties.allow=false az resource update --resource-group $groupName --name scm --namespace Microsoft.Web --resource-type basicPublishingCredentialsPolicies --parent sites/<backend-app-name> --set properties.allow=false
Menonaktifkan autentikasi dasar pada App Service membatasi akses ke titik akhir FTP dan SCM kepada pengguna yang didukung oleh ID Microsoft Entra, yang lebih mengamankan aplikasi Anda. Untuk informasi selengkapnya tentang menonaktifkan autentikasi dasar termasuk cara menguji dan memantau login, lihat Menonaktifkan autentikasi dasar di App Service.
6. Mengonfigurasi penyebaran berkelanjutan menggunakan GitHub Actions
Navigasikan ke aplikasi sampel backend Node.js. Aplikasi ini adalah aplikasi Halo Dunia sederhana.
Pilih tombol Fork di sisi kanan atas di halaman GitHub.
Pilih Pemilik dan biarkan nama Repositori default.
Pilih Buat fork.
Ulangi proses yang sama untuk aplikasi sampel frontend Node.js. Aplikasi ini adalah aplikasi web dasar yang mengakses URL jarak jauh.
Buat perwakilan layanan. Ganti
<subscription-id>
,<frontend-app-name>
, dan<backend-app-name>
dengan nilai Anda.az ad sp create-for-rbac --name "myApp" --role contributor --scopes /subscriptions/<subscription-id>/resourceGroups/$groupName/providers/Microsoft.Web/sites/<frontend-app-name> /subscriptions/<subscription-id>/resourceGroups/$groupName/providers/Microsoft.Web/sites/<backend-app-name> --sdk-auth
Output adalah objek JSON dengan kredensial penetapan peran yang menyediakan akses ke aplikasi App Service Anda. Salin objek JSON ini untuk langkah berikutnya. Ini termasuk rahasia klien Anda, yang hanya terlihat saat ini. Ada baiknya untuk memberikan akses minimum. Cakupan dalam contoh ini terbatas hanya pada aplikasi, bukan seluruh grup sumber daya.
Untuk menyimpan kredensial perwakilan layanan sebagai rahasia GitHub, buka salah satu repositori sampel fork di GitHub dan buka Pengaturan>Rahasia Keamanan>dan Tindakan variabel.>
Pilih Rahasia repositori baru dan buat rahasia untuk setiap nilai berikut. Nilai dapat ditemukan di output json yang Anda salin sebelumnya.
Nama Nilai AZURE_APP_ID <application/client-id>
AZURE_PASSWORD <client-secret>
AZURE_TENANT_ID <tenant-id>
AZURE_SUBSCRIPTION_ID <subscription-id>
Ulangi proses ini untuk repositori sampel fork lainnya.
Untuk menyiapkan penyebaran berkelanjutan dengan GitHub Actions, masuk ke portal Azure.
Navigasi ke halaman Gambaran Umum untuk aplikasi web front-end Anda.
Di kiri panel, pilih Pusat Penyebaran. Lalu pilih Pengaturan.
Dalam kotak Sumber , pilih "GitHub" dari opsi CI/CD.
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.
Jika Anda menggunakan aplikasi sampel Node.js yang di-fork sebagai bagian dari prasyarat, gunakan pengaturan berikut untuk Organisasi, Repositori, dan Cabang.
Pengaturan Nilai Organization <your-GitHub-organization>
Repositori nodejs-frontend Cabang utama Pilih Simpan.
Ulangi langkah-langkah yang sama untuk aplikasi web back-end Anda. Pengaturan Pusat Penyebaran diberikan dalam tabel berikut.
Pengaturan Nilai Organization <your-GitHub-organization>
Repositori nodejs-backend Cabang utama
7. Gunakan perwakilan layanan untuk penyebaran GitHub Actions
Konfigurasi Pusat Penyebaran Anda telah membuat file alur kerja default di setiap repositori sampel Anda, tetapi menggunakan profil publikasi secara default, yang menggunakan autentikasi dasar. Karena Anda telah menonaktifkan autentikasi dasar, jika Anda memeriksa tab Log di Pusat Penyebaran, Anda akan melihat bahwa penyebaran yang dipicu secara otomatis menghasilkan kesalahan. Anda harus mengubah file alur kerja untuk menggunakan perwakilan layanan untuk mengautentikasi dengan App Service. Untuk contoh alur kerja, lihat Menambahkan file alur kerja ke repositori GitHub Anda.
Buka salah satu repositori GitHub fork Anda dan buka
<repo-name>/.github/workflows/
direktori.Pilih file alur kerja yang dihasilkan secara otomatis lalu pilih tombol "pensil" di kanan atas untuk mengedit file. Ganti konten dengan teks berikut, yang mengasumsikan Anda membuat rahasia GitHub sebelumnya untuk kredensial Anda. Perbarui tempat penampung untuk
<web-app-name>
di bawah bagian "env", lalu terapkan langsung ke cabang utama. Penerapan ini memicu GitHub Action untuk berjalan lagi dan menyebarkan kode Anda, kali ini menggunakan perwakilan layanan untuk mengautentikasi.name: Build and deploy Node.js app to Azure Web App on: push: branches: - main workflow_dispatch: env: AZURE_WEBAPP_NAME: <web-app-name> # set this to your application's name NODE_VERSION: '18.x' # set this to the node version to use AZURE_WEBAPP_PACKAGE_PATH: '.' # set this to the path to your web app project, defaults to the repository root jobs: build: runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 - name: Set up Node.js version uses: actions/setup-node@v1 with: node-version: ${{ env.NODE_VERSION }} - name: npm install, build run: | npm install npm run build --if-present - name: Upload artifact for deployment job uses: actions/upload-artifact@v2 with: name: node-app path: . deploy: runs-on: ubuntu-latest needs: build environment: url: ${{ steps.deploy-to-webapp.outputs.webapp-url }} steps: - name: Download artifact from build job uses: actions/download-artifact@v2 with: name: node-app - uses: azure/login@v1 with: creds: | { "clientId": "${{ secrets.AZURE_APP_ID }}", "clientSecret": "${{ secrets.AZURE_PASSWORD }}", "subscriptionId": "${{ secrets.AZURE_SUBSCRIPTION_ID }}", "tenantId": "${{ secrets.AZURE_TENANT_ID }}" } - name: 'Deploy to Azure Web App' id: deploy-to-webapp uses: azure/webapps-deploy@v2 with: app-name: ${{ env.AZURE_WEBAPP_NAME }} package: ${{ env.AZURE_WEBAPP_PACKAGE_PATH }} - name: logout run: | az logout
Ulangi proses ini untuk file alur kerja di repositori GitHub fork Anda lainnya.
Penerapan GitHub baru memicu penyebaran lain untuk setiap aplikasi Anda. Kali ini, penyebaran harus berhasil karena alur kerja menggunakan perwakilan layanan untuk mengautentikasi dengan situs SCM aplikasi.
Untuk panduan terperinci tentang cara mengonfigurasi penyebaran berkelanjutan dengan penyedia seperti GitHub Actions, lihat Penyebaran berkelanjutan ke Azure App Service.
8. Memvalidasi koneksi dan akses aplikasi
Telusuri ke aplikasi web front-end dengan URL-nya:
https://<frontend-app-name>.azurewebsites.net
.Di kotak teks, masukkan URL untuk aplikasi web backend Anda:
https://<backend-app-name>.azurewebsites.net
. Jika Anda menyiapkan koneksi dengan benar, Anda akan mendapatkan pesan "Halo dari aplikasi web backend!", yang merupakan seluruh konten aplikasi web backend. Semua lalu lintas keluar dari aplikasi web front-end 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, aplikasi web frontend Anda mengalami crash.Coba navigasi langsung ke aplikasi web backend Anda dengan URL-nya:
https://<backend-app-name>.azurewebsites.net
. Anda akan melihat pesanWeb App - Unavailable
. Jika Anda dapat menjangkau aplikasi, pastikan Anda telah mengonfigurasi titik akhir privat dan bahwa pembatasan akses untuk aplikasi Anda diatur untuk menolak semua lalu lintas untuk aplikasi web utama.Untuk memvalidasi lebih lanjut bahwa aplikasi web frontend menjangkau aplikasi web backend melalui tautan privat, SSH ke salah satu instans front end Anda. Untuk SSH, jalankan perintah berikut, yang membuat sesi SSH ke kontainer web aplikasi Anda dan membuka shell jarak jauh di browser Anda.
az webapp ssh --resource-group $groupName --name <frontend-app-name>
Saat shell terbuka di browser Anda, jalankan
nslookup
untuk mengonfirmasi aplikasi web back-end Anda sedang dijangkau menggunakan IP privat aplikasi web backend Anda. Anda juga dapat menjalankancurl
untuk memvalidasi konten situs lagi. Ganti<backend-app-name>
dengan nama aplikasi web backend Anda.nslookup <backend-app-name>.azurewebsites.net curl https://<backend-app-name>.azurewebsites.net
nslookup
harus diselesaikan ke alamat IP privat aplikasi web back-end Anda. Alamat IP privat harus berupa alamat dari jaringan virtual Anda. Untuk mengonfirmasi IP privat Anda, buka halaman Jaringan untuk aplikasi web back-end Anda.Ulangi perintah dan
curl
yang samanslookup
dari terminal lain (yang bukan sesi SSH pada instans front end Anda).mengembalikan
nslookup
IP publik untuk aplikasi web back-end. Karena akses publik ke aplikasi web back-end dinonaktifkan, jika Anda mencoba menjangkau IP publik, Anda mendapatkan kesalahan akses ditolak. Kesalahan ini berarti situs ini tidak dapat diakses dari internet publik, yang merupakan perilaku yang dimaksudkan.nslookup
tidak diselesaikan ke IP privat karena hanya dapat diselesaikan dari dalam jaringan virtual melalui zona DNS privat. Hanya aplikasi web front-end yang berada dalam jaringan virtual. Jika Anda mencoba menjalankancurl
pada aplikasi web back-end dari terminal eksternal, HTML yang dikembalikan berisiWeb App - Unavailable
. Kesalahan ini menampilkan HTML untuk halaman kesalahan yang Anda lihat sebelumnya ketika Anda mencoba menavigasi ke aplikasi web back-end di browser Anda.
9. Bersihkan 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.
az group delete --name myresourcegroup
Perlu beberapa menit untuk menjalankan perintah ini.
Tanya jawab umum
- Apakah ada alternatif untuk penyebaran menggunakan perwakilan layanan?
- Apa yang terjadi saat saya mengonfigurasi penyebaran GitHub Actions di App Service?
- Apakah aman untuk meninggalkan SCM back-end yang dapat diakses publik?
- Apakah ada cara untuk menyebarkan tanpa membuka situs SCM back-end sama sekali?
- Bagaimana cara menyebarkan arsitektur ini dengan ARM/Bicep?
Apakah ada alternatif untuk penyebaran menggunakan perwakilan layanan?
Karena dalam tutorial ini Anda telah menonaktifkan autentikasi dasar, Anda tidak dapat mengautentikasi dengan situs SCM ujung belakang dengan nama pengguna dan kata sandi, dan Anda juga tidak dapat dengan profil penerbitan. Alih-alih perwakilan layanan, Anda juga dapat menggunakan OpenID Connect.
Apa yang terjadi saat saya mengonfigurasi penyebaran GitHub Actions di App Service?
Azure secara otomatis menghasilkan file alur kerja di repositori Anda. Komitmen baru di repositori dan cabang yang dipilih sekarang diterapkan terus menerus ke aplikasi App Service Anda. Anda dapat melacak penerapan dan penyebaran pada tab Log.
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.
Apakah aman untuk meninggalkan SCM back-end yang dapat diakses publik?
Saat Anda mengunci akses FTP dan SCM, itu memastikan bahwa hanya prinsipal yang didukung Microsoft Entra yang dapat mengakses titik akhir SCM meskipun dapat diakses secara publik. Pengaturan ini harus meyakinkan Anda bahwa aplikasi web backend Anda masih aman.
Apakah ada cara untuk menyebarkan tanpa membuka situs SCM back-end sama sekali?
Jika Anda khawatir tentang mengaktifkan akses publik ke situs SCM, atau Anda dibatasi oleh kebijakan, pertimbangkan opsi penyebaran App Service lainnya seperti berjalan dari paket ZIP.
Bagaimana cara menyebarkan arsitektur ini dengan ARM/Bicep?
Sumber daya yang Anda buat dalam tutorial ini dapat disebarkan menggunakan templat ARM/Bicep. Aplikasi yang tersambung ke templat Bicep aplikasi web backend memungkinkan Anda membuat solusi aplikasi N-tingkat yang aman.
Untuk mempelajari cara menyebarkan templat ARM/Bicep, lihat Cara menyebarkan sumber daya dengan Bicep dan Azure CLI.