Delen via


Verificatie en autorisatie van Azure AI-services met .NET

Toepassingsaanvragen voor Azure AI Services moeten worden geverifieerd. In dit artikel verkent u de beschikbare opties voor verificatie bij Azure OpenAI en andere AI-services met behulp van .NET. Deze concepten zijn van toepassing op de Semantische Kernel SDK, evenals SDK's van specifieke services zoals Azure OpenAI. De meeste AI-services bieden twee primaire manieren om apps en gebruikers te verifiëren:

  • Verificatie op basis van sleutels biedt toegang tot een Azure-service met behulp van geheime sleutelwaarden. Deze geheime waarden worden soms API-sleutels of toegangssleutels genoemd, afhankelijk van de service.
  • Microsoft Entra ID biedt een uitgebreide oplossing voor identiteits- en toegangsbeheer om ervoor te zorgen dat de juiste identiteiten het juiste toegangsniveau hebben tot verschillende Azure-resources.

De volgende secties bieden conceptuele overzichten voor deze twee benaderingen, in plaats van gedetailleerde implementatiestappen. Ga naar de volgende resources voor meer gedetailleerde informatie over het maken van verbinding met Azure-services:

Notitie

De voorbeelden in dit artikel zijn voornamelijk gericht op verbindingen met Azure OpenAI, maar dezelfde concepten en implementatiestappen zijn ook rechtstreeks van toepassing op veel andere Azure AI-services.

Verificatie met behulp van sleutels

Met toegangssleutels kunnen apps en hulpprogramma's worden geverifieerd bij een Azure AI-service, zoals Azure OpenAI, met behulp van een geheime sleutel die door de service wordt geleverd. Haal de geheime sleutel op met behulp van hulpprogramma's zoals Azure Portal of Azure CLI en gebruik deze om uw app-code te configureren om verbinding te maken met de AI-service:

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

Het gebruik van sleutels is een eenvoudige optie, maar deze benadering moet met voorzichtigheid worden gebruikt. Sleutels zijn niet de aanbevolen verificatieoptie omdat ze:

  • Volg niet het principe van minimale bevoegdheden. Ze bieden verhoogde machtigingen, ongeacht wie ze gebruikt of voor welke taak.
  • Kan per ongeluk worden ingecheckt bij broncodebeheer of worden opgeslagen op onveilige locaties.
  • Kan eenvoudig worden gedeeld met of verzonden naar partijen die geen toegang mogen hebben.
  • Vaak is handmatig beheer en rotatie vereist.

Overweeg in plaats daarvan Microsoft Entra ID te gebruiken voor verificatie. Dit is de aanbevolen oplossing voor de meeste scenario's.

Verificatie met behulp van Microsoft Entra-id

Microsoft Entra ID is een cloudservice voor identiteits- en toegangsbeheer die een uitgebreide set functies biedt voor verschillende bedrijfs- en app-scenario's. Microsoft Entra ID is de aanbevolen oplossing om verbinding te maken met Azure OpenAI en andere AI-services en biedt de volgende voordelen:

  • Sleutelloze verificatie met behulp van identiteiten.
  • Op rollen gebaseerd toegangsbeheer (RBAC) om identiteiten de minimaal vereiste machtigingen toe te wijzen.
  • Kan de Azure.Identity clientbibliotheek gebruiken om verschillende referenties in omgevingen te detecteren zonder dat er codewijzigingen nodig zijn.
  • Verwerkt automatisch beheeronderhoudstaken, zoals het roteren van onderliggende sleutels.

De werkstroom voor het implementeren van Microsoft Entra-verificatie in uw app omvat doorgaans de volgende stappen:

  • Lokale ontwikkeling:

    1. Meld u aan bij Azure met behulp van een lokaal ontwikkelprogramma, zoals de Azure CLI of Visual Studio.
    2. Configureer uw code voor het gebruik van de Azure.Identity clientbibliotheek en DefaultAzureCredential -klasse.
    3. Wijs Azure-rollen toe aan het account waarmee u zich hebt aangemeld om toegang tot de AI-service in te schakelen.
  • Door Azure gehoste app:

    1. Implementeer de app in Azure nadat u deze hebt geconfigureerd voor verificatie met behulp van de Azure.Identity clientbibliotheek.
    2. Wijs een beheerde identiteit toe aan de door Azure gehoste app.
    3. Wijs Azure-rollen toe aan de beheerde identiteit om toegang tot de AI-service mogelijk te maken.

De belangrijkste concepten van deze werkstroom worden in de volgende secties verkend.

Lokaal verifiëren bij Azure

Wanneer u apps lokaal ontwikkelt die verbinding maken met Azure AI-services, moet u zich verifiëren bij Azure met behulp van een hulpprogramma zoals Visual Studio of de Azure CLI. Uw lokale referenties kunnen worden gedetecteerd door de Azure.Identity clientbibliotheek en worden gebruikt om uw app te verifiëren bij Azure-services, zoals beschreven in de sectie App-code configureren.

Als u bijvoorbeeld lokaal wilt verifiëren bij Azure met behulp van de Azure CLI, voert u de volgende opdracht uit:

az login

De app-code configureren

Gebruik de Azure.Identity clientbibliotheek van de Azure SDK om Microsoft Entra-verificatie in uw code te implementeren. De Azure.Identity bibliotheken bevatten de DefaultAzureCredential klasse, waarmee automatisch beschikbare Azure-referenties worden gedetecteerd op basis van de huidige omgeving en hulpprogramma's die beschikbaar zijn. Ga naar de Documentatie voor Azure SDK voor .NET voor de volledige set ondersteunde omgevingsreferenties en de volgorde waarin ze worden doorzocht.

Configureer bijvoorbeeld Semantische kernel om te verifiëren met behulp van DefaultAzureCredential de volgende code:

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

DefaultAzureCredential hiermee kunnen apps worden gepromoveerd van lokale ontwikkeling naar productie zonder codewijzigingen. Tijdens de ontwikkeling DefaultAzureCredential worden bijvoorbeeld uw lokale gebruikersreferenties van Visual Studio of de Azure CLI gebruikt om te verifiëren bij de AI-service. Wanneer de app wordt geïmplementeerd in Azure, DefaultAzureCredential wordt de beheerde identiteit gebruikt die aan uw app is toegewezen.

Rollen toewijzen aan uw identiteit

Op rollen gebaseerd toegangsbeheer van Azure (Azure RBAC) is een systeem dat gedetailleerd toegangsbeheer van Azure-resources biedt. Wijs een rol toe aan de beveiligingsprincipaal die wordt DefaultAzureCredential gebruikt om verbinding te maken met een Azure AI-service, of dat nu een afzonderlijke gebruiker, groep, service-principal of beheerde identiteit is. Azure-rollen zijn een verzameling machtigingen waarmee de identiteit verschillende taken kan uitvoeren, zoals het genereren van voltooiingen of het maken en verwijderen van resources.

Wijs rollen zoals Cognitive Services OpenAI-gebruiker (rol-id: 5e0bd9bd-7b93-4f28-af87-19fc36ad61bd) toe aan de relevante identiteit met behulp van hulpprogramma's zoals de Azure CLI, Bicep of Azure Portal. Gebruik bijvoorbeeld de az role assignment create opdracht om een rol toe te wijzen met behulp van de 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

Meer informatie over Azure RBAC met behulp van de volgende resources:

Een beheerde identiteit toewijzen aan uw app

In de meeste scenario's moeten door Azure gehoste apps een beheerde identiteit gebruiken om verbinding te maken met andere services, zoals Azure OpenAI. Beheerde identiteiten bieden een volledig beheerde identiteit in Microsoft Entra ID voor apps die kunnen worden gebruikt bij het maken van verbinding met resources die ondersteuning bieden voor Microsoft Entra-verificatie. DefaultAzureCredential detecteert de identiteit die is gekoppeld aan uw app en gebruikt deze om te verifiëren bij andere Azure-services.

Er zijn twee typen beheerde identiteiten die u aan uw app kunt toewijzen:

  • Een door het systeem toegewezen identiteit is gekoppeld aan uw toepassing en wordt verwijderd als uw app wordt verwijderd. Een app kan slechts één door het systeem toegewezen identiteit hebben.
  • Een door de gebruiker toegewezen identiteit is een autonome Azure-resource die kan worden toegewezen aan uw app. Een app kan meerdere door de gebruiker toegewezen identiteiten hebben.

Wijs rollen toe aan een beheerde identiteit, net zoals u een afzonderlijk gebruikersaccount zou gebruiken, zoals de gebruikersrol Cognitive Services OpenAI. meer informatie over het werken met beheerde identiteiten met behulp van de volgende resources: