Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Dans cet article, vous allez configurer une application App Service avec une communication sécurisée et isolée sur le réseau aux services principaux. L’exemple de scénario utilisé est dans Tutorial : Connexion Cognitive Service sécurisée à partir d’App Service à l’aide de Key Vault. Lorsque vous avez terminé, vous disposez d’une application App Service qui accède à Key Vault et à Foundry Tools via un réseau virtuel Azure. Aucun autre trafic n’est autorisé à accéder à ces ressources principales. Tout le trafic sera isolé au sein de votre réseau virtuel via l’intégration de réseau virtuel et les points de terminaison privés.
Dans un service mutualisé, le trafic réseau sortant de votre application App Service vers d’autres services Azure partage le même environnement avec d’autres applications ou même d’autres abonnements. Bien que le trafic lui-même puisse être chiffré, certains scénarios peuvent nécessiter un niveau de sécurité supplémentaire via l’isolation de la communication back-end à partir d’un autre trafic réseau. Ces scénarios sont généralement accessibles aux grandes entreprises avec un haut niveau d’expertise, mais App Service le met en portée avec l’intégration de réseau virtuel.
Dans cette architecture :
- Le trafic public vers les services principaux est bloqué.
- Le trafic sortant d’App Service est acheminé vers le réseau virtuel et peut atteindre les services principaux.
- App Service peut effectuer une résolution DNS vers les services principaux via les zones DNS privées.
Ce que vous allez apprendre :
- Créer un réseau virtuel et des sous-réseaux pour l’intégration de réseau virtuel App Service
- Créer des zones DNS privées
- Créer des points de terminaison privés
- Configurer l’intégration de réseau virtuel dans App Service
Prerequisites
Tutoriel complet : Sécuriser la connexion Cognitive Service à partir d’App Service à l’aide de Key Vault et créer l’application détecteur de langage.
Veillez à définir les variables d’environnement suivantes à partir du tutoriel : Sécuriser la connexion Cognitive Service à partir d’App Service à l’aide de 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>
Créer un réseau virtuel et des sous-réseaux
Créer un réseau virtuel. Remplacez <virtual-network-name> par un nom unique.
# 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/16Créez un sous-réseau pour l’intégration du réseau virtuel 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 EnabledPour App Service, il est recommandé que le sous-réseau d’intégration de réseau virtuel dispose d’un bloc CIDR d’un
/26minimum. (Consultez la configuration requise du sous-réseau d’intégration de réseau virtuel.)/24est plus que suffisant.--delegations Microsoft.Web/serverfarmsspécifie que le sous-réseau est délégué pour l’intégration de réseau virtuel App Service.Créez un autre sous-réseau pour les points de terminaison privés.
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 DisabledPour les sous-réseaux de points de terminaison privés, vous devez désactiver les stratégies réseau de point de terminaison privé.
Créer des zones DNS privées
Étant donné que vos ressources Key Vault et Foundry Tools se trouvent derrière des points de terminaison privés, vous devez définir des zones DNS privées pour celles-ci. Ces zones sont utilisées pour héberger les enregistrements DNS pour les points de terminaison privés et permettre aux clients de rechercher les services principaux par nom.
Créez deux zones DNS privées, une pour votre ressource Foundry Tools et une pour votre coffre de clés.
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.netPour plus d’informations sur ces paramètres, consultez Configuration DNS des points de terminaison privés Azure.
Lier les zones DNS privées au réseau virtuel.
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
Créer des points de terminaison privés
Dans le sous-réseau de point de terminaison privé de votre réseau virtuel, créez un point de terminaison privé pour votre ressource Foundry Tools.
# 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-subnetCréez un groupe de zones DNS pour le point de terminaison privé Foundry Tools. Un groupe de zones DNS est un lien entre la zone DNS privée et le point de terminaison privé. Ce lien vous permet de mettre à jour automatiquement la zone DNS privée en cas de mise à jour vers le point de terminaison privé.
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.comBloquez le trafic public vers la ressource 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.provisioningStateNote
Vérifiez que l’état d’approvisionnement de votre modification est
"Succeeded". Vous pouvez ensuite observer le changement de comportement dans l’exemple d’application. Vous pouvez toujours charger l’application, mais si vous essayez de sélectionner le bouton Détecter , vous obtenez uneHTTP 500erreur. L’application a perdu sa connectivité à la ressource Foundry Tools via la mise en réseau partagée.Répétez les étapes précédentes pour le 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 DenyForcez un rafraîchissement immédiat des références du coffre de clés de votre application par la réinitialisation des paramètres de l’application. (Pour plus d’informations, consultez Rotation.)
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)"Note
Là encore, vous pouvez observer le changement de comportement dans l’exemple d’application. Vous ne pouvez plus charger l'application, car elle n'a plus accès aux références du coffre-fort de clés. L’application a perdu sa connectivité au coffre de clés par le biais de la mise en réseau partagée.
Les deux points de terminaison privés sont accessibles uniquement aux clients à l’intérieur du réseau virtuel que vous avez créé. Vous ne pouvez même pas accéder aux secrets dans le coffre de clés à partir de la page Secrets du portail Azure, car le portail y accède via l’Internet public. (Consultez Gérer les ressources verrouillées.)
Configurer l’intégration de réseau virtuel dans votre application
Mettre à l’échelle l’application jusqu’à un niveau tarifaire pris en charge. (Consultez Intégrer votre application à un réseau virtuel Azure.)
az appservice plan update --name $planName --resource-group $groupName --sku S1Appliquez LE protocole HTTPS pour les requêtes entrantes. (Cette étape n’est pas liée au scénario actuel, mais elle est importante.)
az webapp update --resource-group $groupName --name $appName --https-onlyActivez l’intégration du réseau virtuel sur votre application.
az webapp vnet-integration add --resource-group $groupName --name $appName --vnet $vnetName --subnet vnet-integration-subnetL’intégration du réseau virtuel permet au trafic sortant de circuler directement dans le réseau virtuel. Par défaut, seul le trafic IP local défini dans RFC-1918 est acheminé vers le réseau virtuel, ce dont vous avez besoin pour les points de terminaison privés. Pour plus d’informations sur le routage de tout votre trafic vers le réseau virtuel, consultez Gérer le routage d’intégration de réseau virtuel. Vous pouvez également acheminer tout le trafic si vous souhaitez diriger le trafic Internet via votre réseau virtuel, par exemple par la passerelle NAT Azure ou le pare-feu Azure.
Dans un navigateur, accédez à
<app-name>.azurewebsites.netet attendez que l’intégration prenne effet. Si vous obtenez une erreur HTTP 500, patientez quelques minutes et réessayez. Si vous pouvez charger la page et obtenir des résultats de détection, vous vous connectez au point de terminaison Foundry Tools à l’aide de références de Key Vault.Note
Si vous continuez d’obtenir des erreurs HTTP 500 pendant longtemps, cela peut aider à forcer un nouvel accès aux références du coffre de clés à nouveau :
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)"
Gérer les ressources verrouillées
Selon vos scénarios, vous ne pouvez peut-être pas gérer les ressources protégées par un point de terminaison privé via le portail Azure, Azure CLI ou Azure PowerShell (par exemple, Key Vault). Ces outils effectuent tous des appels d’API REST pour accéder aux ressources via l’Internet public et sont bloqués par votre configuration. Voici quelques options pour accéder aux ressources verrouillées :
- Pour Key Vault, ajoutez l’adresse IP publique de votre ordinateur local pour afficher ou mettre à jour les secrets protégés par des points de terminaison privés.
- Si votre réseau local est étendu au réseau virtuel Azure via une passerelle VPN ou Azure ExpressRoute, vous pouvez gérer les ressources protégées par point de terminaison privé directement à partir de votre réseau local.
- Gérez les ressources protégées par un point de terminaison privé à partir d’un jump server dans le réseau virtuel.
- Deploy Cloud Shell dans le réseau virtuel.
Nettoyer les ressources
Dans les étapes précédentes, vous avez créé Azure ressources dans un groupe de ressources. Si vous ne vous attendez pas à avoir besoin de ces ressources à l'avenir, supprimez le groupe de ressources en exécutant la commande suivante dans l'Cloud Shell :
az group delete --name $groupName
L’exécution de cette commande peut prendre une minute.