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.
Le richieste dell'applicazione ai servizi di intelligenza artificiale di Azure devono essere autenticate. In questo articolo vengono esaminate le opzioni disponibili per l'autenticazione in Azure OpenAI e in altri servizi di intelligenza artificiale con .NET. La maggior parte dei servizi di intelligenza artificiale offre due modi principali per autenticare app e utenti:
- L'autenticazione basata su chiave fornisce l'accesso a un servizio di Azure usando i valori della chiave privata. Questi valori segreti sono talvolta noti come chiavi API o chiavi di accesso a seconda del servizio.
- Microsoft Entra ID offre una soluzione completa di gestione delle identità e degli accessi per garantire che le identità corrette abbiano il livello di accesso corretto alle diverse risorse di Azure.
Le sezioni successive forniscono panoramiche concettuali per questi due approcci, anziché passaggi dettagliati per l'implementazione. Per informazioni più dettagliate sulla connessione ai servizi di Azure, vedere le risorse seguenti:
- Autenticare le app .NET nei servizi di Azure
- Nozioni fondamentali sulle identità
- Che cos'è il controllo degli accessi in base al ruolo di Azure?
Nota
Gli esempi in questo articolo si concentrano principalmente sulle connessioni ad Azure OpenAI, ma gli stessi concetti e procedure di implementazione si applicano direttamente a molti altri servizi di Intelligenza artificiale di Azure.
Autenticazione tramite chiavi
Le chiavi di accesso consentono alle app e agli strumenti di eseguire l'autenticazione in un servizio di intelligenza artificiale di Azure, ad esempio Azure OpenAI, usando una chiave privata fornita dal servizio. Recuperare la chiave privata usando strumenti come il portale di Azure o l'interfaccia della riga di comando di Azure e usarla per configurare il codice dell'app per connettersi al servizio di intelligenza artificiale:
builder.Services.AddAzureOpenAIChatCompletion(
"deployment-model",
"service-endpoint",
"service-key"); // Secret key
var kernel = builder.Build();
L'uso delle chiavi è un'opzione semplice, ma questo approccio deve essere usato con cautela. Le chiavi non sono l'opzione di autenticazione consigliata perché:
- Non seguire il principio dei privilegi minimi. Forniscono autorizzazioni elevate indipendentemente da chi le usa o per quale attività.
- Può essere accidentalmente incluso nel controllo del codice sorgente o archiviato in posizioni non sicure.
- Può essere facilmente condiviso con o inviato a parti che non devono avere accesso.
- Spesso richiedono amministrazione e rotazione manuali.
Prendere invece in considerazione l'uso di Microsoft Entra ID per l'autenticazione, che è la soluzione consigliata per la maggior parte degli scenari.
Autenticazione con Microsoft Entra ID
Microsoft Entra ID è un servizio di gestione delle identità e degli accessi basato sul cloud che offre un ampio set di funzionalità per diversi scenari aziendali e di app. Microsoft Entra ID è la soluzione consigliata per connettersi ad Azure OpenAI e ad altri servizi di intelligenza artificiale e offre i vantaggi seguenti:
- Autenticazione senza chiave tramite identità .
- Controllo degli accessi basato sui ruoli per assegnare alle identità le autorizzazioni minime necessarie.
- Può usare la libreria client
Azure.Identityper rilevare credenziali diverse negli ambienti senza richiedere modifiche al codice. - Gestisce automaticamente le attività di manutenzione amministrativa, ad esempio la rotazione delle chiavi sottostanti.
Il flusso di lavoro per implementare l'autenticazione di Microsoft Entra nell'app include in genere i passaggi seguenti:
Sviluppo locale:
- Accedere ad Azure usando uno strumento di sviluppo locale, ad esempio l'interfaccia della riga di comando di Azure o Visual Studio.
- Configurare il codice per utilizzare la libreria client
Azure.Identitye la classeDefaultAzureCredential. - Assegna i ruoli di Azure all'account con cui hai effettuato l'accesso per abilitare l'accesso al servizio di intelligenza artificiale.
App ospitata in Azure:
- Distribuire l'app in Azure dopo averla configurata per l'autenticazione usando la libreria client
Azure.Identity. - Assegnare un'identità gestita all'app ospitata in Azure.
- Assegnare i ruoli di Azure all'identità gestita per abilitare l'accesso al servizio di intelligenza artificiale.
- Distribuire l'app in Azure dopo averla configurata per l'autenticazione usando la libreria client
I concetti chiave di questo flusso di lavoro vengono esaminati nelle sezioni seguenti.
Eseguire l'autenticazione in Azure in locale
Quando si sviluppano app in locale che si connettono ai servizi di intelligenza artificiale di Azure, eseguire l'autenticazione ad Azure usando uno strumento come Visual Studio o l'interfaccia della riga di comando di Azure. Le credenziali locali possono essere individuate dalla libreria client Azure.Identity e usate per autenticare l'app nei servizi di Azure, come descritto nella sezione Configurare il codice dell'app.
Ad esempio, per eseguire l'autenticazione in Azure in locale usando l'interfaccia della riga di comando di Azure, eseguire il comando seguente:
az login
Configurare il codice dell'app
Usare la libreria client Azure.Identity di Azure SDK per implementare l'autenticazione di Microsoft Entra nel codice. Le librerie Azure.Identity includono la classe DefaultAzureCredential, che individua automaticamente le credenziali di Azure disponibili in base all'ambiente corrente e agli strumenti disponibili. Per il set completo di credenziali dell'ambiente supportate e l'ordine di ricerca, vedere la documentazione di Azure SDK per .NET .
Ad esempio, configurare Azure OpenAI per autenticare usando il codice seguente DefaultAzureCredential.
AzureOpenAIClient azureClient =
new(
new Uri(endpoint),
new DefaultAzureCredential(new DefaultAzureCredentialOptions()
{ TenantId = tenantId }
)
);
DefaultAzureCredential consente alle app di essere promosse dallo sviluppo locale alla produzione senza modifiche al codice. Durante lo sviluppo, ad esempio, DefaultAzureCredential usa le credenziali utente locali da Visual Studio o dall'interfaccia della riga di comando di Azure per eseguire l'autenticazione al servizio di intelligenza artificiale. Quando l'app viene distribuita in Azure, DefaultAzureCredential usa l'identità gestita assegnata all'app.
Assegnare ruoli all'identità
Il controllo degli accessi in base al ruolo di Azure è un sistema che offre una gestione degli accessi con granularità fine delle risorse di Azure. Assegnare un ruolo all'entità di sicurezza usata da DefaultAzureCredential per connettersi a un servizio di intelligenza artificiale di Azure, indipendentemente dal fatto che si tratti di un singolo utente, gruppo, entità servizio o identità gestita. I ruoli di Azure sono una raccolta di autorizzazioni che consentono all'identità di eseguire varie attività, ad esempio generare completamenti o creare ed eliminare risorse.
Assegna ruoli come Cognitive Services OpenAI User (ID ruolo: 5e0bd9bd-7b93-4f28-af87-19fc36ad61bd) all'identità pertinente utilizzando strumenti quali Azure CLI, Bicep o il portale di Azure. Ad esempio, usare il comando az role assignment create per assegnare un ruolo usando l'interfaccia della riga di comando di Azure:
az role assignment create \
--role "5e0bd9bd-7b93-4f28-af87-19fc36ad61bd" \
--assignee-object-id "$PRINCIPAL_ID" \
--scope /subscriptions/"$SUBSCRIPTION_ID"/resourceGroups/"$RESOURCE_GROUP" \
--assignee-principal-type User
Scopri di più su Azure RBAC utilizzando le risorse seguenti:
- Che cos'è il controllo degli accessi in base al ruolo di Azure?
- Concedere a un utente l'accesso
- Migliori pratiche di RBAC (Controllo degli accessi in base al ruolo)
Assegnare un'identità gestita all'app
Nella maggior parte degli scenari, le app ospitate in Azure devono usare un'identità gestita per connettersi ad altri servizi, ad esempio Azure OpenAI. Le identità gestite forniscono un'identità completamente gestita in Microsoft Entra ID per le app da usare per la connessione alle risorse che supportano l'autenticazione di Microsoft Entra.
DefaultAzureCredential individua l'identità associata all'app e la usa per eseguire l'autenticazione ad altri servizi di Azure.
Esistono due tipi di identità gestite che è possibile assegnare all'app:
- Un'identità assegnata dal sistema viene associata all'applicazione e viene eliminata in caso di eliminazione dell'app. A un'app può essere associata una sola identità assegnata dal sistema.
- Un'identità assegnata dall'utente è una risorsa di Azure autonoma che può essere assegnata all'app. Un'app può avere più identità assegnate dall'utente.
Assegnare ruoli a un'identità gestita esattamente come si farebbe con un singolo account utente, ad esempio il ruolo Utente OpenAI di Servizi cognitivi. Altre informazioni sull'uso delle identità gestite con le risorse seguenti: