Dela via


Autentisering och auktorisering för Azure AI-tjänster med hjälp av .NET

Programbegäranden till Azure AI Services måste autentiseras. I den här artikeln utforskar du de alternativ som är tillgängliga för att autentisera till Azure OpenAI och andra AI-tjänster med hjälp av .NET. Dessa begrepp gäller för Semantic Kernel SDK och SDK:er från specifika tjänster som Azure OpenAI. De flesta AI-tjänster erbjuder två huvudsakliga sätt att autentisera appar och användare:

  • Nyckelbaserad autentisering ger åtkomst till en Azure-tjänst med hjälp av hemliga nyckelvärden. Dessa hemliga värden kallas ibland API-nycklar eller åtkomstnycklar beroende på tjänsten.
  • Microsoft Entra ID tillhandahåller en omfattande lösning för identitets- och åtkomsthantering för att säkerställa att rätt identiteter har rätt åtkomstnivå till olika Azure-resurser.

Avsnitten framåt innehåller konceptuella översikter för dessa två metoder i stället för detaljerade implementeringssteg. Mer detaljerad information om hur du ansluter till Azure-tjänster finns i följande resurser:

Kommentar

Exemplen i den här artikeln fokuserar främst på anslutningar till Azure OpenAI, men samma begrepp och implementeringssteg gäller även direkt för många andra Azure AI-tjänster.

Autentisering med nycklar

Med åtkomstnycklar kan appar och verktyg autentisera till en Azure AI-tjänst, till exempel Azure OpenAI, med hjälp av en hemlig nyckel som tillhandahålls av tjänsten. Hämta den hemliga nyckeln med hjälp av verktyg som Azure Portal eller Azure CLI och använd den för att konfigurera din appkod för att ansluta till AI-tjänsten:

builder.Services.AddAzureOpenAIChatCompletion(
    "deployment-model",
    "service-endpoint",
    "service-key"); // Secret key
var kernel = builder.Build();

Att använda nycklar är ett enkelt alternativ, men den här metoden bör användas med försiktighet. Nycklar är inte det rekommenderade autentiseringsalternativet eftersom de:

  • Följ inte principen om lägsta behörighet – de ger utökade behörigheter oavsett vem som använder dem eller för vilken uppgift.
  • Kan av misstag checkas in i källkontrollen eller lagras på osäkra platser.
  • Kan enkelt delas med eller skickas till parter som inte ska ha åtkomst.
  • Kräver ofta manuell administration och rotation.

Överväg i stället att använda Microsoft Entra-ID för autentisering, vilket är den rekommenderade lösningen för de flesta scenarier.

Autentisering med Microsoft Entra-ID

Microsoft Entra ID är en molnbaserad identitets- och åtkomsthanteringstjänst som tillhandahåller en omfattande uppsättning funktioner för olika affärs- och appscenarier. Microsoft Entra-ID är den rekommenderade lösningen för att ansluta till Azure OpenAI och andra AI-tjänster och ger följande fördelar:

  • Nyckellös autentisering med hjälp av identiteter.
  • Rollbaserad åtkomstkontroll (RBAC) för att tilldela identiteter den lägsta behörighet som krävs.
  • Kan använda Azure.Identity klientbiblioteket för att identifiera olika autentiseringsuppgifter i miljöer utan att kräva kodändringar.
  • Hanterar automatiskt administrativa underhållsaktiviteter, till exempel roterande underliggande nycklar.

Arbetsflödet för att implementera Microsoft Entra-autentisering i din app innehåller vanligtvis följande:

  • Lokal utveckling:

    1. Logga in på Azure med hjälp av ett lokalt utvecklingsverktyg som Azure CLI eller Visual Studio.
    2. Konfigurera koden så att den Azure.Identity använder klientbiblioteket och DefaultAzureCredential -klassen.
    3. Tilldela Azure-roller till det konto som du loggade in med för att aktivera åtkomst till AI-tjänsten.
  • Azure-värdbaserad app:

    1. Distribuera appen till Azure när du har konfigurerat den för att autentisera med hjälp av Azure.Identity klientbiblioteket.
    2. Tilldela en hanterad identitet till den Azure-värdbaserade appen.
    3. Tilldela Azure-roller till den hanterade identiteten för att ge åtkomst till AI-tjänsten.

De viktigaste begreppen i det här arbetsflödet utforskas i följande avsnitt.

Autentisera till Azure lokalt

När du utvecklar appar lokalt som ansluter till Azure AI-tjänster autentiserar du till Azure med hjälp av ett verktyg som Visual Studio eller Azure CLI. Dina lokala autentiseringsuppgifter kan identifieras av klientbiblioteket och användas för att autentisera Azure.Identity din app till Azure-tjänster, enligt beskrivningen i avsnittet Konfigurera appkoden .

Om du till exempel vill autentisera till Azure lokalt med hjälp av Azure CLI kör du följande kommando:

az login

Konfigurera appkoden

Azure.Identity Använd klientbiblioteket från Azure SDK för att implementera Microsoft Entra-autentisering i din kod. Biblioteken Azure.Identity DefaultAzureCredential innehåller klassen som automatiskt identifierar tillgängliga Azure-autentiseringsuppgifter baserat på den aktuella miljön och tillgängliga verktyg. Besök Azure SDK för .NET-dokumentationen för den fullständiga uppsättningen miljöautentiseringsuppgifter som stöds och i vilken ordning de genomsöks.

Konfigurera till exempel semantisk kernel för att autentisera med hjälp av DefaultAzureCredential följande kod:

Kernel kernel = Kernel
    .CreateBuilder()
    .AddAzureOpenAITextGeneration(
        "your-model",
        "your-endpoint",
        new DefaultAzureCredential())
    .Build();

DefaultAzureCredential gör att appar kan höjas upp från lokal utveckling till produktion utan kodändringar. Under utvecklingen DefaultAzureCredential använder du till exempel dina lokala autentiseringsuppgifter från Visual Studio eller Azure CLI för att autentisera till AI-tjänsten. När appen distribueras till Azure DefaultAzureCredential använder du den hanterade identitet som är tilldelad till din app.

Tilldela roller till din identitet

Rollbaserad åtkomstkontroll i Azure (Azure RBAC) är ett system som ger detaljerad åtkomsthantering av Azure-resurser. Tilldela en roll till säkerhetsobjektet som används av DefaultAzureCredential för att ansluta till en Azure AI-tjänst, oavsett om det är en enskild användare, grupp, tjänstens huvudnamn eller hanterad identitet. Azure-roller är en samling behörigheter som gör att identiteten kan utföra olika uppgifter, till exempel generera slutföranden eller skapa och ta bort resurser.

Tilldela roller som Cognitive Services OpenAI-användare (roll-ID: 5e0bd9bd-7b93-4f28-af87-19fc36ad61bd) till relevant identitet med hjälp av verktyg som Azure CLI, Bicep eller Azure Portal. Använd till exempel az role assignment create kommandot för att tilldela en roll med hjälp av Azure CLI:

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

Läs mer om Azure RBAC med hjälp av följande resurser:

Tilldela en hanterad identitet till din app

I de flesta scenarier bör Azure-värdbaserade appar använda en hanterad identitet för att ansluta till andra tjänster, till exempel Azure OpenAI. Hanterade identiteter tillhandahåller en fullständigt hanterad identitet i Microsoft Entra-ID som appar kan använda när de ansluter till resurser som stöder Microsoft Entra-autentisering. DefaultAzureCredential identifierar identiteten som är associerad med din app och använder den för att autentisera till andra Azure-tjänster.

Det finns två typer av hanterade identiteter som du kan tilldela till din app:

  • En systemtilldelad identitet är kopplad till ditt program och tas bort om appen tas bort. En app kan bara ha en systemtilldelad identitet.
  • En användartilldelad identitet är en fristående Azure-resurs som kan tilldelas till din app. En app kan ha flera användartilldelade identiteter.

Tilldela roller till en hanterad identitet precis som ett enskilt användarkonto, till exempel Cognitive Services OpenAI-användarrollen. läs mer om att arbeta med hanterade identiteter med hjälp av följande resurser: