Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
In dit artikel configureert u een App Service-app met beveiligde, netwerk-geïsoleerde communicatie met back-endservices. Het gebruikte voorbeeldscenario komt uit Tutorial: Secure Cognitive Service connection from App Service using Key Vault. Wanneer u klaar bent, hebt u een App Service-app die toegang heeft tot zowel Key Vault als Foundry Tools via een Azure virtueel netwerk en geen ander verkeer toegang heeft tot deze back-endresources. Al het verkeer wordt geïsoleerd binnen uw virtuele netwerk met behulp van integratie van virtuele netwerken en privé-eindpunten.
Als een service met meerdere tenants deelt uitgaand netwerkverkeer van uw App Service-app naar andere Azure services dezelfde omgeving met andere apps of zelfs andere abonnementen. Hoewel het verkeer zelf kan worden versleuteld, kunnen bepaalde scenario's een extra beveiligingsniveau vereisen door back-endcommunicatie van ander netwerkverkeer te isoleren. Deze scenario's zijn doorgaans toegankelijk voor grote ondernemingen met een hoog expertiseniveau, maar App Service brengt deze binnen handbereik met integratie van virtuele netwerken.
Met deze architectuur:
- Openbaar verkeer naar de back-endservices wordt geblokkeerd.
- Uitgaand verkeer van App Service wordt doorgestuurd naar het virtuele netwerk en kan de back-endservices bereiken.
- App Service kan DNS-omzetting uitvoeren naar de back-endservices via de privé-DNS-zones.
U leert het volgende:
- Een virtueel netwerk en subnetten maken voor integratie van virtueel App Service-netwerk
- Privé-DNS-zones maken
- Privé-eindpunten maken
- Integratie van virtuele netwerken configureren in App Service
Vereiste voorwaarden
In de zelfstudie wordt ervan uitgegaan dat u de Tutorial: Secure Cognitive Service-verbinding vanuit App Service hebt gevolgd met behulp van Key Vault en de taaldetectie-app hebt gemaakt.
In de zelfstudie blijven de volgende omgevingsvariabelen uit de vorige zelfstudie worden gebruikt. Zorg ervoor dat u ze juist instelt.
groupName=myKVResourceGroup
region=westeurope
csResourceName=<cs-resource-name>
appName=<app-name>
vaultName=<vault-name>
planName=<plan-name>
csResourceKVUri=<cs-resource-kv-uri>
csKeyKVUri=<cs-key-kv-uri>
Virtueel netwerk en subnetten maken
Maak een virtueel netwerk. Vervang <de naam> van het virtuele netwerk door een unieke naam.
# Save vnet name as variable for convenience vnetName=<virtual-network-name> az network vnet create --resource-group $groupName --location $region --name $vnetName --address-prefixes 10.0.0.0/16Maak een subnet voor de integratie van het virtuele App Service-netwerk.
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 EnabledVoor App Service wordt het subnet voor de integratie van
/26virtuele netwerken aanbevolen om minimaal een CIDR-blok te hebben (zie subnetvereisten voor virtuele netwerkintegratie)./24is meer dan voldoende.--delegations Microsoft.Web/serverfarmsgeeft aan dat het subnet is gedelegeerd voor App Service virtuele-netwerkintegratie.Maak een ander subnet voor de privé-eindpunten.
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 DisabledVoor subnetten van privé-eindpunten moet u netwerkbeleid voor privé-eindpunten uitschakelen.
Privé-DNS-zones maken
Omdat uw Key Vault- en Azure AI services-resources zich achter private-eindpunten bevinden, moet u private DNS-zones definiëren. Deze zones worden gebruikt om de DNS-records voor privé-eindpunten te hosten en de clients in staat te stellen de back-endservices op naam te vinden.
Maak twee privé-DNS-zones, één voor uw Azure AI services resource en één voor uw sleutelkluis.
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.netZie Azure DNS-configuratie voor privé-eindpunten voor meer informatie over deze instellingen.
Koppel de privé-DNS-zones aan het virtuele netwerk.
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
Privé-eindpunten maken
Maak in het subnet van het privé-eindpunt van uw virtuele netwerk een privé-eindpunt voor uw Cognitive Service.
# Get Cognitive Services 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-subnetMaak een DNS-zonegroep voor het privé-eindpunt Azure AI Services. DNS-zonegroep is een koppeling tussen de privé-DNS-zone en het privé-eindpunt. Met deze koppeling kunt u de privé-DNS-zone automatisch bijwerken wanneer het privé-eindpunt wordt bijgewerkt.
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.comOpenbaar verkeer naar de Azure AI services-resource blokkeren.
az rest --uri $csResourceId?api-version=2024-10-01 --method PATCH --body '{"properties":{"publicNetworkAccess":"Disabled"}}' --headers 'Content-Type=application/json' # Repeat following command until output is "Succeeded" az cognitiveservices account show --resource-group $groupName --name $csResourceName --query properties.provisioningStateOpmerking
Zorg ervoor dat de provisioningstatus van uw wijziging
"Succeeded"is. Vervolgens kunt u de gedragswijziging in de voorbeeld-app observeren. U kunt de app nog steeds laden, maar als u op de knop Detecteren klikt, krijgt u eenHTTP 500foutmelding. De app heeft de connectiviteit met de Azure AI services resource verbroken via het gedeelde netwerk.Herhaal de bovenstaande stappen voor de sleutelkluis.
# Create private endpoint for 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 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 key vault az keyvault update --name $vaultName --default-action DenyForceer een onmiddellijke vernieuwen van de sleutelkluisverwijzingen in uw app door de instellingen van de app te resetten (zie Rotatie voor meer informatie).
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)"Opmerking
Nogmaals, u kunt de gedragswijziging in de voorbeeld-app observeren. U kunt de app niet meer laden omdat deze geen toegang meer heeft tot de Key Vault-verwijzingen. De app heeft de verbinding met de sleutelkluis verloren via het gedeelde netwerk.
De twee privé-eindpunten zijn alleen toegankelijk voor clients in het virtuele netwerk dat u hebt gemaakt. U hebt zelfs geen toegang tot de geheimen in de sleutelkluis via Secrets pagina in de Azure-portal, omdat de portal deze opent via het openbare internet (zie Beheer van de vergrendelde resources).
Integratie van virtuele netwerken configureren in uw app
Schaal de app naar een ondersteunde prijscategorie (zie Integrate your app with an Azure virtual network).
az appservice plan update --name $planName --resource-group $groupName --sku S1Niet gerelateerd aan ons scenario, maar ook belangrijk, dwing HTTPS af voor binnenkomende aanvragen.
az webapp update --resource-group $groupName --name $appName --https-onlySchakel integratie van virtuele netwerken in uw app in.
az webapp vnet-integration add --resource-group $groupName --name $appName --vnet $vnetName --subnet vnet-integration-subnetDankzij de integratie van een virtueel netwerk kan uitgaand verkeer rechtstreeks naar het virtuele netwerk stromen. Standaard wordt alleen lokaal IP-verkeer dat is gedefinieerd in RFC-1918 , doorgestuurd naar het virtuele netwerk. Dit is wat u nodig hebt voor de privé-eindpunten. Zie Routering van virtuele netwerkintegratie beheren om al uw verkeer naar het virtuele netwerk te routeren. U kunt al het verkeer ook routeren als u internetverkeer wilt routeren via uw virtuele netwerk, zoals via een Azure Virtual Network NAT of een Azure Firewall.
Navigeer in de browser opnieuw naar
<app-name>.azurewebsites.neten wacht totdat de integratie van kracht wordt. Als u een HTTP 500-fout krijgt, wacht u enkele minuten en probeert u het opnieuw. Als u de pagina kunt laden en detectieresultaten kunt ophalen, maakt u verbinding met het Azure AI Services-eindpunt met key vault-verwijzingen.Opmerking
Als u na lange tijd HTTP 500-fouten blijft krijgen, kan het helpen om de verwijzingen naar de sleutelkluis opnieuw op te halen door een nieuwe ophaaloperatie af te dwingen, zoals:
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)"
De vergrendelde bronnen beheren
Afhankelijk van uw scenario's kunt u de met privé-eindpunt beveiligde resources mogelijk niet beheren via de Azure-portal, Azure CLI of Azure PowerShell (bijvoorbeeld Key Vault). Deze hulpprogramma's maken allemaal REST API-aanroepen voor toegang tot de resources via het openbare internet en worden geblokkeerd door uw configuratie. Hier volgen enkele opties voor toegang tot de vergrendelde resources:
- Voeg voor Key Vault het openbare IP-adres van uw lokale computer toe om de beveiligde geheimen van het privé-eindpunt weer te geven of bij te werken.
- Als uw on-premises netwerk wordt uitgebreid naar het Azure virtuele netwerk via een VPN-gateway of ExpressRoute, kunt u de beveiligde privé-eindpuntbronnen rechtstreeks vanuit uw on-premises netwerk beheren.
- Beheer de resources die met een privé-eindpunt zijn beveiligd vanaf een jump server in het virtuele netwerk.
- Deploy Cloud Shell in het virtuele netwerk.
De hulpbronnen opschonen
In de voorgaande stappen hebt u in een resourcegroep Azure-resources gemaakt. Als u deze resources in de toekomst niet meer nodig hebt, verwijdert u de resourcegroep door de volgende opdracht uit te voeren in de Cloud Shell:
az group delete --name $groupName
Het kan een minuut duren voordat deze opdracht is uitgevoerd.