Bagikan melalui


Membuat ASE menggunakan templat Azure Resource Manager

Gambaran Umum

Penting

Artikel ini tentang Lingkungan Azure App Service v2 yang digunakan dengan paket Azure App Service Terisolasi. App Service Environment v2 akan dihentikan pada 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 v2, ikuti langkah-langkah dalam artikel ini untuk bermigrasi ke versi baru.

Mulai 29 Januari 2024, Anda tidak dapat lagi membuat sumber daya App Service Environment v2 baru menggunakan salah satu metode yang tersedia termasuk templat ARM/Bicep, Portal Microsoft Azure, Azure CLI, atau REST API. Anda harus bermigrasi ke App Service Environment v3 sebelum 31 Agustus 2024 untuk mencegah penghapusan sumber daya dan kehilangan data.

Lingkungan Azure App Service (ASE) dapat dibuat dengan titik akhir yang dapat diakses internet atau titik akhir pada alamat internal di Azure Virtual Network. Saat dibuat dengan titik akhir internal, titik akhir tersebut disediakan oleh komponen Azure yang disebut internal load balancer (ILB). ASE pada alamat IP internal disebut ILB ASE. ASE dengan titik akhir publik disebut ASE Eksternal.

ASE dapat dibuat menggunakan portal Azure atau templat Azure Resource Manager. Artikel ini menjelaskan langkah-langkah dan sintaks yang Anda perlukan untuk membuat ASE Eksternal atau ILB ASE dengan templat Resource Manager. Untuk mempelajari cara membuat ASEv2 di portal Azure, lihat [Membuat ASE Eksternal][MakeExternalASE] atau Membuat ILB ASE.

Saat membuat ASE di portal Azure, Anda dapat membuat jaringan virtual secara bersamaan atau memilih jaringan virtual yang sudah ada sebelumnya untuk disebarkan.

Saat Anda membuat ASE dari templat, Anda harus mulai dengan:

  • Jaringan Virtual Azure.
  • Subnet di jaringan virtual. Kami merekomendasikan ukuran subnet ASE sebesar /24 dengan 256 alamat untuk mengakomodasi pertumbuhan dan kebutuhan penskalaan di masa mendatang. Setelah ASE dibuat, Anda tidak dapat mengubah ukurannya.
  • Langganan yang ingin Anda sebarkan.
  • Lokasi yang ingin Anda sebarkan.

