Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Azure App Service può usare identità gestite managed identities per connettersi ai servizi back-end senza una stringa di connessione, eliminando così la necessità di gestire segreti di connessione e mantenendo sicura la connettività back-end in un ambiente di produzione. Per i servizi back-end che non supportano le identità gestite e richiedono ancora segreti di connessione, è possibile usare Key Vault per gestire i segreti di connessione. Questa esercitazione usa gli strumenti Foundry come esempio per illustrare come viene eseguita in pratica. Al termine, si dispone di un'app che effettua chiamate programmatiche a Foundry Tools, senza archiviare segreti di connessione all'interno di App Service.
Suggerimento
Gli strumenti Foundry supportano l'autenticazione tramite identità gestite, ma questa esercitazione utilizza l'autenticazione tramite chiave di sottoscrizione per illustrare come connettersi a un servizio Azure che non supporta le identità gestite da Servizi App.
Con questa architettura:
- La connettività alle Key Vault è protetta dalle identità gestite
- Il servizio app accede ai segreti usando riferimenti a Key Vault come impostazioni della app.
- L'accesso all'insieme di credenziali delle chiavi è limitato all'applicazione. I collaboratori dell'app, ad esempio gli amministratori, possono avere il controllo completo delle risorse del servizio app e allo stesso tempo non hanno accesso ai segreti Key Vault.
- Se il codice dell'applicazione accede già ai segreti di connessione con le impostazioni dell'app, non è necessaria alcuna modifica.
Cosa imparerai:
- Abilitare le identità gestite
- Usare le identità gestite per connettersi a Key Vault
- Usare i riferimenti di Key Vault
- Accedi agli strumenti di fonderia
Prerequisiti
Preparare l'ambiente per il Azure CLI.
Usare l'ambiente Bash in Azure Cloud Shell. Per altre informazioni, vedere Introduzione a Azure Cloud Shell.
Se si preferisce eseguire i comandi di riferimento dell'interfaccia della riga di comando in locale, install il Azure CLI. Se si esegue in Windows o macOS, è consigliabile eseguire Azure CLI in un contenitore Docker. Per altre informazioni, vedere Come eseguire il Azure CLI in un contenitore Docker.
Se si usa un'installazione locale, accedere al Azure CLI usando il comando az login. Per completare il processo di autenticazione, seguire la procedura visualizzata nel terminale. Per altre opzioni di accesso, vedere Authenticate to Azure using Azure CLI.For other sign-in options, see Authenticate to Azure using Azure CLI.
Quando richiesto, installare l'estensione Azure CLI al primo uso. Per altre informazioni sulle estensioni, vedere Usare e gestire le estensioni con Azure CLI.
Esegui az version per trovare la versione e le librerie dipendenti installate. Per eseguire l'aggiornamento alla versione più recente, avviare az upgrade.
Creare un'app con connettività a Foundry Tools
Creare un gruppo di risorse per contenere tutte le risorse:
# Save resource group name as variable for convenience groupName=myKVResourceGroup region=westeurope az group create --name $groupName --location $regionCreare una risorsa per i servizi di Azure AI. Sostituire <cs-resource-name> con un nome univoco di propria scelta.
# 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 $csResourceNameNota
--sku F0crea una risorsa di livello gratuito dei servizi di Azure AI. Ogni sottoscrizione è limitata a una quota di una risorsa di livelloTextAnalyticsgratuito. Se si è già superata la quota, usare--sku Sinvece .
Configurare l'applicazione Python
Clonare il repository di esempio in locale sul computer e distribuire l'applicazione di esempio su App Service. Sostituire <app-name> con un nome univoco.
# Clone and prepare sample application
git clone https://github.com/Azure-Samples/app-service-language-detector.git
cd app-service-language-detector/python
zip -r default.zip .
# Save app name as variable for convenience
appName=<app-name>
az appservice plan create --resource-group $groupName --name $appName --sku FREE --location $region --is-linux
az webapp create --resource-group $groupName --plan $appName --name $appName --runtime "python:3.14"
az webapp config appsettings set --resource-group $groupName --name $appName --settings SCM_DO_BUILD_DURING_DEPLOYMENT=true
az webapp deploy --resource-group $groupName --name $appName --src-path ./default.zip
I comandi precedenti:
- Creare un piano di servizio app Linux
- Creare un'app Web per Python 3.14
- Configurare l'app Web per installare i pacchetti Python nella distribuzione
- Caricare il file ZIP e installare i pacchetti Python
Configurare i segreti come impostazioni dell'app
Configurare come impostazioni dell'app i segreti di Foundry Tools
CS_ACCOUNT_NAMEeCS_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"Nel browser passare all'app di distribuzione all'indirizzo
<app-name>.azurewebsites.nete provare il rilevamento della lingua con stringhe in varie lingue.
Se si esamina il codice dell'applicazione, è possibile notare che l'output di debug per il rilevamento restituisce lo stesso colore del tipo di carattere dello sfondo. È possibile vederlo provando a evidenziare lo spazio vuoto direttamente sotto il risultato.
Connettività back-end sicura
Al momento, i segreti di connessione vengono archiviati come impostazioni dell'app nel Servizio app della tua applicazione. Questo approccio protegge già i segreti di connessione dalla codebase dell'applicazione. Tuttavia, qualsiasi collaboratore che può gestire l'app può anche visualizzare le impostazioni dell'app. In questo passaggio, sposti i segreti di connessione in un Key Vault, bloccando l'accesso in modo che solo tu possa gestirlo e solo l'app del servizio possa leggerli utilizzando la sua identità gestita.
Creare un insieme di credenziali delle chiavi. Sostituire <vault-name> con un nome univoco.
# Save app name as variable for convenience vaultName=<vault-name> az keyvault create --resource-group $groupName --name $vaultName --location $region --sku standard --enable-rbac-authorizationIl parametro
--enable-rbac-authorizationimposta il controllo degli accessi in base al ruolo di Azure come modello di autorizzazione. Questa impostazione invalida per impostazione predefinita tutte le autorizzazioni dei criteri di accesso.Impostati nel ruolo Key Vault Secrets Officer per la cassetta di sicurezza.
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 $vaultResourceIdAbilita l'identità gestita assegnata dal sistema per l'app e assegnagli il ruolo [Key Vault Secrets User] RBAC per l'insieme di credenziali.
az webapp identity assign --resource-group $groupName --name $appName --scope $vaultResourceId --role "Key Vault Secrets User"Aggiungere il nome della risorsa dei servizi Azure AI e la chiave di sottoscrizione come segreti al vault e salvare i loro ID come variabili di ambiente per il passaggio successivo.
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)In precedenza, i segreti sono stati impostati come impostazioni dell'app
CS_ACCOUNT_NAMEeCS_ACCOUNT_KEY. Ora impostali come riferimenti al Key Vault.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)"Nel browser passare di nuovo a
<app-name>.azurewebsites.net. Se si ottengono i risultati del rilevamento, ci si connette all'endpoint dei servizi AI di Azure con i riferimenti a Key Vault di Azure.
Congratulazioni! La tua app si connette ora a Foundry Tools utilizzando segreti conservati nel tuo archivio chiavi, senza apportare alcuna modifica al codice dell'applicazione.
Pulire le risorse
Nei passaggi precedenti sono state create le risorse di Azure in un gruppo di risorse. Se non si prevede che queste risorse siano necessarie in futuro, eliminare il gruppo di risorse eseguendo il comando seguente nel Cloud Shell:
az group delete --name $groupName
L'esecuzione del comando può richiedere un minuto.