Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
V tomto článku nakonfigurujete App Service aplikaci se zabezpečenou sítí, která je izolována pro komunikaci s back-endovými službami. Ukázkový scénář se používá v Tutorial: Zabezpečené připojení služeb Cognitive Service ze služby App Service pomocí Key Vault. Po dokončení máte aplikaci app Service, která přistupuje ke službě Key Vault i Foundry Tools prostřednictvím virtuální sítě Azure. Žádný jiný provoz nemá povolený přístup k těmto backendovým zdrojům. Veškerý provoz bude v rámci vaší virtuální sítě izolovaný prostřednictvím integrace virtuální sítě a privátních koncových bodů.
Ve službě s více tenanty sdílí odchozí síťový provoz z vaší aplikace App Service do jiných služeb Azure stejné prostředí s jinými aplikacemi nebo dokonce s jinými předplatnými. I když samotný provoz může být šifrovaný, některé scénáře můžou vyžadovat vyšší úroveň zabezpečení prostřednictvím izolace back-endové komunikace od jiného síťového provozu. Tyto scénáře jsou obvykle přístupné velkým podnikům s vysokou úrovní odborných znalostí, ale App Service ho při integraci virtuální sítě zařadí do dosahu.
V této architektuře:
- Veřejný provoz do back-endových služeb je zablokovaný.
- Odchozí provoz ze služby App Service se směruje do virtuální sítě a může se spojit s back-endovými službami.
- Služba App Service může provádět překlad DNS do back-endových služeb prostřednictvím privátních zón DNS.
Co se naučíte:
- Vytvoření virtuální sítě a podsítí pro integraci virtuální sítě služby App Service
- Vytvoření privátních zón DNS
- Vytvoření privátních koncových bodů
- Konfigurace integrace virtuální sítě ve službě App Service
Předpoklady
Kompletní kurz: Zabezpečení připojení služby Cognitive Service ze služby App Service pomocí služby Key Vault a vytvoření aplikace detektoru jazyka
Nezapomeňte nastavit následující proměnné prostředí z kurzu: Zabezpečené připojení služeb Cognitive Service ze služby App Service pomocí služby 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>
Vytvoření virtuální sítě a podsítí
Vytvořte virtuální síť. Nahraďte <název> virtuální sítě jedinečným názvem.
# 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/16Vytvořte podsíť pro integraci virtuální sítě služby 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 EnabledV případě služby App Service doporučujeme, aby podsíť integrace virtuální sítě měla minimálně blok
/26CIDR. (Viz požadavky na podsíť integrace virtuální sítě.)/24je více než dostačující.--delegations Microsoft.Web/serverfarmsurčuje, že podsíť je delegovaná pro integraci virtuální sítě služby App Service.Vytvořte další podsíť pro privátní koncové body.
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 DisabledU podsítí privátních koncových bodů je potřeba zakázat zásady sítě privátních koncových bodů.
Vytvoření privátních zón DNS
Vzhledem k tomu, že vaše prostředky Key Vault a Foundry Tools budou umístěny za soukromými koncovými body, musíte pro ně definovat soukromé zóny DNS. Tyto zóny slouží k hostování záznamů DNS pro privátní koncové body a umožňují klientům najít back-endové služby podle názvu.
Vytvořte dvě privátní zóny DNS, jednu pro prostředek Foundry Tools a jednu pro váš trezor klíčů.
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.netDalší informace o těchto nastaveních najdete v tématu Konfigurace DNS privátního koncového bodu Azure.
Propojte privátní zóny DNS s virtuální sítí.
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
Vytvoření privátních koncových bodů
V podsíti privátního koncového bodu vaší virtuální sítě vytvořte privátní koncový bod pro prostředek 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-subnetVytvořte skupinu zón DNS pro privátní koncový bod Foundry Tools. Skupina zón DNS je propojení mezi privátní zónou DNS a privátním koncovým bodem. Tento odkaz vám pomůže automaticky aktualizovat privátní zónu DNS, když dojde k aktualizaci privátního koncového bodu.
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.comZablokujte veřejný provoz do prostředku 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.provisioningStatePoznámka:
Ujistěte se, že stav zřizování vaší změny je
"Succeeded". Pak můžete sledovat změnu chování v ukázkové aplikaci. Aplikaci můžete stále načíst, ale pokud se pokusíte vybrat tlačítko Zjistit, zobrazí seHTTP 500chyba. Aplikace ztratila připojení k prostředku Foundry Tools prostřednictvím sdílených sítí.Opakujte předchozí kroky pro trezor klíčů.
# 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 DenyVynuťte okamžité opětovné načtení odkazů na trezor klíčů ve vaší aplikaci resetováním nastavení aplikace. (Další informace naleznete v tématu Otočení.)
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)"Poznámka:
Opět můžete sledovat změnu chování v ukázkové aplikaci. Aplikaci už nemůžete načíst, protože už nemá přístup k odkazům na úložiště klíčů. Aplikace ztratila připojení k trezoru klíčů prostřednictvím sdílených sítí.
Dva privátní koncové body jsou přístupné jenom klientům ve virtuální síti, kterou jste vytvořili. Na stránce Tajné kódy na webu Azure Portal nemáte přístup ani k tajným kódům v trezoru klíčů, protože k nim portál přistupuje přes veřejný internet. (Viz Správa uzamčených prostředků.)
Konfigurace integrace virtuální sítě v aplikaci
Zvyšte kapacitu aplikace na podporovaný cenový plán. (Viz Integrace aplikace s virtuální sítí Azure.)
az appservice plan update --name $planName --resource-group $groupName --sku S1Vynucujte HTTPS pro příchozí požadavky. (Tento krok nesouvisí s aktuálním scénářem, ale je důležitý.)
az webapp update --resource-group $groupName --name $appName --https-onlyPovolte integraci virtuální sítě ve vaší aplikaci.
az webapp vnet-integration add --resource-group $groupName --name $appName --vnet $vnetName --subnet vnet-integration-subnetIntegrace virtuální sítě umožňuje, aby odchozí provoz proudil přímo do virtuální sítě. Ve výchozím nastavení se do virtuální sítě směruje pouze místní provoz IP definovaný v dokumentu RFC-1918 , což je to, co potřebujete pro privátní koncové body. Informace o směrování veškerého provozu do virtuální sítě najdete v tématu Správa směrování integrace virtuální sítě. Veškerý provoz můžete také směrovat, pokud chcete směrovat internetový provoz přes vaši virtuální síť, například přes Azure NAT Gateway nebo Azure Firewall.
V prohlížeči přejděte na
<app-name>.azurewebsites.neta počkejte, až se integrace provede. Pokud se zobrazí chyba HTTP 500, počkejte několik minut a zkuste to znovu. Pokud můžete stránku načíst a získat výsledky detekce, připojujete se ke koncovému bodu Foundry Tools pomocí odkazů na trezor klíčů.Poznámka:
Pokud se chyby HTTP 500 vrací po dlouhou dobu, může pomoci vynutit opětovné načtení Key Vault reference:
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)"
Správa uzamčených prostředků
V závislosti na vašich scénářích možná nebudete moct spravovat prostředky chráněné privátním koncovým bodem prostřednictvím webu Azure Portal, Azure CLI nebo Azure PowerShellu (například Key Vault). Všechny tyto nástroje provádějí volání rozhraní REST API pro přístup k prostředkům prostřednictvím veřejného internetu a jsou blokovány vaší konfigurací. Tady je několik možností pro přístup k uzamčeným prostředkům:
- V případě služby Key Vault přidejte veřejnou IP adresu místního počítače pro zobrazení nebo aktualizaci tajných kódů, které jsou chráněné privátními koncovými body.
- Pokud je vaše místní síť rozšířená do virtuální sítě Azure prostřednictvím brány VPN nebo Azure ExpressRoute, můžete spravovat privátní koncové body chráněné prostředky přímo z místní sítě.
- Spravujte prostředky, které jsou chráněny privátním koncovým bodem, pomocí jump serveru ve virtuální síti.
- Deploy Cloud Shell do virtuální sítě.
Vyčistěte zdroje
V předchozích krocích jste vytvořili prostředky Azure ve skupině prostředků. Pokud v budoucnu tyto prostředky nepotřebujete, odstraňte skupinu prostředků spuštěním následujícího příkazu v Cloud Shell:
az group delete --name $groupName
Tento příkaz může chvíli trvat, než se spustí.