Untuk mengotomatiskan pembuatan ASE Anda, ikuti panduannya di bagian berikut. Jika Anda membuat ILB ASEv2 dengan dnsSuffix kustom (misalnya, internal.contoso.com), ada beberapa hal lagi yang harus dilakukan.

  1. Setelah ILB ASE Anda dengan dnsSuffix khusus dibuat, sertifikat TLS/SSL yang cocok dengan domain ILB ASE Anda harus diunggah.

  2. Sertifikat TLS/SSL yang diunggah ditetapkan ke ILB ASE sebagai sertifikat TLS/SSL "default". Sertifikat ini digunakan untuk lalu lintas TLS/SSL ke aplikasi di ILB ASE saat mereka menggunakan domain akar umum yang ditetapkan ke ASE (misalnya, https://someapp.internal.contoso.com).

Membuat ASE

Templat Resource Manager yang membuat ASE dan file parameter terkait tersedia di GitHub untuk ASEv2.

Jika Anda ingin membuat ASE, gunakan contoh ASEv2 templat Resource Manager ini. Sebagian besar parameter dalam file azuredeploy.parameters.json adalah umum untuk pembuatan ASE ILB dan ASE Eksternal. Daftar berikut memanggil parameter catatan khusus, atau yang unik, saat Anda membuat ILB ASE dengan subnet yang ada.

Parameter

  • aseName: Parameter ini mendefinisikan nama ASE yang unik.
  • lokasi: Parameter ini menentukan lokasi Lingkungan App Service.
  • virtualNetworkName yang ada:Parameter ini mendefinisikan nama jaringan virtual dari jaringan virtual dan subnet yang ada di mana ASE akan berada.
  • existingVirtualNetworkResourceGroup: parameternya menentukan nama grup sumber daya dari jaringan virtual dan subnet tempat ASE akan berada.
  • subnetName: Parameter ini mendefinisikan nama subnet dari jaringan virtual dan subnet yang ada di mana ASE akan berada.
  • internalLoadBalancingMode: Dalam kebanyakan kasus, atur ini ke 3, yang berarti lalu lintas HTTP/HTTPS pada port 80/443, dan port saluran kontrol/data yang didengarkan oleh layanan FTP di ASE, akan terikat ke alamat internal jaringan virtual yang dialokasikan ILB. Jika properti ini diatur ke 2, hanya port terkait layanan FTP (saluran kontrol dan data) yang terikat ke alamat ILB. Jika properti ini diatur ke 0, lalu lintas HTTP/HTTPS tetap berada di VIP publik.
  • dnsSuffix: Parameter ini menentukan domain akar default yang ditetapkan ke ASE. Dalam variasi publik Azure App Service, domain akar default untuk semua aplikasi web adalah azurewebsites.net. Karena ILB ASE bersifat internal untuk jaringan virtual pelanggan, tidak masuk akal untuk menggunakan domain akar default layanan publik. Sebaliknya, ASE ILB harus memiliki domain akar default yang masuk akal untuk digunakan dalam jaringan virtual internal perusahaan. Misalnya, Contoso Corporation mungkin menggunakan domain akar default internal.contoso.com untuk aplikasi yang dimaksudkan agar dapat diselesaikan dan hanya dapat diakses dalam jaringan virtual Contoso. Untuk menentukan domain akar kustom, Anda perlu menggunakan versi 2018-11-01 api atau versi yang lebih lama.
  • ipSslAddressCount: Parameter ini secara otomatis default ke nilai 0 dalam file azuredeploy.json karena ILB ASE hanya memiliki satu alamat ILB. Tidak ada alamat IP-SSL eksplisit untuk ILB ASE. Oleh karena itu, kumpulan alamat IP-SSL untuk ILB ASE harus diatur ke nol. Jika tidak, kesalahan provisi akan terjadi.

Setelah file azuredeploy.parameters.json diisi, buat ASE menggunakan cuplikan kode PowerShell. Ubah jalur file agar sesuai dengan lokasi file templat Resource Manager di mesin Anda. Ingatlah untuk memberikan nilai Anda sendiri untuk nama penyebaran Resource Manager dan nama grup sumber daya:

$templatePath="PATH\azuredeploy.json"
$parameterPath="PATH\azuredeploy.parameters.json"

New-AzResourceGroupDeployment -Name "CHANGEME" -ResourceGroupName "YOUR-RG-NAME-HERE" -TemplateFile $templatePath -TemplateParameterFile $parameterPath

Dibutuhkan sekitar dua jam untuk membuat ASE. Kemudian ASE muncul di portal dalam daftar ASE untuk langganan yang memicu penyebaran.

Mengunggah dan mengonfigurasi sertifikat TLS/SSL "default"

Sertifikat TLS/SSL harus dikaitkan dengan ASE sebagai sertifikat TLS/SSL "default" yang digunakan untuk membuat koneksi TLS ke aplikasi. Jika akhiran DNS default ASE internal.contoso.com, koneksi untuk https://some-random-app.internal.contoso.com memerlukan sertifikat TLS/SSL yang valid untuk *.internal.contoso.com.

Dapatkan sertifikat TLS/SSL yang valid dengan menggunakan otoritas sertifikat internal, membeli sertifikat dari penerbit eksternal, atau menggunakan sertifikat yang ditandatangani sendiri. Terlepas dari sumber sertifikat TLS/SSL, atribut sertifikat berikut harus dikonfigurasi dengan benar:

  • Subjek: Atribut ini harus diatur ke *.your-root-domain-here.com.
  • Nama Alternatif Subjek: Atribut ini harus menyertakan *.your-root-domain-here.com dan *.scm.your-root-domain-here.com. Sambungan TLS ke situs SCM/Kudu yang terkait dengan setiap aplikasi menggunakan alamat formulir your-app-name.scm.your-root-domain-here.com.

Dengan sertifikat TLS/SSL yang valid, diperlukan dua langkah persiapan lagi. Mengonversi/menyimpan sertifikat TLS/SSL sebagai file .pfx. Ingat bahwa file .pfx harus menyertakan semua sertifikat menengah dan akar. Amankan dengan kata sandi.

File .pfx perlu dikonversi menjadi string base64 karena sertifikat TLS/SSL diunggah menggunakan templat Resource Manager. Karena templat Resource Manager adalah file teks, file .pfx harus dikonversi menjadi string base64. Dengan cara ini dapat dimasukkan sebagai parameter templat.

Gunakan cuplikan kode PowerShell berikut untuk:

  • Buat sertifikat yang ditandatangani sendiri.
  • Ekspor sertifikat sebagai file .pfx.
  • Konversikan file .pfx menjadi string dengan enkode base64.
  • Simpan string dengan enkode base64 ke file terpisah.

Kode PowerShell untuk enkode base64 ini diadaptasi dari blog skrip PowerShell:

$certificate = New-SelfSignedCertificate -certstorelocation cert:\localmachine\my -dnsname "*.internal.contoso.com","*.scm.internal.contoso.com"

$certThumbprint = "cert:\localMachine\my\" + $certificate.Thumbprint
$password = ConvertTo-SecureString -String "CHANGETHISPASSWORD" -Force -AsPlainText

$fileName = "exportedcert.pfx"
Export-PfxCertificate -cert $certThumbprint -FilePath $fileName -Password $password     

$fileContentBytes = get-content -encoding byte $fileName
$fileContentEncoded = [System.Convert]::ToBase64String($fileContentBytes)
$fileContentEncoded | set-content ($fileName + ".b64")

Setelah sertifikat TLS/SSL berhasil dibuat dan dikonversi ke string dengan enkode base64, gunakan contoh templat Resource Manager Konfigurasikan sertifikat SSL default di GitHub.

Parameter dalam file azuredeploy.parameters.json tercantum di sini:

  • appServiceEnvironmentName: Nama ILB ASE sedang dikonfigurasi.
  • existingAseLocation: String teks yang berisi wilayah Azure tempat ILB ASE disebarkan. Misalnya: "US Tengah Selatan".
  • pfxBlobString: Representasi string dengan enkode based64 dari file .pfx. Gunakan cuplikan kode yang ditampilkan sebelumnya dan salin string yang terdapat dalam "exportedcert.pfx.b64". Tempelkan sebagai nilai atribut pfxBlobString.
  • kata sandi: Sandi yang digunakan untuk mengamankan berkas .pfx.
  • certificateThumbprint: Sidik jari sertifikat. Jika Anda mengambil nilai ini dari PowerShell (misalnya, $certificate.Thumbprint dari cuplikan kode sebelumnya), Anda dapat menggunakan nilai apa adanya. Jika Anda menyalin nilai dari kotak dialog sertifikat Windows, ingatlah untuk menghapus spasi yang tidak relevan. certificateThumbprint akan terlihat seperti AF3143EB61D43F6727842115BB7F17BBCECAECAE.
  • certificateName: Pengidentifikasi string ramah pilihan Anda sendiri yang digunakan untuk mengidentifikasi sertifikat. Nama tersebut digunakan sebagai bagian dari pengidentifikasi Resource Manager unik untuk entitas Microsoft.Web/certificates yang mewakili sertifikat TLS/SSL. Nama harus diakhiri dengan akhiran berikut: _yourASENameHere_InternalLoadBalancingASE. Portal Azure menggunakan akhiran ini sebagai indikator bahwa sertifikat digunakan untuk mengamankan ASE yang mendukung ILB.

Contoh singkatan dari azuredeploy.parameters.json ditampilkan di sini:

{
  "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentParameters.json",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "appServiceEnvironmentName": {
      "value": "yourASENameHere"
    },
    "existingAseLocation": {
      "value": "East US 2"
    },
    "pfxBlobString": {
      "value": "MIIKcAIBAz...snip...snip...pkCAgfQ"
    },
    "password": {
      "value": "PASSWORDGOESHERE"
    },
    "certificateThumbprint": {
      "value": "AF3143EB61D43F6727842115BB7F17BBCECAECAE"
    },
    "certificateName": {
      "value": "DefaultCertificateFor_yourASENameHere_InternalLoadBalancingASE"
    }
  }
}

Setelah file azuredeploy.parameters.json diisi, konfigurasikan sertifikat TLS/SSL default dengan menggunakan cuplikan kode PowerShell. Ubah jalur file agar sesuai dengan tempat file templat Resource Manager berada di mesin Anda. Ingatlah untuk memberikan nilai Anda sendiri untuk nama penyebaran Resource Manager dan nama grup sumber daya:

$templatePath="PATH\azuredeploy.json"
$parameterPath="PATH\azuredeploy.parameters.json"

New-AzResourceGroupDeployment -Name "CHANGEME" -ResourceGroupName "YOUR-RG-NAME-HERE" -TemplateFile $templatePath -TemplateParameterFile $parameterPath

Dibutuhkan sekitar 40 menit per ujung depan ASE untuk menerapkan perubahan. Misalnya, untuk ASE berukuran default yang menggunakan dua ujung depan, templat membutuhkan waktu sekitar 1 jam dan 20 menit untuk menyelesaikannya. Saat templat sedang berjalan, ASE tidak dapat menskalakan.

Setelah templat selesai, aplikasi di ILB ASE dapat diakses melalui HTTPS. Sambungan diamankan menggunakan sertifikat TLS/SSL default. Sertifikat TLS/SSL default digunakan saat aplikasi di ILB ASE ditangani dengan menggunakan kombinasi nama aplikasi ditambah nama host default. Misalnya, https://mycustomapp.internal.contoso.com menggunakan sertifikat TLS/SSL default untuk *.internal.contoso.com.

Namun, seperti aplikasi yang berjalan pada layanan multi-penyewa publik, pengembang dapat mengonfigurasi nama host khusus untuk masing-masing aplikasi. Pengembang juga dapat mengonfigurasi pengikatan sertifikat SNI TLS/SSL unik untuk masing-masing aplikasi.