Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Dalam artikel ini, Anda mengonfigurasi aplikasi App Service dengan komunikasi yang aman dan terisolasi jaringan ke layanan back-end. Contoh skenario yang digunakan ada di Tutorial: Koneksi Aman untuk Cognitive Service dari App Service menggunakan Key Vault. Setelah selesai, Anda memiliki aplikasi App Service yang mengakses Key Vault dan Foundry Tools melalui jaringan virtual Azure. Tidak ada lalu lintas lain yang diizinkan untuk mengakses sumber daya back-end tersebut. Semua lalu lintas akan diisolasi dalam jaringan virtual Anda melalui integrasi jaringan virtual dan titik akhir privat.
Dalam layanan multi-penyewa, lalu lintas jaringan keluar dari aplikasi App Service Anda ke layanan Azure lainnya berbagi lingkungan yang sama dengan aplikasi lain atau bahkan langganan lainnya. Meskipun lalu lintas itu sendiri dapat dienkripsi, skenario tertentu mungkin memerlukan tingkat keamanan ekstra melalui isolasi komunikasi back-end dari lalu lintas jaringan lainnya. Skenario ini biasanya dapat diakses oleh perusahaan besar dengan tingkat keahlian yang tinggi, tetapi App Service menempatkannya dalam jangkauan dengan integrasi jaringan virtual.
Dalam arsitektur ini:
- Lalu lintas publik ke layanan back-end diblokir.
- Lalu lintas outbound dari App Service dirutekan ke jaringan virtual dan dapat menjangkau layanan back-end.
- App Service dapat melakukan resolusi DNS ke layanan back-end melalui zona DNS privat.
Apa yang akan Anda pelajari:
- Membuat jaringan virtual dan subnet untuk integrasi jaringan virtual App Service
- Membuat zona DNS privat
- Buat Titik Akhir Privat
- Mengonfigurasi integrasi jaringan virtual di App Service
Prasyarat
Tutorial Lengkap: Mengamankan koneksi Cognitive Service dari App Service menggunakan Key Vault dan membuat aplikasi detektor bahasa.
Pastikan untuk mengatur variabel lingkungan berikut dari Tutorial: Mengamankan koneksi Cognitive Service dari App Service menggunakan Key Vault:
groupName=myKVResourceGroup region=canadacentral csResourceName=<cs-resource-name> appName=<app-name> vaultName=<vault-name> planName=<plan-name> csResourceKVUri=<cs-resource-kv-uri> csKeyKVUri=<cs-key-kv-uri>
Membuat jaringan virtual dan subnet
Buat jaringan virtual. Ganti <nama> jaringan virtual dengan nama yang unik.
# Save the virtual network name as a variable for convenience vnetName=<virtual-network-name> az network vnet create --resource-group $groupName --location $region --name $vnetName --address-prefixes 10.0.0.0/16Buat 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 --private-endpoint-network-policies EnabledUntuk App Service, rekomendasinya adalah agar subnet integrasi jaringan virtual memiliki blok
/26CIDR minimal. (Lihat Persyaratan subnet integrasi jaringan virtual.)/24lebih dari cukup.--delegations Microsoft.Web/serverfarmsmenetapkan bahwa subnet didelegasikan untuk integrasi jaringan virtual App Service.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 --private-endpoint-network-policies DisabledUntuk subnet titik akhir privat, Anda perlu menonaktifkan kebijakan jaringan titik akhir privat.
Membuat zona DNS privat
Karena sumber daya Key Vault dan Foundry Tools Anda akan terletak di belakang titik akhir privat, Anda perlu menentukan zona DNS privat untuk mereka. Zona ini digunakan untuk menghosting catatan DNS untuk titik akhir privat dan memungkinkan klien menemukan layanan back-end berdasarkan nama.
Buat dua zona DNS privat, satu untuk sumber daya Foundry Tools Anda dan satu untuk brankas kunci Anda.
az network private-dns zone create --resource-group $groupName --name privatelink.cognitiveservices.azure.com az network private-dns zone create --resource-group $groupName --name privatelink.vaultcore.azure.netUntuk informasi selengkapnya tentang pengaturan ini, lihat Konfigurasi DNS Titik Akhir Privat Azure.
Tautkan zona DNS privat ke jaringan virtual.
az network private-dns link vnet create --resource-group $groupName --name cognitiveservices-zonelink --zone-name privatelink.cognitiveservices.azure.com --virtual-network $vnetName --registration-enabled False az network private-dns link vnet create --resource-group $groupName --name vaultcore-zonelink --zone-name privatelink.vaultcore.azure.net --virtual-network $vnetName --registration-enabled False
Buat Titik Akhir Privat
Di subnet titik akhir privat jaringan virtual Anda, buat titik akhir privat untuk sumber daya Foundry Tools Anda.
# Get Foundry Tools resource ID csResourceId=$(az cognitiveservices account show --resource-group $groupName --name $csResourceName --query id --output tsv) az network private-endpoint create --resource-group $groupName --name securecstext-pe --location $region --connection-name securecstext-pc --private-connection-resource-id $csResourceId --group-id account --vnet-name $vnetName --subnet private-endpoint-subnetBuat grup zona DNS untuk titik akhir privat Foundry Tools. Grup zona DNS adalah tautan antara zona DNS privat dan titik akhir privat. Tautan 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 securecstext-pe --name securecstext-zg --private-dns-zone privatelink.cognitiveservices.azure.com --zone-name privatelink.cognitiveservices.azure.comBlokir lalu lintas publik ke sumber daya Foundry Tools.
az rest --uri $csResourceId?api-version=2024-10-01 --method PATCH --body '{"properties":{"publicNetworkAccess":"Disabled"}}' --headers 'Content-Type=application/json' # Repeat the following command until the output is "Succeeded" az cognitiveservices account show --resource-group $groupName --name $csResourceName --query properties.provisioningStateNota
Pastikan status penyediaan perubahan Anda adalah
"Succeeded". Anda kemudian dapat mengamati perubahan perilaku di aplikasi sampel. Anda masih dapat memuat aplikasi, tetapi jika Anda mencoba memilih tombol Deteksi , Anda mendapatkanHTTP 500kesalahan. Aplikasi ini telah kehilangan konektivitasnya ke sumber daya Foundry Tools melalui jaringan bersama.Ulangi langkah-langkah sebelumnya untuk key vault.
# Create a private endpoint for the key vault vaultResourceId=$(az keyvault show --name $vaultName --query id --output tsv) az network private-endpoint create --resource-group $groupName --name securekeyvault-pe --location $region --connection-name securekeyvault-pc --private-connection-resource-id $vaultResourceId --group-id vault --vnet-name $vnetName --subnet private-endpoint-subnet # Create a DNS zone group for the endpoint az network private-endpoint dns-zone-group create --resource-group $groupName --endpoint-name securekeyvault-pe --name securekeyvault-zg --private-dns-zone privatelink.vaultcore.azure.net --zone-name privatelink.vaultcore.azure.net # Block public traffic to the key vault az keyvault update --name $vaultName --default-action DenyPaksa pengambilan ulang langsung referensi brankas kunci di aplikasi Anda dengan mengatur ulang pengaturan aplikasi. (Untuk informasi selengkapnya, lihat Rotasi.)
az webapp config appsettings set --resource-group $groupName --name $appName --settings CS_ACCOUNT_NAME="@Microsoft.KeyVault(SecretUri=$csResourceKVUri)" CS_ACCOUNT_KEY="@Microsoft.KeyVault(SecretUri=$csKeyKVUri)"Nota
Sekali lagi, Anda dapat mengamati perubahan perilaku di aplikasi sampel. Anda tidak dapat lagi memuat aplikasi karena tidak lagi dapat mengakses referensi penyimpanan kunci. Aplikasi telah kehilangan konektivitasnya ke brankas kunci melalui jaringan bersama.
Dua titik akhir privat hanya dapat diakses oleh klien di dalam jaringan virtual yang Anda buat. Anda bahkan tidak dapat mengakses rahasia di brankas kunci dari halaman Rahasia di portal Microsoft Azure, karena portal mengaksesnya melalui internet publik. (Lihat Mengelola sumber daya yang dikunci.)
Mengonfigurasi integrasi jaringan virtual di aplikasi Anda
Skalakan aplikasi hingga tingkat harga yang didukung. (Lihat Mengintegrasikan aplikasi Anda dengan jaringan virtual Azure.)
az appservice plan update --name $planName --resource-group $groupName --sku S1Menerapkan HTTPS untuk permintaan masuk. (Langkah ini tidak terkait dengan skenario saat ini, tetapi penting.)
az webapp update --resource-group $groupName --name $appName --https-onlyAktifkan integrasi jaringan virtual di aplikasi Anda.
az webapp vnet-integration add --resource-group $groupName --name $appName --vnet $vnetName --subnet vnet-integration-subnetIntegrasi 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 informasi tentang perutean semua lalu lintas Anda ke jaringan virtual, lihat Mengelola perutean integrasi jaringan virtual. Anda juga dapat merutekan semua lalu lintas jika Anda ingin merutekan lalu lintas internet melalui jaringan virtual Anda, melalui, misalnya, Azure NAT Gateway atau Azure Firewall.
Di browser, buka
<app-name>.azurewebsites.netdan tunggu hingga integrasi diterapkan. Jika Anda mendapatkan kesalahan HTTP 500, tunggu beberapa menit dan coba lagi. Jika Anda dapat memuat halaman dan mendapatkan hasil deteksi, Anda menyambungkan ke endpoint Foundry Tools dengan menggunakan referensi key vault.Nota
Jika Anda terus menerus mendapatkan kesalahan HTTP 500 dalam jangka waktu lama, mungkin membantu mengharuskan pengambilan ulang referensi key vault lagi.
az webapp config appsettings set --resource-group $groupName --name $appName --settings CS_ACCOUNT_NAME="@Microsoft.KeyVault(SecretUri=$csResourceKVUri)" CS_ACCOUNT_KEY="@Microsoft.KeyVault(SecretUri=$csKeyKVUri)"
Mengelola sumber daya yang dikunci
Bergantung pada skenario Anda, Anda mungkin tidak dapat mengelola sumber daya yang dilindungi titik akhir privat melalui portal Microsoft Azure, Azure CLI, atau Azure PowerShell (misalnya, Key Vault). Alat-alat ini semuanya melakukan panggilan REST API untuk mengakses sumber daya melalui internet publik, dan diblokir oleh konfigurasi Anda. Berikut adalah beberapa opsi untuk mengakses sumber daya yang dikunci:
- Untuk Key Vault, tambahkan IP publik dari mesin lokal Anda untuk melihat atau memperbarui rahasia yang dilindungi oleh titik akhir privat.
- Jika jaringan lokal Anda diperluas ke jaringan virtual Azure melalui gateway VPN atau Azure ExpressRoute, Anda dapat mengelola sumber daya yang dilindungi titik akhir privat langsung dari jaringan lokal Anda.
- Kelola sumber daya yang dilindungi oleh titik akhir privat melalui jump server di jaringan virtual.
- Deploy Cloud Shell ke jaringan virtual.
Membersihkan sumber daya
Pada langkah-langkah sebelumnya, Anda membuat sumber daya Azure dalam sebuah grup sumber daya. Jika Anda tidak mengharapkan untuk membutuhkan sumber daya ini di masa mendatang, hapus grup sumber daya dengan menjalankan perintah berikut di Cloud Shell:
az group delete --name $groupName
Perintah ini mungkin perlu waktu satu menit untuk dijalankan.