Arsitektur garis besar ini didasarkan pada arsitektur aplikasi web Dasar dan memperluasnya untuk memberikan panduan terperinci untuk merancang aplikasi web yang aman, redundan zona, dan sangat tersedia di Azure. Arsitektur mengekspos titik akhir publik melalui Azure Application Gateway dengan Web Application Firewall. Ini merutekan permintaan ke Azure App Service melalui Private Link. Aplikasi App Service menggunakan integrasi jaringan virtual dan Private Link untuk berkomunikasi dengan aman ke layanan Azure PaaS seperti Azure Key Vault dan Azure SQL Database.
Penting
Panduan ini didukung oleh contoh implementasi yang menampilkan implementasi App Service dasar di Azure. Implementasi ini dapat digunakan sebagai dasar untuk pengembangan solusi lebih lanjut dalam langkah pertama Anda menuju produksi.
Sistem
Gambar 1: Arsitektur Dasar Azure App Service
Unduh file Visio arsitektur ini.
Komponen
Banyak komponen arsitektur ini sama dengan arsitektur aplikasi web dasar. Daftar berikut ini hanya menyoroti perubahan pada arsitektur dasar.
- Application Gateway adalah load balancer lapisan 7 (HTTP/S) dan manajer lalu lintas web. Ini menggunakan perutean berbasis jalur URL untuk mendistribusikan lalu lintas masuk di seluruh zona ketersediaan dan melepas enkripsi untuk meningkatkan performa aplikasi.
- Web Application Firewall (WAF) adalah layanan cloud-native yang melindungi aplikasi web dari eksploitasi umum seperti injeksi SQL dan scripting lintas situs. WAF memberikan visibilitas ke lalu lintas ke dan dari aplikasi web Anda, memungkinkan Anda memantau dan mengamankan aplikasi Anda.
- Azure Key Vault adalah layanan yang menyimpan dan mengelola rahasia, kunci enkripsi, dan sertifikat dengan aman. Ini mempusatkan manajemen informasi sensitif.
- Azure Virtual Network adalah layanan yang memungkinkan Anda membuat jaringan virtual privat yang terisolasi dan aman di Azure. Untuk aplikasi web di App Service, Anda memerlukan subnet jaringan virtual untuk menggunakan titik akhir privat untuk komunikasi yang aman jaringan antar sumber daya.
- Private Link memungkinkan klien mengakses layanan platform as a service (PaaS) Azure langsung dari jaringan virtual privat tanpa menggunakan alamat IP publik.
- Azure DNS adalah layanan hosting untuk domain DNS yang menyediakan resolusi nama menggunakan infrastruktur Microsoft Azure. Zona DNS privat menyediakan cara untuk memetakan nama domain layanan yang sepenuhnya memenuhi syarat (FQDN) ke alamat IP titik akhir privat.
Jaringan
Keamanan jaringan adalah inti dari arsitektur garis besar App Services (lihat Gambar 2). Dari tingkat tinggi, arsitektur jaringan memastikan hal berikut:
- Satu titik masuk aman untuk lalu lintas klien
- Lalu lintas jaringan difilter
- Data saat transit dienkripsi secara end-to-end dengan TLS
- Penyelundupan data diminimalkan dengan menjaga lalu lintas di Azure melalui penggunaan Private Link
- Sumber daya jaringan dikelompokkan secara logis dan diisolasi satu sama lain melalui segmentasi jaringan
Alur jaringan
Gambar 2: Arsitektur jaringan aplikasi Azure App Service dasar
Berikut ini adalah deskripsi arus masuk lalu lintas internet ke instans App Service dan alur dari App Service ke layanan Azure.
Alur masuk
- Pengguna mengeluarkan permintaan ke IP publik Application Gateway.
- Aturan WAF dievaluasi. Aturan WAF secara positif memengaruhi keandalan sistem dengan melindungi dari berbagai serangan, seperti scripting lintas situs (XSS) dan injeksi SQL. Azure Application Gateway mengembalikan kesalahan kepada pemohon jika aturan WAF dilanggar dan pemrosesan berhenti. Jika tidak ada aturan WAF yang dilanggar, Application Gateway merutekan permintaan ke kumpulan backend, yang dalam hal ini adalah domain default App Service.
- Zona
privatelink.azurewebsites.net
DNS privat ditautkan ke jaringan virtual. Zona DNS memiliki catatan A yang memetakan domain default App Service ke alamat IP privat titik akhir privat App Service. Zona DNS privat tertaut ini memungkinkan Azure DNS menyelesaikan domain default ke alamat IP titik akhir privat. - Permintaan dirutekan ke instans App Service melalui titik akhir privat.
Alur layanan App Service ke Azure PaaS
- App Service membuat permintaan ke nama DNS layanan Azure yang diperlukan. Permintaannya bisa ke Azure Key Vault untuk mendapatkan rahasia, Azure Storage untuk mendapatkan file zip publikasi, Azure SQL Database, atau layanan Azure lainnya yang mendukung Private Link. Fitur integrasi jaringan virtual App Service merutekan permintaan melalui jaringan virtual.
- Seperti langkah 3 dalam alur masuk, zona DNS privat yang ditautkan memiliki catatan A yang memetakan domain layanan Azure ke alamat IP privat titik akhir privat. Sekali lagi, zona DNS privat tertaut ini memungkinkan Azure DNS untuk menyelesaikan domain ke alamat IP titik akhir privat layanan.
- Permintaan dirutekan ke layanan melalui titik akhir privat.
Masuk ke App Services
Application Gateway adalah sumber daya regional yang memenuhi persyaratan arsitektur garis besar ini. Application Gateway adalah penyeimbang muatan lapisan 7 yang dapat diskalakan, regional, dan mendukung fitur seperti firewall aplikasi web dan offloading TLS. Pertimbangkan poin-poin berikut saat menerapkan Application Gateway untuk masuk ke Azure App Services.
- Sebarkan Application Gateway dan konfigurasikan kebijakan WAF dengan set aturan yang dikelola Microsoft. Gunakan mode Pencegahan untuk mengurangi serangan web, yang dapat menyebabkan layanan asal (App Service dalam arsitektur) menjadi tidak tersedia.
- Terapkan enkripsi TLS end-to-end.
- Gunakan titik akhir privat untuk menerapkan akses privat masuk ke App Service Anda.
- Pertimbangkan untuk menerapkan penskalaan otomatis untuk Application Gateway agar mudah menyesuaikan dengan arus lalu lintas dinamis.
- Pertimbangkan untuk menggunakan jumlah instans skala minimum tidak kurang dari tiga dan selalu gunakan semua zona ketersediaan yang didukung wilayah Anda. Meskipun Application Gateway disebarkan dengan cara yang sangat tersedia, bahkan untuk satu instans skala, membuat instans baru setelah kegagalan dapat memakan waktu hingga tujuh menit. Menyebarkan beberapa instans di seluruh Zona Ketersediaan membantu memastikan, setelah kegagalan, instans berjalan saat instans baru sedang dibuat.
- Nonaktifkan akses jaringan publik pada App Service untuk memastikan isolasi jaringan. Di Bicep, ini dicapai dengan mengatur
publicNetworkAccess: 'Disabled'
di bawah properti/siteConfig.
Mengalir dari App Services ke layanan Azure
Arsitektur ini menggunakan integrasi jaringan virtual untuk App Service, khususnya untuk merutekan lalu lintas ke titik akhir privat melalui jaringan virtual. Arsitektur garis besar tidak memungkinkan semua perutean lalu lintas untuk memaksa semua lalu lintas keluar melalui jaringan virtual, hanya lalu lintas internal, seperti lalu lintas yang terikat untuk titik akhir privat.
Layanan Azure yang tidak memerlukan akses dari internet publik harus mengaktifkan titik akhir privat dan titik akhir publik dinonaktifkan. Titik akhir privat digunakan di seluruh arsitektur ini untuk meningkatkan keamanan dengan memungkinkan App Service Anda terhubung ke layanan Private Link langsung dari jaringan virtual privat Anda tanpa menggunakan alamat IP publik.
Dalam arsitektur ini, Azure SQL Database, Azure Storage, dan Key Vault semuanya memiliki titik akhir publik yang dinonaktifkan. Firewall layanan Azure hanya digunakan untuk mengizinkan lalu lintas dari layanan Azure resmi lainnya. Anda harus mengonfigurasi layanan Azure lainnya dengan titik akhir privat, seperti Azure Cosmos DB dan Azure Redis Cache. Dalam arsitektur ini, Azure Monitor tidak menggunakan titik akhir privat, tetapi bisa.
Arsitektur garis besar mengimplementasikan zona DNS privat untuk setiap layanan. Zona DNS privat berisi catatan A yang memetakan antara nama domain layanan yang sepenuhnya memenuhi syarat dan alamat IP privat titik akhir privat. Zona ditautkan ke jaringan virtual. Grup zona DNS privat memastikan bahwa rekaman DNS tautan privat dibuat dan diperbarui secara otomatis.
Pertimbangkan poin-poin berikut saat menerapkan integrasi jaringan virtual dan titik akhir privat.
- Gunakan panduan konfigurasi zona DNS layanan Azure untuk penamaan zona DNS privat.
- Konfigurasikan firewall layanan untuk memastikan akun penyimpanan, brankas kunci, SQL Database, dan layanan Azure lainnya hanya dapat dihubungkan ke privat.
- Atur aturan akses jaringan default akun penyimpanan untuk menolak semua lalu lintas.
- Aktifkan Key Vault untuk Private Link.
- Tolak akses jaringan publik ke Azure SQL.
Segmentasi dan keamanan jaringan virtual
Jaringan dalam arsitektur ini memiliki subnet terpisah untuk Application Gateway, komponen integrasi App Service, dan titik akhir privat. Setiap subnet memiliki grup keamanan jaringan yang membatasi lalu lintas masuk dan keluar untuk subnet tersebut hanya untuk apa yang diperlukan. Tabel berikut ini memperlihatkan tampilan aturan NSG yang disederhanakan yang ditambahkan garis besar ke setiap subnet. Tabel memberikan nama dan fungsi aturan.
Subnet | Masuk | Keluar |
---|---|---|
snet-AppGateway | AppGw.In.Allow.ControlPlane : Izinkan akses sarana kontrol masukAppGw.In.Allow443.Internet : Izinkan akses HTTPS internet masuk |
AppGw.Out.Allow.AppServices : Izinkan akses keluar ke AppServicesSubnetAppGw.Out.Allow.PrivateEndpoints : Izinkan akses keluar ke PrivateEndpointsSubnetAppPlan.Out.Allow.AzureMonitor : Izinkan akses keluar ke Azure Monitor |
snet-PrivateEndpoints | Aturan default: Izinkan masuk dari jaringan virtual | Aturan default: Izinkan keluar ke jaringan virtual |
snet-AppService | Aturan default: Izinkan masuk dari vnet | AppPlan.Out.Allow.PrivateEndpoints : Izinkan akses keluar ke PrivateEndpointsSubnetAppPlan.Out.Allow.AzureMonitor : Izinkan akses keluar ke Azure Monitor |
Pertimbangkan poin-poin berikut saat menerapkan segmentasi dan keamanan jaringan virtual.
- Aktifkan perlindungan DDoS untuk jaringan virtual dengan subnet yang merupakan bagian dari gateway aplikasi dengan IP publik.
- Tambahkan NSG ke setiap subnet jika memungkinkan. Anda harus menggunakan aturan ketat yang mengaktifkan fungsionalitas solusi penuh.
- Gunakan kelompok keamanan aplikasi. Grup keamanan aplikasi memungkinkan Anda mengelompokkan NSG, membuat pembuatan aturan lebih mudah untuk lingkungan yang kompleks.
Contoh skema subnet Virtual bisa berupa:
Jenis | Nama | Rentang Alamat |
---|---|---|
Virtual Network | Awalan Alamat | 10.0.0.0/16 |
Subnet | GatewaySubnet | 10.0.1.0/24 |
Subnet | AppServicesSubnet | 10.0.0.0/24 |
Subnet | PrivateEndpointsSubnet | 10.0.2.0/27 |
Subnet | AgentsSubject | 10.0.2.32/27 |
Referensi Azure-Samples\app-service-baseline-implementation
Pertimbangan
Pertimbangan ini mengimplementasikan pilar Azure Well-Architected Framework, yang merupakan serangkaian tenet panduan yang dapat digunakan untuk meningkatkan kualitas beban kerja. Untuk informasi selengkapnya, lihat Microsoft Azure Well-Architected Framework.
Keandalan
Keandalan memastikan aplikasi Anda dapat mencapai komitmen yang Anda buat kepada pelanggan Anda. Untuk informasi selengkapnya, lihat Gambaran Umum pilar keandalan.
Arsitektur App Services dasar berfokus pada redundansi zona untuk layanan regional utama. Zona ketersediaan adalah lokasi yang terpisah secara fisik dalam suatu wilayah. Mereka menyediakan redundansi zona untuk layanan pendukung ketika dua instans atau lebih disebarkan di wilayah pendukung. Ketika satu zona mengalami waktu henti, zona lain mungkin masih tidak terpengaruh.
Arsitektur ini juga memastikan instans layanan Azure yang cukup untuk memenuhi permintaan. Bagian berikut memberikan panduan keandalan untuk layanan utama dalam arsitektur. Dengan cara ini, zona ketersediaan membantu Anda mencapai keandalan dengan memberikan ketersediaan tinggi dan toleransi kesalahan.
Application Gateway
Menyebarkan Azure Application Gateway v2 dalam konfigurasi zona redundan. Pertimbangkan untuk menggunakan jumlah instans skala minimum tidak kurang dari tiga untuk menghindari waktu mulai enam hingga tujuh menit untuk instans Application Gateway jika ada kegagalan.
App Services
- Sebarkan minimal tiga instans App Services dengan dukungan Zona Ketersediaan.
- Terapkan titik akhir pemeriksaan kesehatan di aplikasi Anda dan konfigurasikan fitur pemeriksaan App Kondisi layanan untuk mengalihkan permintaan dari instans yang tidak sehat. Untuk informasi selengkapnya tentang pemeriksaan App Service Health, lihat Memantau instans App Service menggunakan pemeriksaan kesehatan. Untuk informasi selengkapnya tentang menerapkan titik akhir pemeriksaan kesehatan di aplikasi ASP.NET, lihat Pemeriksaan kesehatan di ASP.NET Core.
- Kapasitas provisi berlebih untuk dapat menangani kegagalan zona.
SQL Database
- Sebarkan Tujuan Umum, Premium, atau Bisnis Kritis Azure SQL DB dengan redundansi zona diaktifkan. Tingkat Tujuan Umum, Premium, dan Bisnis Kritis mendukung Redundansi Zona di Azure SQL DB.
- Konfigurasikan cadangan SQL DB untuk menggunakan penyimpanan zona redundan (ZRS) atau penyimpanan geo-zona-redundan (GZRS).
Penyimpanan Blob
- Azure Zone-Redundant Storage (ZRS) mereplikasi data Anda secara sinkron di tiga zona ketersediaan di wilayah tersebut. Buat akun penyimpanan ZRS Standar atau GZRS Standar untuk memastikan data direplikasi di seluruh zona ketersediaan.
- Buat akun penyimpanan terpisah untuk penyebaran, aset web, dan data lainnya sehingga Anda dapat mengelola dan mengonfigurasi akun secara terpisah.
Efisiensi kinerja
Efisiensi performa adalah kemampuan beban kerja Anda untuk diskalakan agar memenuhi permintaan yang diberikan oleh pengguna dengan cara yang efisien. Untuk informasi selengkapnya, lihat Gambaran umum pilar efisiensi performa.
Bagian berikut membahas skalabilitas untuk komponen utama dalam arsitektur ini.
Application Gateway
- Terapkan penskalaan otomatis untuk Application Gateway untuk menskalakan masuk atau keluar untuk memenuhi permintaan.
- Atur jumlah instans maksimum ke angka yang lebih tinggi dari kebutuhan yang Anda harapkan. Anda hanya akan dikenakan biaya untuk Unit Kapasitas yang Anda gunakan.
- Atur jumlah instans minimum yang dapat menangani lonjakan kecil dalam lalu lintas. Anda dapat menggunakan penggunaan Unit Komputasi rata-rata untuk menghitung jumlah instans minimum Anda.
- Ikuti panduan tentang ukuran subnet Application Gateway.
App Service
- Gunakan paket Standar atau lebih tinggi dengan tiga instans pekerja atau lebih untuk ketersediaan tinggi.
- Aktifkan Skala otomatis untuk memastikan Anda dapat meningkatkan dan menurunkan skala untuk memenuhi permintaan.
- Pertimbangkan untuk membuka tiket dukungan untuk meningkatkan jumlah maksimum pekerja menjadi dua kali jumlah instans jika App Service Anda secara konsisten menggunakan setengah jumlah instans maksimum. Jumlah maksimum instans default hingga 30 untuk paket App Service Premium dan 10 untuk paket Standar.
- Pertimbangkan untuk menyebarkan beberapa stempel aplikasi saat App Service Anda mulai mencapai batas atas.
- Pilih paket Azure App Service yang tepat yang memenuhi persyaratan beban kerja Anda.
- Tambahkan Azure CDN ke Azure App Service untuk menyajikan konten statis.
- Pertimbangkan Lingkungan App Service jika tetangga yang berisik menjadi perhatian.
SQL Server
Menskalakan sumber daya database adalah topik kompleks di luar cakupan arsitektur ini. Pertimbangkan sumber daya berikut saat menskalakan database Anda,
- Menskalakan sumber daya database secara dinamis dengan waktu henti minimal
- Meluaskan skala dengan Azure SQL Database
- Menggunakan replika baca-saja untuk membongkar beban kerja kueri baca-saja
Panduan skalabilitas lainnya
- Tinjau batas dan kuota langganan untuk memastikan bahwa layanan diskalakan sesuai permintaan.
- Pertimbangkan penembolokan untuk jenis data berikut untuk meningkatkan performa dan skalabilitas:
- Data transaksi semi-statis.
- Keadaan sesi.
- keluaran HTML. Ini dapat berguna dalam aplikasi yang merender keluaran HTML kompleks.
Keamanan
Arsitektur App Service dasar berfokus pada rekomendasi keamanan penting untuk aplikasi web Anda. Memahami cara kerja enkripsi dan identitas di setiap lapisan sangat penting untuk mengamankan beban kerja Anda.
App Service
- Menonaktifkan metode autentikasi lokal untuk penyebaran situs FTP dan SCM
- Nonaktifkan penelusuran kesalahan jarak jauh.
- Gunakan versi TLS terbaru.
- Aktifkan Pertahanan Microsoft untuk App Service.
- Gunakan versi terbaru platform yang didukung, bahasa komputer, protokol, dan kerangka kerja.
- Pertimbangkan Lingkungan App Service jika Anda memerlukan isolasi yang lebih tinggi atau akses jaringan yang aman.
Enkripsi
Aplikasi web produksi perlu mengenkripsi data saat transit menggunakan HTTPS. Protokol HTTPS bergantung pada Keamanan Lapisan Transportasi (TLS) dan menggunakan kunci publik dan privat untuk enkripsi. Anda harus menyimpan sertifikat (X.509) di Key Vault dan mengizinkan Application Gateway untuk mengambil kunci privat. Untuk data tidak aktif, beberapa layanan secara otomatis mengenkripsi data, dan yang lain memungkinkan Anda menyesuaikan.
Data saat transit
Dalam arsitektur garis besar, data saat transit dienkripsi dari pengguna ke aplikasi web di App Service. Alur kerja berikut menjelaskan cara kerja enkripsi pada tingkat tinggi.
- Pengguna mengirim permintaan HTTPS ke aplikasi web.
- Permintaan HTTPS mencapai gateway aplikasi.
- Gateway aplikasi menggunakan sertifikat (X.509) di Key Vault untuk membuat koneksi TLS yang aman dengan browser web pengguna. Gateway aplikasi mendekripsi permintaan HTTPS sehingga firewall aplikasi web dapat memeriksanya.
- Gateway aplikasi membuat koneksi TLS dengan App Service untuk mengenkripsi ulang permintaan pengguna. App Service menyediakan dukungan asli untuk HTTPS, sehingga Anda tidak perlu menambahkan sertifikat ke App Service. Gateway aplikasi mengirimkan lalu lintas terenkripsi ke App Service. App Service mendekripsi lalu lintas, dan aplikasi web memproses permintaan.
Pertimbangkan rekomendasi berikut saat mengonfigurasi enkripsi data dalam transit.
- Buat atau unggah sertifikat Anda ke Key Vault. Enkripsi HTTPS memerlukan sertifikat (X.509). Anda memerlukan sertifikat dari otoritas sertifikat tepercaya untuk domain kustom Anda.
- Simpan kunci privat ke sertifikat di Key Vault.
- Ikuti panduan dalam Memberikan izin kepada aplikasi untuk mengakses brankas kunci Azure menggunakan Azure RBAC dan Identitas terkelola untuk sumber daya Azure untuk menyediakan akses Application Gateway ke kunci privat sertifikat. Jangan gunakan kebijakan akses Key Vault untuk menyediakan akses. Kebijakan akses hanya memungkinkan Anda memberikan izin luas tidak hanya untuk nilai tertentu.
- Aktifkan enkripsi ujung ke ujung. App Service adalah kumpulan backend untuk gateway aplikasi. Saat Anda mengonfigurasi pengaturan backend untuk kumpulan backend, gunakan protokol HTTPS melalui port backend 443.
Data tidak aktif
- Mengenkripsi data sensitif di Azure SQL Database menggunakan enkripsi data transparan. Data transparan mengenkripsi seluruh database, cadangan, dan file log transaksi dan tidak memerlukan perubahan pada aplikasi web Anda.
- Meminimalkan latensi enkripsi database. Untuk meminimalkan latensi enkripsi, tempatkan data yang perlu Anda amankan dalam databasenya sendiri dan hanya aktifkan enkripsi untuk database tersebut.
- Pahami dukungan enkripsi bawaan. Azure Storage secara otomatis mengenkripsi data tidak aktif menggunakan enkripsi sisi server (AES 256-bit). Azure Monitor secara otomatis mengenkripsi data tidak aktif menggunakan kunci yang dikelola Microsoft (MMK).
Pengelolaan Identitas dan Akses
Garis besar App Service mengonfigurasi autentikasi dan otorisasi untuk identitas pengguna (pengguna) dan identitas beban kerja (sumber daya Azure) dan menerapkan prinsip hak istimewa paling sedikit.
Identitas pengguna.
- Gunakan mekanisme autentikasi terintegrasi untuk App Service ("EasyAuth"). EasyAuth menyederhanakan proses integrasi penyedia identitas ke dalam aplikasi web Anda. Ini menangani autentikasi di luar aplikasi web Anda, sehingga Anda tidak perlu membuat perubahan kode yang signifikan.
- Konfigurasikan URL balasan untuk domain kustom. Anda harus mengalihkan aplikasi web ke
https://<application-gateway-endpoint>/.auth/login/<provider>/callback
. Ganti<application-gateway-endpoint>
dengan alamat IP publik atau nama domain kustom yang terkait dengan gateway aplikasi Anda. Ganti<provider>
dengan penyedia autentikasi yang Anda gunakan, seperti "aad" untuk ID Microsoft Entra. Anda dapat menggunakan dokumentasi Azure Front untuk menyiapkan alur ini dengan Application Gateway atau Menyiapkan Application Gateway.
Identitas beban kerja
- Gunakan identitas terkelola untuk identitas beban kerja. Identitas terkelola menghilangkan kebutuhan pengembang untuk mengelola kredensial autentikasi.
- Gunakan identitas terkelola yang ditetapkan pengguna. Identitas yang ditetapkan sistem dapat menyebabkan penyebaran infrastruktur sebagai kode gagal berdasarkan kondisi balapan dan urutan operasi. Anda dapat menggunakan identitas terkelola yang ditetapkan pengguna untuk menghindari beberapa skenario kesalahan penyebaran ini. Untuk mengetahui informasi selengkapnya, lihat identitas terkelola.
Keunggulan operasional
Keunggulan operasional mencakup proses operasi yang menyebarkan aplikasi dan membuatnya tetap berjalan dalam produksi. Untuk informasi selengkapnya, lihat Gambaran umum pilar keunggulan operasional.
Penyebaran untuk aplikasi App Service dasar mengikuti panduan di CI/CD untuk Azure Web Apps dengan Azure Pipelines. Selain panduan itu, arsitektur garis besar App Services memperhitungkan bahwa aplikasi dan akun penyimpanan penyebaran diamankan jaringan. Arsitektur menolak akses publik ke App Service. Ini berarti Anda tidak dapat menyebarkan dari luar jaringan virtual. Garis besar menunjukkan kepada Anda cara menyebarkan kode aplikasi dalam jaringan virtual menggunakan agen penyebaran yang dihost sendiri. Panduan penyebaran berikut berfokus pada penyebaran kode aplikasi dan tidak menyebarkan perubahan infrastruktur atau database.
Gambar 3: Menyebarkan aplikasi Azure App Service
Alur penyebaran
Sebagai bagian dari alur rilis, alur memposting permintaan pekerjaan untuk agen yang dihost sendiri dalam antrean pekerjaan. Permintaan pekerjaan adalah agar agen mengunggah artefak build file zip publikasi ke Akun Azure Storage.
Agen penyebaran yang dihost sendiri mengambil permintaan pekerjaan baru melalui polling. Ini mengunduh pekerjaan dan artefak build.
Agen penyebaran yang dihost sendiri mengunggah file zip ke akun penyimpanan melalui titik akhir privat akun penyimpanan.
Alur berlanjut, dan agen terkelola mengambil pekerjaan berikutnya. Agen terkelola melakukan panggilan CLI untuk memperbarui appSetting WEBSITE_RUN_FROM_PACKAGE ke nama file zip publikasi baru untuk slot penahapan.
az webapp config appsettings set -g MyResourceGroupName -n MyUniqueApp --slot staging --settings WEBSITE_RUN_FROM_PACKAGE=UriToNewZip
Azure App Service menarik file zip publikasi baru dari penyimpanan melalui titik akhir privat akun penyimpanan. Instans penahapan dimulai ulang dengan paket baru karena WEBSITE_RUN_FROM_PACKAGE diatur ke nama file yang berbeda.
Alur dilanjutkan dan menjalankan tes asap atau menunggu persetujuan. Jika pengujian lulus atau persetujuan diberikan, alur menukar slot penahapan dan produksi.
Panduan penyebaran
Berikut ini menyoroti panduan penyebaran utama untuk arsitektur garis besar.
- Gunakan jalankan dari paket untuk menghindari konflik penyebaran. Saat Anda menjalankan aplikasi langsung dari paket di Azure App Service, file dalam paket tidak disalin ke direktori wwwroot. Sebagai gantinya, paket ZIP sendiri akan dipasang langsung sebagai direktori wwwroot baca-saja. Ini menghilangkan konflik kunci file antara penyebaran dan runtime serta memastikan hanya aplikasi yang sepenuhnya disebarkan yang berjalan kapan saja
- Sertakan nomor versi dalam file zip paket yang disebarkan. Memperbarui
WEBSITE_RUN_FROM_PACKAGE
appSetting ke paket penyebaran dengan nama file yang berbeda menyebabkan App Services secara otomatis mengambil versi baru dan memulai ulang layanan. - Gunakan Slot penyebaran untuk penyebaran kode yang tangguh.
- Pertimbangkan untuk menggunakan campuran agen terkelola dan yang dihost sendiri.
- Gunakan agen yang dihost sendiri untuk mengunggah file zip paket ke akun penyimpanan melalui titik akhir privat. Agen memulai komunikasi ke alur melalui polling sehingga tidak diperlukan untuk membuka jaringan untuk panggilan masuk.
- Gunakan agen terkelola untuk pekerjaan lain dalam alur.
- Mengotomatiskan penyebaran infrastruktur dengan Infrastruktur sebagai Kode (IaC).
- Terus memvalidasi beban kerja untuk menguji performa dan ketahanan seluruh solusi menggunakan layanan seperti Azure Load Testing dan Azure Chaos Studio.
Konfigurasi
Aplikasi memerlukan nilai konfigurasi dan rahasia. Gunakan panduan berikut untuk manajemen konfigurasi dan rahasia.
- Jangan pernah memeriksa rahasia seperti kata sandi atau kunci akses ke kontrol sumber.
- Gunakan Azure Key Vault untuk menyimpan rahasia.
- Gunakan konfigurasi App Service untuk konfigurasi aplikasi Anda. Jika Anda perlu eksternalisasi konfigurasi dari konfigurasi aplikasi Anda atau memerlukan dukungan bendera fitur, pertimbangkan untuk menggunakan Azure App Configuration.
- Gunakan referensi Key Vault dalam konfigurasi App Service untuk mengekspos rahasia dengan aman di aplikasi Anda.
- Buat pengaturan aplikasi yang menempel pada slot dan tidak ditukar jika Anda memerlukan pengaturan produksi dan penahapan yang berbeda. Saat Anda menukar slot penyebaran, pengaturan aplikasi ditukar secara default.
- Atur variabel lingkungan lokal untuk pengembangan lokal atau manfaatkan fitur platform aplikasi. Konfigurasi App Services mengekspos pengaturan aplikasi sebagai variabel lingkungan. Visual Studio, misalnya, memungkinkan Anda mengatur variabel lingkungan dalam profil peluncuran. Ini juga memungkinkan Anda untuk menggunakan Pengaturan Aplikasi dan rahasia pengguna untuk menyimpan pengaturan dan rahasia aplikasi lokal.
Pemantauan
Pemantauan adalah pengumpulan dan analisis data dari sistem IT. Tujuan pemantauan adalah pengamatan pada beberapa lapisan untuk melacak kesehatan dan keamanan aplikasi web. Pengamatan adalah aspek utama dari arsitektur App Service dasar.
Untuk memantau aplikasi web, Anda perlu mengumpulkan dan menganalisis metrik dan log dari kode aplikasi, infrastruktur (runtime), dan platform (sumber daya Azure). Untuk informasi selengkapnya, lihat Log aktivitas Azure, log sumber daya Azure, dan log aplikasi.
Memantau platform
Pemantauan platform adalah pengumpulan data dari layanan Azure dalam arsitektur Anda. Pertimbangkan panduan berikut mengenai pemantauan platform.
Tambahkan pengaturan diagnostik untuk setiap sumber daya Azure. Setiap layanan Azure memiliki sekumpulan log dan metrik yang berbeda yang dapat Anda ambil. Gunakan tabel berikut untuk mencari tahu metrik dan log yang ingin Anda kumpulkan.
Sumber daya Azure Deskripsi metrik dan log Application Gateway Deskripsi metrik dan log Application Gateway Web Application Firewall Metrik firewall aplikasi web dan deskripsi log App Service Deskripsi metrik dan log App Service Database Azure SQL Metrik dan deskripsi log Azure SQL Database CosmosDB Deskripsi metrik dan log Azure Cosmos DB Key Vault Deskripsi metrik dan log Key Vault Penyimpanan Blob Metrik dan deskripsi log Azure Blob Storage Application Insights Deskripsi metrik dan log Application Insights Alamat IP publik Metrik alamat IP publik dan deskripsi log Pahami biaya pengumpulan metrik dan log. Secara umum, semakin banyak metrik dan log yang Anda kumpulkan, semakin banyak biayanya. Untuk informasi selengkapnya, lihat Perhitungan dan opsi biaya Analitik Log dan Harga untuk ruang kerja Analitik Log.
Membuat pemberitahuan. Anda harus membuat pemberitahuan untuk semua sumber daya Azure dalam arsitektur dan mengonfigurasi Tindakan untuk memulihkan masalah. Pilih aturan pemberitahuan umum dan yang direkomendasikan untuk memulai dan memodifikasi dari waktu ke waktu sesuai kebutuhan. Untuk informasi selengkapnya, lihat:
Application Gateway
Application Gateway memantau kesehatan sumber daya di kumpulan backend-nya. Gunakan log Akses Application Gateway untuk mengumpulkan informasi seperti tanda waktu, kode respons HTTP, dan jalur URL. Untuk informasi selengkapnya, lihat Pemeriksaan kesehatan default Application Gateway dan kesehatan backend dan log diagnostik.
App Service
App Service memiliki alat pemantauan bawaan dan terintegrasi yang harus Anda aktifkan untuk meningkatkan pengamatan. Jika aplikasi web Anda sudah memiliki fitur telemetri dan pemantauan ("instrumentasi dalam proses"), aplikasi web tersebut harus terus berfungsi di App Service.
- Aktifkan instrumentasi otomatis. App Service memiliki ekstensi instrumentasi yang dapat Anda aktifkan tanpa perubahan kode. Anda mendapatkan visibilitas pemantauan performa aplikasi (APM). Untuk informasi selengkapnya, lihat Memantau performa Azure App Service.
- Mengaktifkan pelacakan terdistribusi. Instrumentasi otomatis menawarkan cara untuk memantau sistem cloud terdistribusi melalui pelacakan terdistribusi dan profiler performa.
- Gunakan instrumentasi berbasis kode untuk telemetri kustom. Azure Application Insights juga mendukung instrumentasi berbasis kode untuk telemetri aplikasi kustom. Tambahkan Application Insights SDK ke kode Anda dan gunakan API Application Insights.
- Aktifkan log App Service. Platform App Service mendukung empat log tambahan yang harus Anda aktifkan untuk mendukung pemecahan masalah. Log ini adalah log aplikasi, log server web, pesan kesalahan terperinci, dan pelacakan permintaan yang gagal.
- Gunakan pengelogan terstruktur. Tambahkan pustaka pengelogan terstruktur ke kode aplikasi Anda. Perbarui kode Anda untuk menggunakan pasangan kunci-nilai dan aktifkan log Aplikasi di App Service untuk menyimpan log ini di Ruang Kerja Analitik Log Anda.
- Aktifkan pemeriksaan App Service Health. Pemeriksaan kesehatan mengalihkan permintaan dari instans yang tidak sehat dan menggantikan instans yang tidak sehat. Paket App Service Anda perlu menggunakan dua instans atau lebih agar pemeriksaan Kesehatan berfungsi.
Database
- Wawasan database pengguna. Untuk database Azure SQL, Anda harus mengonfigurasi Wawasan SQL di Azure Monitor. Database Insights menggunakan tampilan manajemen dinamis untuk mengekspos data yang Anda butuhkan untuk memantau kesehatan, mendiagnosis masalah, dan menyetel performa. Untuk informasi selengkapnya, lihat Memantau Azure SQL Database dengan Azure Monitor.
- Jika arsitektur Anda menyertakan Cosmos DB, Anda tidak perlu mengaktifkan atau mengonfigurasi apa pun untuk menggunakan wawasan Cosmos DB.
Pemerintahan
Aplikasi web mendapat manfaat dari Azure Policy dengan memberlakukan keputusan arsitektur dan keamanan. Azure Policy dapat membuatnya (1) tidak mungkin untuk menyebarkan (menolak) atau (2) penyimpangan konfigurasi (audit) yang mudah dideteksi dari status yang Anda inginkan. Ini membantu Anda menangkap penyebaran Infrastruktur sebagai Kode (IaC) atau portal Azure perubahan yang menyimpang dari arsitektur yang disepakati. Anda harus menempatkan semua sumber daya dalam arsitektur Anda di bawah tata kelola Azure Policy. Gunakan kebijakan bawaan atau inisiatif kebijakan jika memungkinkan untuk menerapkan topologi jaringan penting, fitur layanan, keamanan, dan keputusan pemantauan, misalnya:
- App Service harus menonaktifkan akses jaringan publik
- Layanan aplikasi harus menggunakan integrasi jaringan virtual
- App Service harus menggunakan Azure Private Link untuk menyambungkan ke layanan PaaS
- App Service harus menonaktifkan metode autentikasi lokal untuk penyebaran situs FTP & SCM
- App Service harus menonaktifkan penelusuran kesalahan jarak jauh
- Aplikasi App Service harus menggunakan versi TLS terbaru
- Microsoft Defender untuk App Service harus diaktifkan
- Web Application Firewall (WAF) harus diaktifkan untuk Azure Application Gateway
Lihat kebijakan bawaan lainnya untuk layanan utama seperti Application Gateway dan komponen jaringan, App Service, Key Vault, dan Pemantauan. Dimungkinkan untuk membuat kebijakan kustom atau menggunakan kebijakan komunitas (seperti dari Zona Pendaratan Azure) jika kebijakan bawaan tidak sepenuhnya memenuhi kebutuhan Anda. Lebih suka kebijakan bawaan saat tersedia.