Microsoft Entra ID를 사용하여 Azure 호스팅 앱에서 Azure OpenAI에 인증
이 문서에서는 Microsoft Entra ID 관리 ID 및 Microsoft.Extensions.AI 라이브러리 사용하여 Azure OpenAI 리소스에 Azure 호스티드 앱을 인증하는 방법을 보여 줍니다.
Microsoft Entra ID의 관리 ID를 사용하면 앱이 Azure OpenAI와 같은 다른 Microsoft Entra 보호 리소스에 쉽게 액세스할 수 있습니다. ID는 Azure 플랫폼에서 관리되며 비밀을 프로비전, 관리 또는 회전할 필요가 없습니다.
필수 구성 요소
- 활성 구독이 있는 Azure 계정입니다. 무료로계정을 생성하세요.
- .NET SDK
- Azure OpenAI Service 리소스 만들기 및 배포
- App Service .NET 애플리케이션 만들기 및 배포
App Service에 관리 ID 추가
관리 ID는 Microsoft Entra 인증을 지원하는 리소스에 연결할 때 사용할 애플리케이션에 대해 Microsoft Entra ID에 자동으로 관리 ID를 제공합니다. 애플리케이션은 관리 ID를 사용하여 자격 증명을 관리할 필요 없이 Microsoft Entra 토큰을 가져올 수 있습니다. 애플리케이션에는 다음 두 가지 유형의 ID가 할당될 수 있습니다.
- 시스템 할당 ID은 애플리케이션에 연결되어 있으며, 앱이 삭제되면 해당 ID도 삭제됩니다. 앱에는 시스템 할당 ID가 하나만 있을 수 있습니다.
- 사용자가 할당한 ID는 앱에 할당할 수 있는 독립 실행형 Azure 리소스입니다. 앱에는 여러 사용자 할당 ID가 있을 수 있습니다.
az webapp identity assign
명령을 실행하여 시스템 할당 ID를 만듭니다.
az webapp identity assign --name <appName> --resource-group <groupName>
ID에 Azure OpenAI 사용자 역할 추가
Azure Portal에서 Azure OpenAI 액세스 권한을 부여하려는 범위로 이동합니다. 범위는 관리 그룹, 구독, 리소스 그룹또는 특정 Azure OpenAI 리소스일 수 있습니다.
왼쪽 탐색 창에서 액세스 제어(IAM)선택합니다.
추가를 선택한 다음, 역할 할당추가를 선택합니다.
역할 탭에서 Cognitive Services OpenAI 사용자 역할을 선택합니다.
멤버 탭에서 관리 ID를 선택합니다.
검토 + 할당 탭에서 검토 + 할당을 선택하여 역할을 할당합니다.
Azure CLI를 사용하여 다양한 범위에서 관리 ID에 Cognitive Services OpenAI 사용자 역할을 할당할 수 있습니다.
앱 코드에서 ID 인증 구현
앱에 다음 NuGet 패키지를 추가합니다.
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
위의 패키지는 각각 이 시나리오에 대해 다음과 같은 문제를 처리합니다.
- azure.Identity: Microsoft Entra ID를 사용하는 핵심 기능을 제공합니다.
- azure.AI.OpenAI: 앱이 Azure OpenAI 서비스와 상호 작용할 수 있도록 합니다.
- microsoft.Extensions.Azure: 종속성 주입을 위해 서비스를 등록하는 도우미 확장을 제공합니다.
- Microsoft.Extensions.AI: 일반적인 AI 작업에 대한 AI 추상화 제공
- microsoft.Extensions.AI.OpenAI: OpenAI 서비스 유형을 Microsoft.Extensions.AI 제공된 AI 추상화로 사용할 수 있습니다.
앱의
Program.cs
파일에서DefaultAzureCredential
개체를 만들어 사용 가능한 자격 증명을 검색하고 구성합니다.// 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 } );
AI 서비스를 만들고 서비스 컬렉션에 등록합니다.
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));
엔드포인트에서 사용할 등록된 서비스를 삽입합니다.
app.MapGet("/test-prompt", async (IChatClient chatClient) => { return await chatClient.GetResponseAsync("Test prompt", new ChatOptions()); }) .WithName("Test prompt");
팁
ASP.NET Core 종속성 주입 및 .NET용 Azure SDK 종속성 주입 설명서에 다른 AI 서비스 유형을 등록하는 방법에 대해 자세히 알아봅니다.
관련 콘텐츠
- App Service 및 Azure Functions 관리 ID를 사용하는 방법
- Azure OpenAI Service 대한 역할 기반 액세스 제어
.NET