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
- Etkin aboneliği olan bir Azure hesabı. Ücretsiziçin hesap oluşturun.
- .NET SDK
- Bir Azure OpenAI Hizmeti kaynağı oluşturma ve dağıtma
- Bir .NET uygulaması oluşturup App Service'e dağıtın
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.
Azure portalındauygulamanızın sayfasına gidin ve Ayarlar grubuna gidin.
Kimlikseçin.
Sistem tarafından atanan sekmesinde, Durum seçeneğini Açıkolarak değiştirin ve ardından Kaydet'i seçin.
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
- Kullanıcı-ataması
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
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.
Sol gezinti bölmesinde erişim denetimi (IAM)öğesini seçin.
Ekle'yi seçin ve ardından rol ataması ekle seçin.
Rol sekmesinde Bilişsel Hizmetler OpenAI Kullanıcı rolünü seçin.
Üyeler sekmesinde yönetilen kimliği seçin.
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
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
Uygulamanızın
Program.cs
dosyasında, kullanılabilir kimlik bilgilerini bulmak ve yapılandırmak için birDefaultAzureCredential
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 } );
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));
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.
İlgili içerik
- App Service ve Azure İşlevleri için yönetilen kimlikleri kullanma
- Azure OpenAI Service için rol tabanlı erişim denetimi