Delen via


Azure OpenAI zonder sleutels gebruiken

Toepassingsaanvragen voor de meeste Azure-services moeten worden geverifieerd met sleutels of verbindingen zonder wachtwoord. Ontwikkelaars moeten ijverig zijn om de sleutels nooit beschikbaar te maken op een onbeveiligde locatie. Iedereen die toegang krijgt tot de sleutel, kan zich verifiëren bij de service. Sleutelloze verificatie biedt verbeterde beheer- en beveiligingsvoordelen ten opzichte van de accountsleutel, omdat er geen sleutel (of verbindingsreeks) is om op te slaan.

Sleutelloze verbindingen zijn ingeschakeld met de volgende stappen:

  • Configureer uw verificatie.
  • Stel indien nodig omgevingsvariabelen in.
  • Gebruik een referentietype voor de Azure Identity-bibliotheek om een Azure OpenAI-clientobject te maken.

Verificatie

Verificatie voor Microsoft Entra-id is vereist voor het gebruik van de Azure-clientbibliotheken.

Verificatie verschilt op basis van de omgeving waarin de app wordt uitgevoerd:

Sleutelloze bouwsteen van Azure OpenAI

Gebruik de volgende koppeling om de Azure OpenAI Keyless Building Block AI-sjabloon te verkennen. Deze sjabloon richt een Azure OpenAI-account in met de RBAC-rolmachtiging voor uw gebruikersaccount voor sleutelloze verificatie (Microsoft Entra) voor toegang tot de OpenAI API SDK's.

Notitie

In dit artikel worden een of meer AI-app-sjablonen gebruikt als basis voor de voorbeelden en richtlijnen in het artikel. AI-app-sjablonen bieden u een goed onderhouden, eenvoudig te implementeren referentie-implementaties die u helpen een startpunt van hoge kwaliteit voor uw AI-apps te garanderen.

Verifiëren voor lokale ontwikkeling

Selecteer een hulpprogramma voor verificatie tijdens lokale ontwikkeling.

Verifiëren voor door Azure gehoste omgevingen

Meer informatie over het beheren van de DefaultAzureCredential voor toepassingen die zijn geïmplementeerd in Azure.

Rollen configureren voor autorisatie

  1. Zoek de rol voor uw gebruik van Azure OpenAI. Afhankelijk van hoe u die rol wilt instellen, hebt u de naam of id nodig.

    Rolnaam Rol-id
    Voor Azure CLI of Azure PowerShell kunt u de rolnaam gebruiken. Voor Bicep hebt u de rol-id nodig.
  2. Gebruik de volgende tabel om een rol en id te selecteren.

    Gebruiksscenario Rolnaam Rol-id
    Assistenten Cognitive Services OpenAI Contributor a001fd3d-188f-4b5d-821b-7da978bf7442
    Chatvoltooiingen Cognitive Services OpenAI User 5e0bd9bd-7b93-4f28-af87-19fc36ad61bd
  3. Selecteer een identiteitstype dat u wilt gebruiken.

    • Persoonlijke identiteit: dit is uw persoonlijke identiteit die is gekoppeld aan uw aanmelding bij Azure.
    • Beheerde identiteit: dit is een identiteit die wordt beheerd door en gemaakt voor gebruik in Azure. Maak voor een beheerde identiteit een door de gebruiker toegewezen beheerde identiteit. Wanneer u de beheerde identiteit maakt, hebt u de Client ID, ook wel bekend als de app ID.
  4. Gebruik een van de volgende opdrachten om uw persoonlijke identiteit te vinden. Gebruik de id als in <identity-id> de volgende stap.

    Gebruik de volgende opdracht om uw eigen identiteits-id op te halen voor lokale ontwikkeling. U moet zich aanmelden voordat az login u deze opdracht gebruikt.

    az ad signed-in-user show \
        --query id -o tsv
    
  5. Wijs de RBAC-rol (op rollen gebaseerd toegangsbeheer) toe aan de identiteit voor de resourcegroep.

    Als u uw identiteitsmachtigingen wilt verlenen aan uw resource via RBAC, wijst u een rol toe met behulp van de Azure CLI-opdracht az role assignment create.

    az role assignment create \
        --role "Cognitive Services OpenAI User" \
        --assignee "<identity-id>" \
        --scope "/subscriptions/<subscription-id>/resourceGroups/<resource-group-name>"
    

    Vervang, vervang <identity-id>, <subscription-id>en <resource-group-name> door uw werkelijke waarden, indien van toepassing.

Omgevingsvariabelen configureren

Als u verbinding wilt maken met Azure OpenAI, moet uw code uw resource-eindpunt kennen en mogelijk andere omgevingsvariabelen nodig hebben.

  1. Maak een omgevingsvariabele voor uw Azure OpenAI-eindpunt.

    • AZURE_OPENAI_ENDPOINT: Deze URL is het toegangspunt voor uw Azure OpenAI-resource.
  2. Maak omgevingsvariabelen op basis van de locatie waarop uw app wordt uitgevoerd:

    Locatie Identiteit Beschrijving
    Lokaal Persoonlijk Voor lokale runtimes met uw persoonlijke identiteit meldt u zich aan om uw referenties te maken met een hulpprogramma.
    Azure-cloud Door de gebruiker toegewezen beheerde identiteit Maak een AZURE_CLIENT_ID omgevingsvariabele met de client-id van de door de gebruiker toegewezen beheerde identiteit om te verifiëren als.

Azure Identity-clientbibliotheek installeren

Gebruik de volgende koppeling om de Azure Identity-clientbibliotheek te installeren.

Installeer de .NET Azure Identity-clientbibliotheek:

dotnet add package Azure.Identity

DefaultAzureCredential gebruiken

Met de Azure Identity-bibliotheek DefaultAzureCredential kan de klant dezelfde code uitvoeren in de lokale ontwikkelomgeving en in de Azure Cloud.

Zie het overzicht van DefaultAzureCredentialvoor meer informatie over DefaultAzureCredential voor .NET.

Voer een van de volgende methoden uit om de client-id van de door de gebruiker toegewezen beheerde identiteit in te stellen:

  • Stel omgevingsvariabele in AZURE_CLIENT_ID. De parameterloze constructor van DefaultAzureCredential gebruikt de waarde van deze omgevingsvariabele, indien aanwezig.

    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());
    
  • Eigenschap ManagedIdentityClientId instellen op DefaultAzureCredentialOptions:

    using Azure;
    using Azure.AI.OpenAI;
    using Azure.Identity;
    using System;
    using static System.Environment;
    
    string endpoint = GetEnvironmentVariable("AZURE_OPENAI_ENDPOINT");
    
    var credential = new DefaultAzureCredential(
        new DefaultAzureCredentialOptions
        {
            ManagedIdentityClientId = "<user_assigned_client_id>"
        });
    
    OpenAIClient client = new(new Uri(endpoint), credential);
    

Resources