Programbegäranden till de flesta Azure-tjänster måste autentiseras med nycklar eller lösenordslösa anslutningar. Utvecklare måste vara noggranna för att aldrig exponera nycklarna på en osäker plats. Alla som får åtkomst till nyckeln kan autentisera till tjänsten. Nyckellös autentisering ger bättre hanterings- och säkerhetsfördelar jämfört med kontonyckeln eftersom det inte finns någon nyckel (eller anslutningssträng) att lagra.
Nyckellösa anslutningar aktiveras med följande steg:
Konfigurera din autentisering.
Ange miljövariabler efter behov.
Använd en autentiseringstyp för Azure Identity-biblioteket för att skapa ett Azure OpenAI-klientobjekt.
Autentisering
Autentisering till Microsoft Entra-ID krävs för att använda Azure-klientbiblioteken.
Autentiseringen skiljer sig beroende på vilken miljö appen körs i:
Använd följande länk för att utforska AI-mallen Azure OpenAI Keyless Building Block. Den här mallen etablerar ett Azure OpenAI-konto med ditt användarkonto RBAC-rollbehörighet för nyckellös autentisering (Microsoft Entra) för åtkomst till OpenAI API SDK:er.
Kommentar
Den här artikeln använder en eller flera AI-appmallar som grund för exemplen och vägledningen i artikeln. Med AI-appmallar får du väl underhållna och enkla att distribuera referensimplementeringar som hjälper dig att säkerställa en högkvalitativ startpunkt för dina AI-appar.
Hitta rollen för din användning av Azure OpenAI. Beroende på hur du tänker ange den rollen behöver du antingen namnet eller ID:t.
Rollnamn
Roll-ID
För Azure CLI eller Azure PowerShell kan du använda rollnamn.
För Bicep behöver du roll-ID:t.
Använd följande tabell för att välja en roll och ett ID.
Användningsfall
Rollnamn
Roll-ID
Assistenter
Cognitive Services OpenAI Contributor
a001fd3d-188f-4b5d-821b-7da978bf7442
Chatten har slutförts
Cognitive Services OpenAI User
5e0bd9bd-7b93-4f28-af87-19fc36ad61bd
Välj en identitetstyp som ska användas.
Personlig identitet: Det här är din personliga identitet som är kopplad till inloggningen till Azure.
Hanterad identitet: Det här är en identitet som hanteras av och skapas för användning i Azure. Skapa en användartilldelad hanterad identitet för hanterad identitet. När du skapar den hanterade identiteten Client IDbehöver du , även kallat app ID.
Använd något av följande kommandon för att hitta din personliga identitet. Använd ID:t som <identity-id> i nästa steg.
Använd följande kommando för lokal utveckling för att hämta ditt eget identitets-ID. Du måste logga in med az login innan du använder det här kommandot.
az ad signed-in-user show \
--query id -o tsv
Använd följande kommando för lokal utveckling för att hämta ditt eget identitets-ID. Du måste logga in med Connect-AzAccount innan du använder det här kommandot.
När du använder Bicep som distribuerats med Azure Developer CLI anges identiteten för den person eller tjänst som kör distributionen till parametern principalId .
Följande main.parameters.json variabel är inställd på den identitet som kör processen.
För användning i Azure anger du en användartilldelad hanterad identitet som en del av Bicep-distributionsprocessen. Skapa en användartilldelad hanterad identitet separat från den identitet som kör processen.
Om du vill ge din identitet behörighet till resursen via RBAC tilldelar du en roll med hjälp av Azure CLI-kommandot az role assignment create.
az role assignment create \
--role "Cognitive Services OpenAI User" \
--assignee "<identity-id>" \
--scope "/subscriptions/<subscription-id>/resourceGroups/<resource-group-name>"
Om du vill ge ditt program behörighet till din Azure OpenAI-resurs via RBAC tilldelar du en roll med hjälp av Azure PowerShell-cmdleten New-AzRoleAssignment.
Använd följande Azure OpenAI Bicep-mall för att skapa resursen och ange autentiseringen identityIdför . Bicep kräver roll-ID: t. Det name som visas i det här Bicep-kodfragmentet är inte Azure-rollen. Det är specifikt för Bicep-distributionen.
using Azure;
using Azure.AI.OpenAI;
using Azure.Identity;
using System;
using static System.Environment;
string endpoint = GetEnvironmentVariable("AZURE_OPENAI_ENDPOINT");
OpenAIClient client = new(new Uri(endpoint), new DefaultAzureCredential());