Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Azure App Service kan använda hanterade identiteter för att ansluta till serverdelstjänster utan en anslutningssträng. Den här metoden eliminerar behovet av att hantera anslutningshemligheter och håller backend-anslutningen säker i en produktionsmiljö. När du är klar har du en app som gör programmatiska anrop till Foundry Tools utan att lagra några anslutningshemligheter i App Service.
För serverdelstjänster som inte stöder hanterade identiteter och fortfarande kräver anslutningshemligheter kan du använda Azure Key Vault för att hantera anslutningshemligheter. I den här självstudien används Foundry Tools som exempel. När du är klar har du en app som gör programmatiska anrop till Foundry Tools utan att lagra några anslutningshemligheter i App Service.
Tips
Foundry Tools stöder autentisering via hanterade identiteter. I den här självstudien används prenumerationsnyckelautentisering för att visa hur du kan ansluta till en Azure-tjänst som inte stöder hanterade identiteter från App Service.
I den här arkitekturen:
- Hanterade identiteter skyddar anslutningen till nyckelvalvet.
- App Service kommer åt hemligheterna genom Key Vault-referenser som app-inställningar.
- Åtkomsten till nyckelvalvet är begränsad till appen. Appdeltagare, till exempel administratörer, kan ha fullständig kontroll över App Service-resurserna och har samtidigt ingen åtkomst till Key Vault-hemligheterna.
- Om programkoden redan har åtkomst till anslutningshemligheter med appinställningar krävs ingen ändring.
I den här handledningen lär du dig:
- Aktivera hanterade identiteter
- Använda hanterade identiteter för att ansluta till Key Vault
- Använd Key Vault-referenser
- Åtkomst till gjuteriverktyg
Förutsättningar
Förbered din miljö för Azure CLI.
Använd Bash-miljön i Azure Cloud Shell. Mer information finns i Hämta igång med Azure Cloud Shell.
Om du föredrar att köra CLI-referenskommandon lokalt install Azure CLI. Om du kör på Windows eller macOS kan du överväga att köra Azure CLI i en Docker-container. Mer information finns i Hur du kör Azure CLI i en Docker-container.
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. Andra inloggningsalternativ finns i Authenticate to Azure using Azure CLI.
När du uppmanas att installera Azure CLI-tillägget vid första användningen. Mer information om tillägg finns i Använda och hantera tillägg med Azure CLI.
Kör az version för att ta reda på versionen och de beroende bibliotek som är installerade. Om du vill uppgradera till den senaste versionen kör du az upgrade.
Skapa en app med anslutning till Foundry Tools
Skapa en resursgrupp som ska innehålla alla dina resurser:
# Save the resource group name as a variable for convenience groupName=myKVResourceGroup region=canadacentral az group create --name $groupName --location $regionSkapa en Foundry Tools-resurs. Ersätt <cs-resource-name> med ett unikt namn.
# Save the resource name as a variable for convenience. csResourceName=<cs-resource-name> az cognitiveservices account create --resource-group $groupName --name $csResourceName --location $region --kind TextAnalytics --sku F0 --custom-domain $csResourceNameKommentar
--sku F0skapar en Foundry Tools-resurs på den kostnadsfria nivån. Varje prenumeration är begränsad till en kvot för en resurs på den kostnadsfria nivånTextAnalytics. Om du redan har använt din kvot använder du--sku Si stället.
Konfigurera en PHP-app
Klona exempellagringsplatsen lokalt och distribuera exempelprogrammet till App Service. Ersätt <appnamn> med ett unikt namn.
# Clone and prepare the sample application
git clone https://github.com/Azure-Samples/app-service-language-detector.git
cd app-service-language-detector/php
zip default.zip index.php
# Save the app name as a variable for convenience
appName=<app-name>
az appservice plan create --resource-group $groupName --name $appName --sku FREE --location $region
az webapp create --resource-group $groupName --plan $appName --name $appName
az webapp deploy --resource-group $groupName --name $appName --src-path ./default.zip
Konfigurera hemligheter som appinställningar
Konfigurera Foundry Tools-hemligheterna som appinställningar
CS_ACCOUNT_NAMEochCS_ACCOUNT_KEY.# Get the subscription key for the Foundry Tools 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 en webbläsare går du till din distribuerade app på
<app-name>.azurewebsites.net. Prova språkidentifieringen genom att ange strängar på olika språk.
Om du tittar på programkoden kan felsökningsresultatet för identifieringsresultaten ha samma teckenfärg som bakgrunden. Du kan se utdata genom att markera det tomma utrymmet direkt under resultatet.
Säker serverdelsanslutning
Anslutningshemligheter lagras nu som appinställningar i din App Service-app. Den här metoden skyddar redan anslutningshemligheter från programkodbasen. Alla deltagare som kan hantera din app kan dock också se appinställningarna. I det här avsnittet flyttar du anslutningshemligheterna till ett nyckelvalv. Du låser åtkomsten så att endast du kan hantera den och endast App Service-appen kan läsa den med hjälp av dess hanterade identitet.
Skapa ett nyckelvalv. Ersätt <valvnamn> med ett unikt namn.
# Save the key vault name as a variable for convenience vaultName=<vault-name> az keyvault create --resource-group $groupName --name $vaultName --location $region --sku standard --enable-rbac-authorizationParametern
--enable-rbac-authorizationsätter Azure rollbaserad-åtkomstkontroll (RBAC) som behörighetsmodell. Den här inställningen ogiltigförklarar som standard alla åtkomstprincipers behörigheter.Ge dig själv rollen Key Vault Secrets Officer RBAC för valvet.
vaultResourceId=$(az keyvault show --name $vaultName --query id --output tsv) myId=$(az ad signed-in-user show --query id --output tsv) az role assignment create --role "Key Vault Secrets Officer" --assignee-object-id $myId --assignee-principal-type User --scope $vaultResourceIdAktivera den systemtilldelade hanterade identiteten för din app och ge den Key Vault Secrets User RBAC-roll för valvet.
az webapp identity assign --resource-group $groupName --name $appName --scope $vaultResourceId --role "Key Vault Secrets User"Lägg till foundry Tools-resursnamnet och prenumerationsnyckeln som hemligheter i valvet och spara deras ID:n 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 har du angett hemligheterna som appinställningar
CS_ACCOUNT_NAMEochCS_ACCOUNT_KEYi 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)"I en webbläsare går du till
<app-name>.azurewebsites.netigen. Om du får tillbaka identifieringsresultatet ansluter du till slutpunkten Foundry Tools med hjälp av key vault-referenser.
Grattis, appen ansluter nu till Foundry Tools med hjälp av hemligheter som finns i nyckelvalvet och du har inte ändrat programkoden.
Rensa resurser
I föregående steg skapade du Azure resurser i en resursgrupp. Om du inte förväntar dig att behöva 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 ta en minut att köra det här kommandot.