Menerapkan Arsitektur Keamanan Berlapis dengan Lingkungan App Service
Penting
Artikel ini tentang Lingkungan App Service v1. Lingkungan App Service v1 dan v2 dihentikan per 31 Agustus 2024. Terdapat versi baru Lingkungan App Service yang lebih mudah digunakan dan berjalan di infrastruktur yang lebih kuat. Untuk mempelajari selengkapnya tentang versi baru, mulai dengan Pengantar Lingkungan App Service. Jika saat ini Anda menggunakan Lingkungan App Service v1, ikuti langkah-langkah dalam artikel ini untuk bermigrasi ke versi baru.
Pada 31 Agustus 2024, Perjanjian Tingkat Layanan (SLA) dan Kredit Layanan tidak lagi berlaku untuk beban kerja App Service Environment v1 dan v2 yang terus diproduksi karena mereka adalah produk yang dihentikan. Penonaktifan perangkat keras App Service Environment v1 dan v2 telah dimulai, dan ini dapat memengaruhi ketersediaan dan performa aplikasi dan data Anda.
Anda harus segera menyelesaikan migrasi ke App Service Environment v3 atau aplikasi dan sumber daya Anda dapat dihapus. Kami akan mencoba memigrasikan secara otomatis Lingkungan App Service v1 dan v2 yang tersisa berdasarkan upaya terbaik menggunakan fitur migrasi di tempat, tetapi Microsoft tidak membuat klaim atau jaminan tentang ketersediaan aplikasi setelah migrasi otomatis. Anda mungkin perlu melakukan konfigurasi manual untuk menyelesaikan migrasi dan mengoptimalkan pilihan SKU paket App Service Anda untuk memenuhi kebutuhan Anda. Jika migrasi otomatis tidak memungkinkan, sumber daya dan data aplikasi terkait Anda akan dihapus. Kami sangat mendorong Anda untuk bertindak sekarang untuk menghindari salah satu skenario ekstrem ini.
Jika Anda memerlukan waktu tambahan, kami dapat menawarkan masa tenggang 30 hari sekali bagi Anda untuk menyelesaikan migrasi Anda. Untuk informasi selengkapnya dan untuk meminta masa tenggang ini, tinjau gambaran umum masa tenggang, lalu buka portal Azure dan kunjungi bilah Migrasi untuk setiap Lingkungan App Service Anda.
Untuk informasi terbaru tentang penghentian App Service Environment v1/v2, lihat pembaruan penghentian App Service Environment v1 dan v2.
Karena Lingkungan App Service menyediakan lingkungan runtime terisolasi yang disebarkan ke jaringan virtual, pengembang dapat membuat arsitektur keamanan berlapis yang menyediakan tingkat akses jaringan yang berbeda untuk setiap tingkat aplikasi fisik.
Keinginan umum adalah menyembunyikan back-end API dari akses Internet umum, dan hanya mengizinkan API dipanggil oleh aplikasi web upstream. Grup keamanan jaringan (NSG) dapat digunakan pada subnet yang berisi Lingkungan App Service untuk membatasi akses publik ke aplikasi API.
Diagram di bawah ini menunjukkan contoh arsitektur dengan aplikasi berbasis WebAPI yang disebarkan pada Lingkungan App Service. Tiga instans aplikasi web terpisah, yang disebarkan pada tiga Lingkungan App Service terpisah, melakukan panggilan back-end ke aplikasi WebAPI yang sama.
Tanda plus hijau menunjukkan bahwa grup keamanan jaringan pada subnet yang berisi "apiase" memungkinkan panggilan masuk dari aplikasi web upstream, serta panggilan dari dirinya sendiri. Namun grup keamanan jaringan yang sama secara eksplisit menolak akses ke lalu lintas masuk umum dari Internet.
Sisa artikel ini membahas langkah-langkah yang diperlukan untuk mengonfigurasi grup keamanan jaringan pada subnet yang berisi "apiase".
Menentukan Perilaku Jaringan
Untuk mengetahui aturan keamanan jaringan apa yang diperlukan, Anda perlu menentukan klien jaringan mana yang akan diizinkan untuk menjangkau Lingkungan App Service yang berisi aplikasi API, dan klien mana yang diblokir.
Karena grup keamanan jaringan (NSG) diterapkan ke subnet, dan Lingkungan App Service diterapkan ke dalam subnet, aturan yang terdapat dalam NSG berlaku untuk semua aplikasi yang berjalan di Lingkungan App Service. Menggunakan arsitektur sampel untuk artikel ini, setelah grup keamanan jaringan diterapkan ke subnet yang berisi "apiase," semua aplikasi yang berjalan di Lingkungan App Service "apiase" akan dilindungi oleh sekumpulan aturan keamanan yang sama.
- Tentukan alamat IP keluar pemanggil upstream: Apa alamat IP atau alamat pemanggil upstream? Alamat ini harus secara eksplisit diizinkan akses di NSG. Karena panggilan di antara Lingkungan App Service dianggap sebagai panggilan "Internet", alamat IP keluar yang ditetapkan untuk masing-masing dari tiga Lingkungan App Service upstream perlu diberi izin akses di NSG untuk subnet "apiase". Untuk informasi selengkapnya tentang menentukan alamat IP keluar untuk aplikasi yang berjalan di Lingkungan App Service, lihat artikel Gambaran Umum Arsitektur Jaringan.
- Apakah aplikasi API back-end perlu memanggil dirinya sendiri? Poin yang terkadang diabaikan dan tidak kentara adalah skenario dengan aplikasi back-end perlu memanggil dirinya sendiri. Jika aplikasi API back-end di Lingkungan App Service perlu memanggil dirinya sendiri, aplikasi ini juga diperlakukan sebagai panggilan "Internet". Dalam arsitektur sampel, ini memerlukan juga izin akses dari alamat IP keluar dari Lingkungan App Service "apiase".
Menyiapkan Grup Keamanan Jaringan
Setelah kumpulan alamat IP keluar diketahui, langkah selanjutnya adalah membuat grup keamanan jaringan. Grup keamanan jaringan dapat dibuat untuk jaringan virtual berbasis Resource Manager, dan jaringan virtual klasik. Contoh berikut menunjukkan pembuatan dan konfigurasi NSG pada jaringan virtual klasik menggunakan PowerShell.
Untuk contoh arsitektur sampel, lingkungan berada di AS Tengah Selatan, sehingga NSG kosong dibuat di wilayah itu:
New-AzureNetworkSecurityGroup -Name "RestrictBackendApi" -Location "South Central US"
-Label "Only allow web frontend and loopback traffic"
Pertama, aturan izinkan eksplisit ditambahkan untuk infrastruktur manajemen Azure seperti yang tercantum dalam artikel tentang lalu lintas masuk untuk Lingkungan App Service.
#Open ports for access by Azure management infrastructure
Get-AzureNetworkSecurityGroup -Name "RestrictBackendApi" | Set-AzureNetworkSecurityRule -Name "ALLOW AzureMngmt"
-Type Inbound -Priority 100 -Action Allow -SourceAddressPrefix 'INTERNET' -SourcePortRange '*'
-DestinationAddressPrefix '*' -DestinationPortRange '454-455' -Protocol TCP
Selanjutnya, dua aturan ditambahkan untuk mengizinkan panggilan HTTP dan HTTPS dari Lingkungan App Service upstream pertama ("fe1ase").
#Grant access to requests from the first upstream web front-end
Get-AzureNetworkSecurityGroup -Name "RestrictBackendApi" | Set-AzureNetworkSecurityRule -Name "ALLOW HTTP fe1ase"
-Type Inbound -Priority 200 -Action Allow -SourceAddressPrefix '65.52.xx.xyz' -SourcePortRange '*'
-DestinationAddressPrefix '*' -DestinationPortRange '80' -Protocol TCP
Get-AzureNetworkSecurityGroup -Name "RestrictBackendApi" | Set-AzureNetworkSecurityRule -Name "ALLOW HTTPS fe1ase"
-Type Inbound -Priority 300 -Action Allow -SourceAddressPrefix '65.52.xx.xyz' -SourcePortRange '*'
-DestinationAddressPrefix '*' -DestinationPortRange '443' -Protocol TCP
Hapus dan ulangi untuk Lingkungan App Service upstream kedua dan ketiga ("fe2ase" dan "fe3ase").
#Grant access to requests from the second upstream web front-end
Get-AzureNetworkSecurityGroup -Name "RestrictBackendApi" | Set-AzureNetworkSecurityRule -Name "ALLOW HTTP fe2ase"
-Type Inbound -Priority 400 -Action Allow -SourceAddressPrefix '191.238.xyz.abc' -SourcePortRange '*'
-DestinationAddressPrefix '*' -DestinationPortRange '80' -Protocol TCP
Get-AzureNetworkSecurityGroup -Name "RestrictBackendApi" | Set-AzureNetworkSecurityRule -Name "ALLOW HTTPS fe2ase"
-Type Inbound -Priority 500 -Action Allow -SourceAddressPrefix '191.238.xyz.abc' -SourcePortRange '*'
-DestinationAddressPrefix '*' -DestinationPortRange '443' -Protocol TCP
#Grant access to requests from the third upstream web front-end
Get-AzureNetworkSecurityGroup -Name "RestrictBackendApi" | Set-AzureNetworkSecurityRule -Name "ALLOW HTTP fe3ase"
-Type Inbound -Priority 600 -Action Allow -SourceAddressPrefix '23.98.abc.xyz' -SourcePortRange '*'
-DestinationAddressPrefix '*' -DestinationPortRange '80' -Protocol TCP
Get-AzureNetworkSecurityGroup -Name "RestrictBackendApi" | Set-AzureNetworkSecurityRule -Name "ALLOW HTTPS fe3ase"
-Type Inbound -Priority 700 -Action Allow -SourceAddressPrefix '23.98.abc.xyz' -SourcePortRange '*'
-DestinationAddressPrefix '*' -DestinationPortRange '443' -Protocol TCP
Terakhir, berikan akses ke alamat IP keluar dari Lingkungan App Service API back-end sehingga dapat memanggil kembali ke dirinya sendiri.
#Allow apps on the apiase environment to call back into itself
Get-AzureNetworkSecurityGroup -Name "RestrictBackendApi" | Set-AzureNetworkSecurityRule -Name "ALLOW HTTP apiase"
-Type Inbound -Priority 800 -Action Allow -SourceAddressPrefix '70.37.xyz.abc' -SourcePortRange '*'
-DestinationAddressPrefix '*' -DestinationPortRange '80' -Protocol TCP
Get-AzureNetworkSecurityGroup -Name "RestrictBackendApi" | Set-AzureNetworkSecurityRule -Name "ALLOW HTTPS apiase"
-Type Inbound -Priority 900 -Action Allow -SourceAddressPrefix '70.37.xyz.abc' -SourcePortRange '*'
-DestinationAddressPrefix '*' -DestinationPortRange '443' -Protocol TCP
Aturan keamanan jaringan lain tidak diperlukan, karena setiap NSG memiliki serangkaian aturan default yang memblokir akses masuk dari Internet, secara default.
Daftar lengkap aturan dalam kelompok keamanan jaringan ditampilkan. Perhatikan bagaimana aturan terakhir, yang disorot, memblokir akses masuk dari semua penelepon, selain penelepon yang secara eksplisit diberikan akses.
Langkah terakhir adalah menyebarkan NSG ke subnet yang berisi Lingkungan App Service "apiase".
#Apply the NSG to the backend API subnet
Get-AzureNetworkSecurityGroup -Name "RestrictBackendApi" | Set-AzureNetworkSecurityGroupToSubnet
-VirtualNetworkName 'yourvnetnamehere' -SubnetName 'API-ASE-Subnet'
Dengan NSG yang diterapkan ke subnet, hanya tiga Lingkungan App Service upstream, dan Lingkungan App Service yang berisi back-end API, yang diizinkan untuk memanggil ke lingkungan "apiase".
Tautan dan Informasi Tambahan
Informasi tentang grup keamanan jaringan.
Memahami alamat IP keluar dan Lingkungan App Service.
Port jaringan digunakan oleh Lingkungan App Service.
Catatan
Jika Anda ingin mulai menggunakan Azure App Service sebelum mendaftar untuk akun Azure, buka Coba Layanan Aplikasi, di mana Anda dapat segera membuat aplikasi web starter berumur pendek di Layanan Aplikasi. Tidak diperlukan kartu kredit; tidak ada komitmen.