Sdílet prostřednictvím


Ověřování a autorizace služby App Service pro Azure OpenAI pomocí Microsoft Entra a semantické sady SDK jádra

Tento článek ukazuje, jak používat identity spravované microsoftem Entra k ověřování a autorizaci aplikace služby App Service pro prostředek Azure OpenAI.

Tento článek také ukazuje, jak pomocí sady SDK semantického jádra snadno implementovat ověřování Microsoft Entra ve vaší aplikaci .NET.

Pomocí spravované identity z Microsoft Entra může vaše aplikace App Service snadno přistupovat k chráněným prostředkům Azure OpenAI bez nutnosti ručního zřizování nebo obměně tajných kódů.

Požadavky

Přidání spravované identity do služby App Service

Vaší aplikaci je možné udělit dva typy identit:

  • Identita přiřazená systémem je svázaná s vaší aplikací a při odstranění aplikace se odstraní. Aplikace může mít pouze jednu identitu přiřazenou systémem.
  • Identita přiřazená uživatelem je samostatný prostředek Azure, který je možné přiřadit k vaší aplikaci. Aplikace může mít více identit přiřazených uživatelem.

Přidání identity přiřazené systémem

  1. Na webu Azure Portal přejděte na stránku aplikace a posuňte se dolů ke skupině Nastavení.
  2. Vyberte Identita.
  3. Na kartě Přiřazený systém přepněte stav na Zapnuto a pak vyberte Uložit.

Spuštěním az webapp identity assign příkazu vytvořte identitu přiřazenou systémem:

az webapp identity assign --name <appName> --resource-group <groupName>

Přidání identity přiřazené uživatelem

Pokud chcete do aplikace přidat identitu přiřazenou uživatelem, vytvořte identitu a pak do konfigurace aplikace přidejte její identifikátor prostředku.

  1. Podle těchto pokynů vytvořte prostředek spravované identity přiřazené uživatelem.

  2. V levém navigačním podokně stránky aplikace se posuňte dolů ke skupině Nastavení.

  3. Vyberte Identita.

  4. Vyberte Přidat přiřazený>uživatelem.

  5. Vyhledejte identitu, kterou jste vytvořili dříve, vyberte ji a pak vyberte Přidat.

    Důležité

    Po výběru možnosti Přidat se aplikace restartuje.

  1. Vytvořte identitu přiřazenou uživatelem:

    az identity create --resource-group <groupName> --name <identityName>
    
  2. Přiřaďte identitu k aplikaci:

    az webapp identity assign --resource-group <groupName> --name <appName> --identities <identityId>
    

Přidání role uživatele Azure OpenAI do spravované identity

  1. Na webu Azure Portal přejděte do oboru, ke kterému chcete udělit přístup Azure OpenAI . Oborem může být skupina pro správu, předplatné, skupina prostředků nebo konkrétní prostředek Azure OpenAI .
  2. V levém navigačním podokně vyberte Řízení přístupu (IAM).
  3. Vyberte Přidat a pak vyberte Přidat přiřazení role.
  4. Na kartě Role vyberte roli uživatele OpenAI služeb Cognitive Services.
  5. Na kartě Členové vyberte spravovanou identitu.
  6. Na kartě Zkontrolovat a přiřadit vyberte možnost Zkontrolovat a přiřadit a přiřaďte roli.

Rozsah prostředků

az role assignment create --assignee "<managedIdentityObjectID>" \
--role "Cognitive Services OpenAI User" \
--scope "/subscriptions/<subscriptionId>/resourcegroups/<resourceGroupName>/providers/<providerName>/<resourceType>/<resourceSubType>/<resourceName>"

Rozsah skupiny prostředků

az role assignment create --assignee "<managedIdentityObjectID>" \
--role "Cognitive Services OpenAI User" \
--scope "/subscriptions/<subscriptionId>/resourcegroups/<resourceGroupName>"

Rozsah předplatného

az role assignment create --assignee "<managedIdentityObjectID>" \
--role "Cognitive Services OpenAI User" \
--scope "/subscriptions/<subscriptionId>"

Rozsah skupiny pro správu

az role assignment create --assignee "<managedIdentityObjectID>" \
--role "Cognitive Services OpenAI User" \
--scope "/providers/Microsoft.Management/managementGroups/<managementGroupName>"

Implementace ověřování založeného na tokenech pomocí semantické sady SDK jádra

  1. Inicializace objektu DefaultAzureCredential tak, aby předpokládala spravovanou identitu vaší aplikace:

    // Initialize a DefaultAzureCredential.
    // This credential type will try several authentication flows in order until one is available.
    // Will pickup Visual Studio or Azure CLI credentials in local environments.
    // Will pickup managed identity credentials in production deployments.
    TokenCredential credentials = new DefaultAzureCredential(
        new DefaultAzureCredentialOptions
        {
            // If using a user-assigned identity specify either:
            // ManagedIdentityClientId or ManagedIdentityResourceId.
            // e.g.: ManagedIdentityClientId = "myIdentityClientId".
        }
    );
    
  2. Kernel Vytvořte objekt, který zahrnuje službu dokončování chatu Azure OpenAI, a použijte dříve vytvořené přihlašovací údaje:

    // Retrieve the endpoint and deployment obtained from the Azure OpenAI deployment.
    // Must use the deployment name not the underlying model name.
    IConfigurationRoot config = new ConfigurationBuilder().AddUserSecrets<Program>().Build();
    string endpoint = config["AZURE_OPENAI_ENDPOINT"]!;
    string deployment = config["AZURE_OPENAI_GPT_NAME"]!;
    
    // Build a Kernel that includes the Azure OpenAI Chat Completion Service.
    // Include the previously created token credential.
    Kernel kernel = Kernel
        .CreateBuilder()
        .AddAzureOpenAIChatCompletion(deployment, endpoint, credentials)
        .Build();
    
  3. Pomocí objektu Kernel můžete vyvolat dokončování výzvy prostřednictvím Azure OpenAI:

    // Use the Kernel to invoke prompt completion through Azure OpenAI.
    // The Kernel response will be null if the model can't be reached.
    string? result = await kernel.InvokePromptAsync<string>("Please list three Azure services");
    Console.WriteLine($"Output: {result}");
    
    // Continue sending and receiving messages between the user and AI.
    // ...