Aracılığıyla paylaş


Microsoft Entra Id kullanarak Azure'da barındırılan bir uygulamadan Azure OpenAI'de kimlik doğrulaması

Bu makalede, Azure'da barındırılan bir uygulamanın kimliğini Azure OpenAI kaynağında doğrulamak için Microsoft Entra ID yönetilen kimlik ve Microsoft.Extensions.AI kitaplığı nasıl kullanılacağı gösterilmektedir.

Microsoft Entra Id'den yönetilen kimlik, uygulamanızın Azure OpenAI gibi diğer Microsoft Entra korumalı kaynaklara kolayca erişmesini sağlar. Kimlik Azure platformu tarafından yönetilir ve gizli bilgileri temin etmenize, yönetmenize veya döndürmenize gerek yoktur.

Önkoşullar

App Service'e yönetilen kimlik ekleme

Yönetilen kimlikler, Microsoft Entra kimlik doğrulamasını destekleyen kaynaklara bağlanırken uygulamaların kullanması için Microsoft Entra Id'de otomatik olarak yönetilen bir kimlik sağlar. Uygulamalar, kimlik bilgilerini yönetmek zorunda kalmadan Microsoft Entra belirteçlerini almak için yönetilen kimlikleri kullanabilir. Uygulamanıza iki tür kimlik atanabilir:

  • Sistem tarafından atanan kimliği, uygulamanıza bağlanır ve uygulamanız silinirse silinir. Bir uygulama yalnızca bir sistem tarafından atanan kimliğe sahip olabilir.
  • kullanıcı tarafından atanan kimlik, uygulamanıza atanabilen tek başına bir Azure kaynağıdır. Bir uygulamanın kullanıcı tarafından atanan birden çok kimliği olabilir.
  1. Azure portalındauygulamanızın sayfasına gidin ve Ayarlar grubuna gidin.

  2. Kimlikseçin.

  3. Sistem tarafından atanan sekmesinde, Durum seçeneğini Açıkolarak değiştirin ve ardından Kaydet'i seçin.

    Bir uygulamaya sistem tarafından atanan yönetilen kimliğin nasıl ekleneceğini gösteren ekran görüntüsü.

    Not

    Önceki ekran görüntüsünde bir Azure App Service'te bu işlem gösterilmektedir, ancak adımlar Azure Container Apps gibi diğer konaklarda da benzerdir.

Sistem tarafından atanan bir kimlik oluşturmak için az webapp identity assign komutunu çalıştırın:

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

Kimliğe Azure OpenAI kullanıcı rolü ekleme

  1. Azure Portal'da, Azure OpenAI erişimi vermek istediğiniz kapsama gidin. Kapsam, Yönetim grubu, Abonelik, Kaynak grubuveya belirli bir Azure OpenAI kaynağı olabilir.

  2. Sol gezinti bölmesinde erişim denetimi (IAM)öğesini seçin.

  3. Ekle'yi seçin ve ardından rol ataması ekle seçin.

    RBAC rolünün nasıl ekleneceğini gösteren ekran görüntüsü.

  4. Rol sekmesinde Bilişsel Hizmetler OpenAI Kullanıcı rolünü seçin.

  5. Üyeler sekmesinde yönetilen kimliği seçin.

  6. Gözden Geçir + Ata sekmesinde, rolü atamak için Gözden Geçir + Ata'ü seçin.

Farklı kapsamlarda yönetilen kimliğinize Bilişsel Hizmetler OpenAI Kullanıcı rolünü atamak için Azure CLI'yı kullanabilirsiniz.

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

Uygulama kodunuzda kimlik doğrulaması uygulama

  1. Aşağıdaki NuGet paketlerini uygulamanıza ekleyin:

    dotnet add package Azure.Identity
    dotnet add package Azure.AI.OpenAI
    dotnet add package Microsoft.Extensions.Azure
    dotnet add package Microsoft.Extensions.AI
    dotnet add package Microsoft.Extensions.AI.OpenAI
    

    Yukarıdaki paketlerin her birinde bu senaryoyla ilgili aşağıdaki endişeler ele alınır:

    • Azure.Identity: Microsoft Entra ID ile çalışmak için temel işlevsellik sağlar
    • Azure.AI.OpenAI: Uygulamanızın Azure OpenAI hizmetiyle arabirim oluşturmasını sağlar
    • Microsoft.Extensions.Azure: Bağımlılık ekleme için hizmetleri kaydetmek için yardımcı uzantılar sağlar
    • Microsoft.Extensions.AI: Yaygın yapay zeka görevleri için yapay zeka soyutlamaları sağlar
    • Microsoft.Extensions.AI.OpenAI: OpenAI hizmet türlerini Microsoft.Extensions.AI tarafından sağlanan yapay zeka soyutlamaları olarak kullanmanızı sağlar
  2. Uygulamanızın Program.cs dosyasında, kullanılabilir kimlik bilgilerini bulmak ve yapılandırmak için bir DefaultAzureCredential nesnesi oluşturun:

    // For example, will discover Visual Studio or Azure CLI credentials
    // in local environments and managed identity credentials in production deployments
    var credential = new DefaultAzureCredential(
        new DefaultAzureCredentialOptions
        {
            // If necessary, specify the tenant ID,
            // user-assigned identity client or resource ID, or other options
        }
    );
    
  3. Bir yapay zeka hizmeti oluşturun ve bunu hizmet koleksiyonuna kaydedin:

    string endpoint = builder.Configuration["AZURE_OPENAI_ENDPOINT"];
    string deployment = builder.Configuration["AZURE_OPENAI_GPT_NAME"];
    
    builder.Services.AddChatClient(
        new AzureOpenAIClient(new Uri(endpoint), credential)
        .AsChatClient(deployment));
    
  4. Uç noktalarınızda kullanmak üzere kayıtlı hizmeti ekleme:

    app.MapGet("/test-prompt", async (IChatClient chatClient) =>
    {
        return await chatClient.GetResponseAsync("Test prompt", new ChatOptions());
    })
    .WithName("Test prompt");
    

    Bahşiş

    ASP.NET Core bağımlılık enjeksiyonu ve .NET için Azure SDK'da diğer yapay zeka hizmet türlerini nasıl kaydedeceğinizi öğrenin. Ayrıca, bağımlılık enjeksiyonu belgeleri hakkında daha fazla bilgi edinin.