Självstudie: Säker Cognitive Service-anslutning från App Service med Key Vault
Azure App Service kan använda hanterade identiteter för att ansluta till backend-tjänster utan en anslutningssträng, vilket eliminerar anslutningshemligheter att hantera och skyddar din backend-anslutning i en produktionsmiljö. För backend-tjänster som inte stöder hanterade identiteter och fortfarande kräver anslutningshemligheter kan du använda Key Vault för att hantera anslutningshemligheter. I den här Cognitive Services här självstudien används som exempel för att visa hur det går till i praktiken. När du är klar har du en app som gör programmässiga anrop till Cognitive Services, utan att lagra några anslutningshemligheter i App Service.
Tips
Azure Cognitive Services stöder autentisering via hanterade identiteter, men den här självstudien använder autentisering med prenumerationsnyckelför att visa hur du kan ansluta till en Azure-tjänst som inte stöder hanterade identiteter från App Services.

Med den här arkitekturen:
- Anslutning till Key Vault skyddas av hanterade identiteter
- App Service åtkomst till hemligheterna med hjälp Key Vault referenser som appinställningar.
- Åtkomsten till nyckelvalvet är begränsad till appen. Appdeltagare, till exempel administratörer, kan ha fullständig kontroll över App Service resurser och har samtidigt ingen åtkomst till de Key Vault hemligheterna.
- Om din programkod redan har åtkomst till anslutningshemligheter med appinställningar krävs ingen ändring.
Det här får du lära dig:
- Aktivera hanterade identiteter
- Använda hanterade identiteter för att ansluta till Key Vault
- Använda Key Vault-referenser
- Åtkomst Cognitive Services
Förutsättningar
Förbered din miljö för Azure CLI.
Använd bash-miljön i Azure Cloud Shell.
Om du vill kan du i stället installera Azure CLI för att köra CLI-referenskommandon.
Om du använder en lokal installation loggar du in på Azure CLI med hjälp av kommandot az login. Slutför autentiseringsprocessen genom att följa stegen som visas i terminalen. Fler inloggningsalternativ finns i Logga in med Azure CLI.
När du uppmanas till det installerar du Azure CLI-tillägg vid första användning. Mer information om tillägg finns i Använda tillägg med Azure CLI.
Kör az version om du vill hitta versionen och de beroende bibliotek som är installerade. Om du vill uppgradera till den senaste versionen kör du az upgrade.
Skapa app med anslutning till Cognitive Services
Skapa en resursgrupp som ska innehålla alla dina resurser:
# Save resource group name as variable for convenience groupName=myKVResourceGroup region=westeurope az group create --name $groupName --location $regionSkapa en Cognitive Services resurs. Ersätt <cs-resource-name> med ett unikt namn som du själv väljer.
# Save resource name as variable for convenience. csResourceName=<cs-resource-name> az cognitiveservices account create --resource-group $groupName --name $csResourceName --location $region --kind TextAnalytics --sku F0 --custom-domain $csResourceNameAnteckning
--sku F0skapar en kostnadsfri nivå Cognitive Services resurs. Varje prenumeration är begränsad till en kvot för en resurs på den kostnadsfriaTextAnalyticsnivån. Om du redan har över kvoten använder du--sku Si stället.Klona exempeldatabasen lokalt och distribuera exempelprogrammet till App Service. Ersätt <app-name> med ett unikt namn.
# Save app name as variable for convenience appName=<app-name> # Clone sample application git clone https://github.com/Azure-Samples/app-service-language-detector.git cd app-service-language-detector/dotnet az webapp up --sku F1 --resource-group $groupName --name $appName --plan $appName --location $regionKonfigurera Cognitive Services hemligheter som appinställningar
CS_ACCOUNT_NAMEochCS_ACCOUNT_KEY.# Get subscription key for Cognitive Services resource csKey1=$(az cognitiveservices account keys list --resource-group $groupName --name $csResourceName --query key1 --output tsv) az webapp config appsettings set --resource-group $groupName --name $appName --settings CS_ACCOUNT_NAME="$csResourceName" CS_ACCOUNT_KEY="$csKey1"I webbläsaren går du till din distribuera app på och
<app-name>.azurewebsites.netprovar språkdetektorn med strängar på olika språk.
Om du tittar på programkoden kanske du ser felsökningsutdata för identifieringen med samma teckenfärg som bakgrunden. Du kan se det genom att försöka markera det vita utrymmet direkt under resultatet.
Säker backend-anslutning
För tillfället lagras anslutningshemligheter som appinställningar i din App Service appen. Den här metoden skyddar redan anslutningshemligheter från programkodbasen. Alla deltagare som kan hantera din app kan dock även se appinställningarna. I det här steget flyttar du anslutningshemligheterna till ett nyckelvalv och låser åtkomsten så att endast du kan hantera det och endast App Service-appen kan läsa den med dess hanterade identitet.
Skapa ett nyckelvalv. Ersätt <vault-name> med ett unikt namn.
# Save app name as variable for convenience vaultName=<vault-name> az keyvault create --resource-group $groupName --name $vaultName --location $region --sku standard --enable-rbac-authorizationParametern
--enable-rbac-authorizationanger Rollbaserad åtkomstkontroll (RBAC) i Azure som behörighetsmodell. Den här inställningen gör som standard alla behörigheter för åtkomstprinciper ogiltiga.Ge dig själv Key Vault RBAC-rollen hemlighetsansvarig för valvet.
vaultResourceId=$(az keyvault show --name $vaultName --query id --output tsv) myId=$(az ad signed-in-user show --query objectId --output tsv) az role assignment create --role "Key Vault Secrets Officer" --assignee-object-id $myId --assignee-principal-type User --scope $vaultResourceIdAktivera den system tilldelade hanterade identiteten för din app och ge den RBAC-rollen Key Vault hemligheter för valvet.
az webapp identity assign --resource-group $groupName --name $appName --scope $vaultResourceId --role "Key Vault Secrets User"Lägg till Cognitive Services resursnamn och prenumerationsnyckel som hemligheter i valvet och spara deras ID:er som miljövariabler för nästa steg.
csResourceKVUri=$(az keyvault secret set --vault-name $vaultName --name csresource --value $csResourceName --query id --output tsv) csKeyKVUri=$(az keyvault secret set --vault-name $vaultName --name cskey --value $csKey1 --query id --output tsv)Tidigare konfigurerade du hemligheterna som
CS_ACCOUNT_NAMEappinställningarCS_ACCOUNT_KEYoch i din app. Ange dem nu som nyckelvalvsreferenser i stället.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å till igen i
<app-name>.azurewebsites.netwebbläsaren. Om du får tillbaka identifieringsresultaten ansluter du till slutpunkten för Cognitive Services med nyckelvalvsreferenser.
Grattis, din app ansluter nu till Cognitive Services med hemligheter som finns i nyckelvalvet, utan ändringar i programkoden.
Rensa resurser
I de föregående stegen skapade du Azure-resurser i en resursgrupp. Om du inte tror att du behöver dessa resurser i framtiden tar du bort resursgruppen genom att köra följande kommando i Cloud Shell:
az group delete --name $groupName
Det kan några minuter att köra kommandot.
