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 naar 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 virtueel Azure-netwerk. Geen ander verkeer mag toegang hebben tot die back-endbronnen. Al het verkeer wordt geïsoleerd binnen uw virtuele netwerk via integratie van virtuele netwerken en privé-eindpunten.
In 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, vereisen bepaalde scenario's mogelijk een extra beveiligingsniveau via isolatie van back-endcommunicatie van ander netwerkverkeer. 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.
In 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.
Wat u leert:
- 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
Volledige zelfstudie: Verbinding met Cognitive Service beveiligen vanuit App Service met behulp van Key Vault en de taaldetector-app maken.
Zorg ervoor dat u de volgende omgevingsvariabelen instelt uit de zelfstudie: Verbinding met Cognitive Service beveiligen vanuit App Service met behulp van 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>
Een virtueel netwerk en subnetten maken
Maak een virtueel netwerk. Vervang <de naam> van het virtuele netwerk door een unieke naam.
# 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/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 is de aanbeveling dat het subnet voor integratie van het virtueel netwerk minimaal een CIDR-blok van
/26heeft. (Zie vereisten voor subnet 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 resources voor Key Vault en Foundry Tools zich achter privé-eindpunten bevinden, moet u hiervoor privé-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 Foundry Tools-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 Private Endpoint DNS-configuratie 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 Foundry Tools-resource.
# 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-subnetMaak een DNS-zonegroep voor het privé-eindpunt Foundry Tools. Een 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 Foundry Tools-resource blokkeren.
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.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 de knop Detecteren probeert te selecteren, krijgt u eenHTTP 500foutmelding. De app heeft de connectiviteit met de Foundry Tools-resource verbroken via het gedeelde netwerk.Herhaal de voorgaande stappen voor de sleutelkluis.
# 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 DenyDwing een onmiddellijke refetch van de sleutelkluisverwijzingen in uw app af door de app-instellingen opnieuw in te stellen. (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 vanaf de pagina Geheimen in Azure Portal, omdat de portal ze opent via het openbare internet. (Zie Vergrendelde bronnen beheren.)
Integratie van virtuele netwerken configureren in uw app
Schaal de app omhoog naar een ondersteunde prijscategorie. (Zie Uw app integreren met een virtueel Azure-netwerk.)
az appservice plan update --name $planName --resource-group $groupName --sku S1HTTPS afdwingen voor binnenkomende aanvragen. (Deze stap is niet gerelateerd aan het huidige scenario, maar het is belangrijk.)
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 voor meer informatie over het routeren van al uw verkeer naar het virtuele netwerk. U kunt ook al het verkeer routeren als u internetverkeer wilt routeren via uw virtuele netwerk, via bijvoorbeeld Azure NAT Gateway of Azure Firewall.
Ga in een browser 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 eindpunt Foundry Tools met behulp van key vault-verwijzingen.Opmerking
Als u HTTP 500-fouten gedurende lange tijd blijft ophalen, kan dit helpen om opnieuw een verwijzing naar de sleutelkluis af te dwingen:
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 een privé-eindpunt beveiligde resources mogelijk niet beheren via 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 geheimen te bekijken of bij te werken die worden beveiligd door privé-eindpunten.
- Als uw on-premises netwerk wordt uitgebreid naar het virtuele Azure-netwerk via een VPN-gateway of Azure ExpressRoute, kunt u de beveiligde privé-eindpuntresources rechtstreeks vanuit uw on-premises netwerk beheren.
- Beheer de met een privé-eindpunt beveiligde resources vanaf een jumpserver 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 uitvoeren van deze opdracht kan een minuut duren.