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.

Architecture diagram of an n-tier App Service.

  • 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:

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.

  1. 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
    
  2. 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
    
  3. Buat aplikasi web. Ganti <frontend-app-name> dan <backend-app-name> dengan dua nama unik global (karakter yang valid adalah a-z, , 0-9dan -). Untuk tutorial ini, Anda disediakan dengan contoh aplikasi Node.js. Jika Anda ingin menggunakan aplikasi Anda sendiri, ubah parameter yang --runtime sesuai. Jalankan az 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.
  1. 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
    
  2. 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.

  3. 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 ke true.

  4. 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.

  5. 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
    
  6. 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
    
  7. 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
    
  8. 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.

    Screenshot of 403 error when trying to access backend web app directly.

    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.

  1. Aktifkan akses publik untuk aplikasi web back-end.

    az webapp update --resource-group $groupName --name <backend-app-name> --set publicNetworkAccess=Enabled
    
  2. 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
    
  3. 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.

  1. 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
    
  2. 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

  1. Navigasikan ke aplikasi sampel backend Node.js. Aplikasi ini adalah aplikasi Halo Dunia sederhana.

  2. Pilih tombol Fork di sisi kanan atas di halaman GitHub.

  3. Pilih Pemilik dan biarkan nama Repositori default.

  4. Pilih Buat fork.

  5. Ulangi proses yang sama untuk aplikasi sampel frontend Node.js. Aplikasi ini adalah aplikasi web dasar yang mengakses URL jarak jauh.

  6. 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.

  7. Untuk menyimpan kredensial perwakilan layanan sebagai rahasia GitHub, buka salah satu repositori sampel bercabang di GitHub dan buka Pengaturan>> Aksi Rahasia keamanan dan variabel.>

  8. 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>
  9. Ulangi proses ini untuk repositori sampel fork lainnya.

  10. Untuk menyiapkan penyebaran berkelanjutan dengan GitHub Actions, masuk ke portal Azure.

  11. Navigasi ke halaman Gambaran Umum untuk aplikasi web front-end Anda.

  12. Di kiri panel, pilih Pusat Penyebaran. Lalu pilih Pengaturan.

  13. Dalam kotak Sumber , pilih "GitHub" dari opsi CI/CD.

    Screenshot that shows how to choose the deployment source.

  14. 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.

  15. 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
  16. Pilih Simpan.

  17. 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.

  1. Buka salah satu repositori GitHub fork Anda dan buka <repo-name>/.github/workflows/ direktori.

  2. 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
    
  3. 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

  1. Telusuri ke aplikasi web front-end dengan URL-nya: https://<frontend-app-name>.azurewebsites.net.

  2. 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.

  3. Coba navigasi langsung ke aplikasi web backend Anda dengan URL-nya: https://<backend-app-name>.azurewebsites.net. Anda akan melihat pesan Web 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.

  4. 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>
    
  5. 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 menjalankan curl 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
    

    Screenshot of SSH session showing how to validate app connections.

    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.

    Screenshot of App Service Networking page showing the inbound IP of the app.

  6. Ulangi perintah dan curl yang sama nslookup dari terminal lain (yang bukan sesi SSH pada instans front end Anda).

    Screenshot of an external terminal doing a nslookup and curl of the back-end web app.

    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 menjalankan curl pada aplikasi web back-end dari terminal eksternal, HTML yang dikembalikan berisi Web 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.

Pertanyaan yang Sering Ditanyakan

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 Koneksi OpenID.

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.

Langkah berikutnya