Aplikasi web yang dikelola dengan aman

Azure App Service
Azure Application Gateway
Azure SQL Database
Azure VPN Gateway
Azure Web Application Firewall

Artikel ini memberikan gambaran umum tentang penyebaran aplikasi aman menggunakan Lingkungan Azure App Service. Untuk membatasi akses aplikasi dari internet, layanan Azure Application Gateway dan Azure Web Application Firewall digunakan. Artikel ini juga memberikan panduan tentang integrasi berkelanjutan dan penyebaran berkelanjutan (CI/CD) untuk App Service Environment menggunakan Azure DevOps.

Skenario ini umumnya disebarkan di industri seperti perbankan dan asuransi, di mana pelanggan sadar akan keamanan tingkat platform selain keamanan tingkat aplikasi. Untuk mendemonstrasikan konsep tersebut, kami akan menggunakan aplikasi yang memungkinkan pengguna mengirimkan laporan pengeluaran.

Kemungkinan kasus penggunaan

Pertimbangkan skenario ini untuk kasus penggunaan berikut:

  • Membangun Azure Web App di mana keamanan tambahan diperlukan.
  • Menyediakan sewa khusus, bukan Paket App Service penyewa bersama.
  • Menggunakan Azure DevOps dengan Lingkungan Layanan Aplikasi yang seimbang beban internal (ILB).

Arsitektur

Diagram featuring the sample scenario architecture for Secure ILB App Service Environment Deployment.

Unduh file Visio arsitektur ini.

Aliran data

  1. Permintaan HTTP/HTTPS pertama kali mencapai Application Gateway.
  2. Secara opsional (tidak ditampilkan dalam diagram), Anda dapat mengaktifkan autentikasi Microsoft Entra untuk Aplikasi Web. Setelah lalu lintas pertama kali mencapai Application Gateway, pengguna akan diminta untuk menyediakan kredensial untuk mengautentikasi dengan aplikasi.
  3. Permintaan pengguna mengalir melalui load balancer internal (ILB) lingkungan, yang pada gilirannya merutekan lalu lintas ke Aplikasi Web Pengeluaran.
  4. Pengguna kemudian melanjutkan untuk membuat laporan pengeluaran.
  5. Sebagai bagian dari pembuatan laporan pengeluaran, Aplikasi API yang disebarkan dipanggil untuk mengambil nama manajer dan email pengguna.
  6. Laporan pengeluaran yang dibuat akan disimpan dalam Azure SQL Database.
  7. Untuk memfasilitasi penyebaran berkelanjutan, kode diperiksa ke instans Azure DevOps.
  8. VM build memiliki Agen Azure DevOps yang terinstal, memungkinkan VM build menarik bit untuk Aplikasi Web untuk disebarkan ke Lingkungan App Service (karena Build VM disebarkan dalam subnet di dalam jaringan virtual yang sama).

Komponen

  • Lingkungan App Service menyediakan lingkungan khusus yang sepenuhnya terisolasi untuk menjalankan aplikasi dengan aman dalam skala tinggi. Selain itu, karena Lingkungan App Service dan beban kerja yang berjalan di atasnya berada di belakang jaringan virtual, itu juga menyediakan lapisan keamanan dan isolasi tambahan. Persyaratan skala tinggi dan isolasi mendorong pemilihan ILB App Service Environment.
  • Beban kerja ini menggunakan tingkat harga App Service yang terisolasi, sehingga aplikasi berjalan di lingkungan khusus privat di pusat data Azure menggunakan prosesor yang lebih cepat, penyimpanan SSD, dan dua kali lipat rasio memori-ke-inti dibandingkan dengan Standar.
  • Aplikasi web host Web App dan API App Azure App Services dan API RESTful. Aplikasi dan API ini dihosting pada paket layanan Terisolasi, yang juga menawarkan autoscaling, domain kustom, dan sebagainya, tetapi di tingkat khusus.
  • Azure Application Gateway adalah penyeimbang beban lalu lintas web yang beroperasi di Layer 7 yang mengelola lalu lintas ke aplikasi web. Ini menawarkan offloading SSL, yang menghapus overhead tambahan dari server web yang menghosting aplikasi web untuk mendekripsi lalu lintas lagi.
  • Web Application Firewall (WAF) adalah fitur Application Gateway. Mengaktifkan WAF di Application Gateway akan semakin meningkatkan keamanan. WAF menggunakan aturan OWASP untuk melindungi aplikasi web dari serangan seperti scripting lintas situs, pembajakan sesi, dan injeksi SQL.
  • Azure SQL Database dipilih karena sebagian besar data dalam aplikasi ini merupakan data relasional, dengan beberapa data sebagai dokumen dan Blob.
  • Azure Networking menyediakan berbagai kemampuan jaringan di Azure, dan jaringan dapat di-peering dengan jaringan virtual lainnya di Azure. Koneksi juga dapat dibuat dengan pusat data lokal melalui ExpressRoute atau situs-ke-situs. Dalam hal ini, titik akhir layanan akan diaktifkan pada jaringan virtual untuk memastikan data hanya mengalir antara jaringan virtual Azure dan instans SQL Database.
  • Azure DevOps digunakan untuk membantu tim berkolaborasi selama sprint, menggunakan fitur yang mendukung Pengembangan Tangkas, dan untuk membuat alur build dan rilis.
  • Azure build VM dibuat sehingga agen yang diinstal dapat menarik build masing-masing, dan menyebarkan aplikasi web ke lingkungan.

