Megosztás a következőn keresztül:


Oktatóanyag: Háttérbeli kommunikáció elkülönítése Azure App Service Virtual Network integrációval

Ebben a cikkben egy App Service-alkalmazást fog konfigurálni biztonságos, hálózat által elkülönített kommunikációval a háttérszolgáltatások felé. A példahelyzet a Tutorial: Secure Cognitive Service-kapcsolat az App Service-ből a Key Vault segítségével. Ha végzett, egy App Service-alkalmazással rendelkezik, amely az Azure virtuális hálózaton keresztül fér hozzá a Key Vaulthoz és a Foundry Tools-hoz, és más forgalom nem férhet hozzá ezekhez a háttérerőforrásokhoz. A virtuális hálózaton belül minden forgalom el lesz különítve a virtuális hálózati integráció és a privát végpontok használatával.

Több-bérlős szolgáltatásként az App Service-alkalmazásból más Azure szolgáltatásokba irányuló kimenő hálózati forgalom ugyanazt a környezetet más alkalmazásokkal vagy akár más előfizetésekkel is megosztja. Bár maga a forgalom titkosítható, bizonyos forgatókönyvek további biztonsági szintet igényelhetnek azáltal, hogy elkülönítik a háttérbeli kommunikációt más hálózati forgalomtól. Ezek a forgatókönyvek általában magas szintű szakértelemmel rendelkező nagyvállalatok számára érhetők el, de az App Service a virtuális hálózati integrációval elérhető.

forgatókönyv-architektúra

Ezzel az architektúrával:

  • A háttérszolgáltatások nyilvános forgalma le van tiltva.
  • Az App Service kimenő forgalmát a rendszer a virtuális hálózatra irányítja, és elérheti a háttérszolgáltatásokat.
  • Az App Service a privát DNS-zónákon keresztül képes DNS-feloldásokat végezni a háttérszolgáltatásokban.

A következő tudnivalókat fogja elsajátítani:

  • Virtuális hálózat és alhálózatok létrehozása az App Service virtuális hálózati integrációjához
  • Privát DNS-zónák létrehozása
  • Privát végpontok létrehozása
  • Virtuális hálózati integráció konfigurálása az App Service-ben

Előfeltételek

Az oktatóanyag feltételezi, hogy követte a Tutorial: Secure Cognitive Service-kapcsolatot az App Service-ből a Key Vault használatával, és létrehozta a nyelvérzékelő alkalmazást.

Az oktatóanyag továbbra is az előző oktatóanyag következő környezeti változóit használja. Győződjön meg arról, hogy megfelelően állítja be őket.

    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>

Virtuális hálózat és alhálózatok létrehozása

  1. Hozzon létre egy virtuális hálózatot. Cserélje le <a virtuális hálózat nevét> egy egyedi névre.

    # 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/16
    
  2. Hozzon létre egy alhálózatot az App Service virtuális hálózati integrációjához.

    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 Enabled
    

    Az App Service esetében a virtuális hálózati integrációs alhálózatnak ajánlott legalább CIDR-blokktal rendelkeznie (lásd /26 követelményeit). /24 több mint elegendő. --delegations Microsoft.Web/serverfarms megadja, hogy az alhálózat delegálva legyen az App Service virtuális hálózati integrációjához.

  3. Hozzon létre egy másik alhálózatot a privát végpontokhoz.

    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 Disabled
    

    A privát végpont alhálózatai esetében le kell tiltania a privát végpont hálózati szabályzatait.

Privát DNS-zónák létrehozása

Mivel a Key Vault és az Azure AI szolgáltatások erőforrásai privát végpontok mögött helyezkednek el, hozzájuk privát DNS-zónákat kell definiálnia. Ezek a zónák a privát végpontok DNS-rekordjainak üzemeltetésére szolgálnak, és lehetővé teszik, hogy az ügyfelek név alapján megtalálják a háttérszolgáltatásokat.

  1. Hozzon létre két privát DNS-zónát, egyet a Azure AI services erőforráshoz, egyet pedig a kulcstartóhoz.

    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.net
    

    További információ ezekről a beállításokról: Azure Privát végpont DNS-konfigurációja

  2. Csatlakoztassa a privát DNS-zónákat a virtuális hálózathoz.

    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át végpontok létrehozása

  1. A virtuális hálózat privát végpont alhálózatában hozzon létre egy privát végpontot a Cognitive Service számára.

    # 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-subnet
    
  2. Hozzon létre egy DNS-zónacsoportot a Azure AI Services privát végpontjához. A DNS-zónacsoport a privát DNS-zóna és a privát végpont közötti kapcsolat. Ez a hivatkozás segít automatikusan frissíteni a privát DNS-zónát a privát végpont frissítésekor.

    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.com
    
  3. A Azure AI services erőforrás nyilvános forgalmának letiltása.

    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.provisioningState
    

    Megjegyzés:

    Győződjön meg arról, hogy a módosítás kiépítési állapota "Succeeded". Ezután megfigyelheti a mintaalkalmazás viselkedésváltozását. Továbbra is betöltheti az alkalmazást, de ha az Észlelés gombra kattint, hibaüzenet jelenik HTTP 500 meg. Az alkalmazás elveszítette az Azure AI szolgáltatások erőforrásával való kapcsolatát a megosztott hálózaton keresztül.

  4. Ismételje meg a fenti lépéseket a kulcstartóhoz.

    # 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 Deny
    
  5. Az alkalmazás beállításainak alaphelyzetbe állításával kényszerítse ki azonnal a key vault-referenciák azonnali visszaállítását (további információt a Rotáció című témakörben talál).

    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)"
    

    Megjegyzés:

    Ismét megfigyelheti a mintaalkalmazás viselkedésváltozását. Az alkalmazás már nem tölthető be, mert már nem fér hozzá a kulcstartó hivatkozásaihoz. Az alkalmazás elvesztette a kapcsolódását a kulcstárhoz a megosztott hálózaton keresztül.

A két privát végpont csak a létrehozott virtuális hálózaton belüli ügyfelek számára érhető el. A kulcstartó titkos kulcsait a Secrets lapon keresztül sem érheti el a Azure portálon, mert a portál a nyilvános interneten keresztül éri el őket (lásd A zárolt erőforrások kezelése).

Virtuális hálózati integráció konfigurálása az alkalmazásban

  1. Skálázza fel az alkalmazást egy támogatott tarifacsomagra (lásd: Az Azure virtuális hálózattal történő integráció).

    az appservice plan update --name $planName --resource-group $groupName --sku S1
    
  2. Nem kapcsolódik a forgatókönyvünkhöz, de fontos is, kényszerítse a HTTPS-t a bejövő kérésekhez.

    az webapp update --resource-group $groupName --name $appName --https-only
    
  3. Virtuális hálózati integráció engedélyezése az alkalmazásban.

    az webapp vnet-integration add --resource-group $groupName --name $appName --vnet $vnetName --subnet vnet-integration-subnet
    

    A virtuális hálózat integrációja lehetővé teszi, hogy a kimenő forgalom közvetlenül a virtuális hálózatba áramoljon. Alapértelmezés szerint csak az RFC-1918-ban definiált helyi IP-forgalom lesz átirányítva a virtuális hálózathoz, ami a privát végpontokhoz szükséges. Ha az összes forgalmat a virtuális hálózatra szeretné irányítani, olvassa el a Virtuális hálózatok integrációs útválasztásának kezelése című témakört. Az összes forgalom átirányítása akkor is használható, ha az internetes forgalmat a virtuális hálózaton keresztül szeretné irányítani, például egy Azure Virtual Network NAT vagy egy Azure Firewall.

  4. A böngészőben lépjen újra a <app-name>.azurewebsites.net oldalra, és várjon, amíg az integráció érvénybe lép. HA HTTP 500-ás hibát kap, várjon néhány percet, és próbálkozzon újra. Ha betöltheti a lapot, és észlelési eredményeket kaphat, akkor a Azure AI-szolgáltatások végpontjához csatlakozik kulcstartó-hivatkozásokkal.

    Megjegyzés:

    Ha hosszú idő után továbbra is HTTP 500 hibákat kap, az segíthet a Key Vault hivatkozások újbóli lekérésének kényszerítésében, például:

    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)"
    

Zárolt erőforrások kezelése

A forgatókönyvtől függően előfordulhat, hogy nem tudja kezelni a privát végpont által védett erőforrásokat a Azure portálon, Azure CLI vagy Azure PowerShell keresztül (például Key Vault). Ezek az eszközök mind REST API-hívásokat kezdeményeznek az erőforrások nyilvános interneten keresztüli eléréséhez, és a konfiguráció letiltja őket. Íme néhány lehetőség a zárolt erőforrások elérésére:

  • Key Vault esetén adja hozzá a helyi gép nyilvános IP-címét a privát végpont által védett titkos kulcsok megtekintéséhez vagy frissítéséhez.
  • Ha a helyszíni hálózat egy VPN-átjárón vagy ExpressRoute keresztül van kiterjesztve a Azure virtuális hálózatra, a privát végpont által védett erőforrásokat közvetlenül a helyszíni hálózatról kezelheti.
  • Kezelje a privát végpont által védett erőforrásokat egy ugrókiszolgálóról a virtuális hálózatban.
  • A virtuális hálózatba Cloud Shell üzembe helyezése.

Erőforrások tisztítása

Az előző lépésekben Azure erőforrásokat hozott létre egy erőforráscsoportban. Ha a jövőben nem lesz szüksége ezekre az erőforrásokra, törölje az erőforráscsoportot az alábbi parancs futtatásával a Cloud Shell:

az group delete --name $groupName

A parancs futtatása egy percig is eltarthat.

Következő lépések