Alternatif

Lingkungan App Service dapat menjalankan aplikasi web reguler di Windows atau, seperti dalam contoh ini, aplikasi web yang disebarkan di dalam lingkungan yang masing-masing berjalan sebagai kontainer Linux. Lingkungan App Service dipilih untuk menghosting aplikasi kontainer instans tunggal ini. Tersedia alternatif—baca pertimbangan di bawah ini saat merancang solusi Anda.

  • Azure Service Fabric: Jika lingkungan Anda sebagian besar berbasis Windows, dan beban kerja Anda terutama berbasis .NET Framework, dan Anda tidak mempertimbangkan untuk merancang ulang ke .NET Core, maka gunakan Service Fabric untuk mendukung dan menyebarkan Kontainer Windows Server. Selain itu, Service Fabric mendukung API pemrograman C# atau Java, dan untuk mengembangkan layanan mikro asli, kluster dapat disediakan di Windows atau Linux.
  • Azure Kubernetes Service (AKS) adalah proyek sumber terbuka dan platform orkestrasi yang lebih cocok untuk meng-hosting aplikasi multikontainer kompleks yang biasanya menggunakan arsitektur berbasis layanan mikro. AKS adalah layanan Azure terkelola yang mengabstraksi kompleksitas penyediaan dan konfigurasi kluster Kubernetes. Namun, pengetahuan yang signifikan tentang platform Kubernetes diperlukan untuk mendukung dan memeliharanya, sehingga menghosting beberapa aplikasi web kontainer instans tunggal mungkin bukan pilihan terbaik.

Opsi lain untuk tingkat data meliputi:

  • Azure Cosmos DB: Jika sebagian besar data Anda dalam format non-relasional, Azure Cosmos DB adalah alternatif yang baik. Layanan ini menyediakan platform untuk menjalankan model data lain seperti MongoDB, Cassandra, data Graph, atau penyimpanan tabel sederhana.

Pertimbangan

Ada pertimbangan tertentu saat berhadapan dengan sertifikat di ILB App Service Environment. Anda perlu membuat sertifikat yang dirantai hingga akar tepercaya tanpa memerlukan Permintaan Penandatanganan Sertifikat yang dihasilkan oleh server tempat sertifikasi pada akhirnya akan disimpan. Dengan Layanan Informasi Internet (IIS), misalnya, langkah pertama adalah menghasilkan CSR dari server IIS Anda lalu mengirimkannya ke otoritas penerbit sertifikat SSL.

Anda tidak dapat mengeluarkan CSR dari Internal Load Balancer (ILB) lingkungan App Service. Cara menangani batasan ini adalah dengan menggunakan prosedur kartubebas.

Prosedur kartubebas memungkinkan Anda menggunakan bukti kepemilikan nama DNS alih-alih CSR. Jika Anda memiliki namespace DNS, Anda bisa memasukkan catatan DNS TXT khusus, prosedur kartubebas memeriksa bahwa rekaman ada di sana, dan jika ditemukan, tahu bahwa Anda adalah pemilik server DNS karena Anda memiliki catatan yang tepat. Berdasarkan informasi itu, layanan ini akan mengeluarkan sertifikat yang terdaftar di akar tepercaya, yang kemudian dapat diunggah ke ILB Anda. Anda tidak perlu melakukan apa pun dengan penyimpanan sertifikat individual di Aplikasi Web karena Anda memiliki sertifikat SSL akar tepercaya di ILB.

Buat sertifikasi SSL yang ditandatangani sendiri atau dikeluarkan secara internal berfungsi jika Anda ingin melakukan panggilan aman antara layanan yang berjalan di ILB App Service Environment. Solusi lain untuk dipertimbangkan tentang cara membuat ILB App Service Environment berfungsi dengan sertifikat SSL yang dikeluarkan secara internal dan cara memuat CA internal ke penyimpanan akar tepercaya.

Saat menyediakan Lingkungan App Service, pertimbangkan batasan berikut saat memilih nama domain untuk lingkungan. Nama domain tidak boleh:

  • net
  • azurewebsites.net
  • p.azurewebsites.net
  • nameofthease.p.azurewebsites.net

Selain itu, nama domain kustom yang digunakan untuk aplikasi dan nama domain yang digunakan oleh ILB App Service Environment tidak dapat tumpang tindih. Untuk ILB App Service Environment dengan nama domain contoso.com, Anda tidak dapat menggunakan nama domain kustom untuk aplikasi Anda seperti:

  • www.contoso.com
  • abcd.def.contoso.com
  • abcd.contoso.com

Pilih domain untuk ILB App Service Environment yang tidak akan bertentangan dengan nama domain kustom tersebut. Anda dapat menggunakan sesuatu seperti contoso-internal.com untuk domain lingkungan Anda untuk contoh ini, karena itu tidak akan bertentangan dengan nama domain kustom yang berakhiran .contoso.com.

Poin lain yang perlu dipertimbangkan adalah DNS. Untuk memungkinkan aplikasi dalam Lingkungan App Service berkomunikasi satu sama lain, misalnya aplikasi web untuk berbicara dengan API, Anda harus mengonfigurasi DNS untuk jaringan virtual Anda yang memegang lingkungan. Anda bisa membawa DNS Anda sendiri atau Anda bisa menggunakan zona privat Azure DNS.

Ketersediaan

Skalabilitas

Keamanan

Ketahanan

Menyebarkan skenario ini

Untuk menyebarkan skenario ini, ikuti tutorial langkah demi langkah ini yang menunjukkan cara menyebarkan setiap komponen secara manual. Pilih Lingkungan App Service v3 alih-alih v2, saat mengikuti tutorial. Tutorial ini juga menyediakan aplikasi contoh .NET yang menjalankan aplikasi pelaporan pengeluaran Contoso sederhana.

Harga

Jelajahi biaya menjalankan skenario ini. Semua layanan telah dikonfigurasi sebelumnya dalam kalkulator biaya. Untuk melihat bagaimana harga akan berubah untuk kasus penggunaan khusus Anda, ubah variabel yang sesuai agar sesuai dengan lalu lintas yang Diharapkan.

Kami telah menyediakan tiga profil biaya sampel berdasarkan jumlah lalu lintas yang Anda harapkan untuk mendapatkan:

  • Kecil: Contoh harga ini mewakili komponen yang diperlukan untuk instans tingkat produksi minimum yang melayani beberapa ribu pengguna per bulan. Aplikasi ini menggunakan satu instans aplikasi web standar yang akan cukup untuk mengaktifkan penskalaan otomatis. Masing-masing komponen lainnya diskalakan ke tingkat dasar yang akan meminimalkan biaya tetapi masih memastikan bahwa ada dukungan SLA dan kapasitas yang cukup untuk menangani beban kerja tingkat produksi.
  • Sedang: Contoh harga ini mewakili komponen yang diperlukan untuk penyebaran ukuran sedang. Di sini kami memperkirakan sekitar 100.000 pengguna selama sebulan. Lalu lintas yang diharapkan akan ditangani dalam satu instans layanan aplikasi dengan tingkat standar sedang. Selain itu, tingkat sedang layanan kognitif dan pencarian ditambahkan ke kalkulator.
  • Besar: Contoh harga ini mewakili aplikasi yang dimaksudkan untuk skala tinggi, dengan urutan jutaan pengguna per bulan yang memindahkan terabyte data. Pada tingkat penggunaan ini, aplikasi web tingkat premium berkinerja tinggi dan berkinerja tinggi yang disebarkan di beberapa wilayah yang dibatasi oleh traffic manager diperlukan. Data terdiri dari komponen berikut: penyimpanan, database, dan CDN, semuanya dikonfigurasi untuk terabyte data.

Kontributor

Artikel ini dikelola oleh Microsoft. Ini awalnya ditulis oleh kontributor berikut.

Penulis utama:

  • Faisal Mustafa | Insinyur Pelanggan Senior

Langkah berikutnya