다음을 통해 공유


.NET을 사용한 Azure AI 서비스 인증 및 권한 부여

Azure AI 서비스에 대한 애플리케이션 요청은 인증되어야 합니다. 이 문서에서는 .NET을 사용하여 Azure OpenAI 및 기타 AI 서비스에 인증하는 데 사용할 수 있는 옵션을 살펴봅니다. 이러한 개념은 의미 체계 커널 SDK뿐만 아니라 Azure OpenAI와 같은 특정 서비스의 SDK에도 적용됩니다. 대부분의 AI 서비스는 앱과 사용자를 인증하는 두 가지 기본 방법을 제공합니다.

  • 키 기반 인증은 비밀 키 값을 사용하여 Azure 서비스에 대한 액세스를 제공합니다. 이러한 비밀 값은 서비스에 따라 API 키 또는 액세스 키라고도 합니다.
  • Microsoft Entra ID는 올바른 ID가 다양한 Azure 리소스에 대해 올바른 수준의 액세스 권한을 갖도록 보장하는 포괄적인 ID 및 액세스 관리 솔루션을 제공합니다.

앞의 섹션에서는 자세한 구현 단계보다는 이러한 두 가지 방식에 대한 개념적 개요를 제공합니다. Azure 서비스 연결에 대한 자세한 내용을 보려면 다음 리소스를 참조하세요.

참고 항목

이 문서의 예는 주로 Azure OpenAI에 대한 연결에 중점을 두고 있지만 동일한 개념과 구현 단계가 다른 많은 Azure AI 서비스에도 직접 적용됩니다.

키를 사용한 인증

액세스 키를 사용하면 앱과 도구가 서비스에서 제공하는 비밀 키를 사용하여 Azure OpenAI와 같은 Azure AI 서비스에 인증할 수 있습니다. Azure Portal 또는 Azure CLI와 같은 도구를 사용하여 비밀 키를 검색하고 이를 사용하여 AI 서비스에 연결하도록 앱 코드를 구성합니다.

builder.Services.AddAzureOpenAIChatCompletion(
    "deployment-model",
    "service-endpoint",
    "service-key"); // Secret key
var kernel = builder.Build();

키를 사용하는 것은 간단한 옵션이지만 이 방식은 주의해서 사용해야 합니다. 키는 다음과 같은 이유로 권장되는 인증 옵션이 아닙니다.

  • 최소 권한 원칙을 따르지 마세요. 누가 사용하는지, 어떤 작업에 사용하는지에 관계없이 높은 권한을 제공합니다.
  • 실수로 소스 제어에 체크 인하거나 안전하지 않은 위치에 저장될 수 있습니다.
  • 액세스 권한이 없어야 하는 당사자와 쉽게 공유하거나 전송할 수 있습니다.
  • 수동 관리 및 회전이 필요한 경우가 많습니다.

대신 대부분의 시나리오에 권장되는 솔루션인 Microsoft Entra ID를 인증에 사용하는 것이 좋습니다.

Microsoft Entra ID를 이용한 인증

Microsoft Entra ID는 다양한 비즈니스 및 앱 시나리오에 대한 광범위한 기능 집합을 제공하는 클라우드 기반 ID 및 액세스 관리 서비스입니다. Microsoft Entra ID는 Azure OpenAI 및 기타 AI 서비스에 연결하는 데 권장되는 솔루션이며 다음과 같은 이점을 제공합니다.

  • ID를 사용한 키 없는 인증
  • ID에 필요한 최소 권한을 할당하는 RBAC(역할 기반 액세스 제어)
  • 코드를 변경할 필요 없이 Azure.Identity 클라이언트 라이브러리를 사용하여 환경 전반에 걸쳐 다양한 자격 증명을 검색할 수 있음
  • 기본 키 회전과 같은 관리 유지 관리 작업을 자동으로 처리

앱에서 Microsoft Entra 인증을 구현하는 워크플로에는 일반적으로 다음이 포함됩니다.

  • 로컬 개발:

    1. Azure CLI 또는 Visual Studio와 같은 로컬 개발 도구를 사용하여 Azure에 로그인합니다.
    2. Azure.Identity 클라이언트 라이브러리 및 DefaultAzureCredential 클래스를 사용하도록 코드를 구성합니다.
    3. AI 서비스에 액세스할 수 있도록 로그인한 계정에 Azure 역할을 할당합니다.
  • Azure 호스트되는 앱:

    1. Azure.Identity 클라이언트 라이브러리를 사용하여 인증하도록 앱을 구성한 후 Azure에 배포합니다.
    2. Azure 호스트되는 앱에 관리 ID를 할당합니다.
    3. AI 서비스에 액세스할 수 있도록 관리 ID에 Azure 역할을 할당합니다.

이 워크플로의 주요 개념은 다음 섹션에서 살펴봅니다.

로컬로 Azure에 인증

Azure AI 서비스에 연결하는 앱을 로컬로 개발하는 경우 Visual Studio 또는 Azure CLI와 같은 도구를 사용하여 Azure에 인증합니다. 로컬 자격 증명은 Azure.Identity 클라이언트 라이브러리에서 발견할 수 있으며 앱 코드 구성 섹션에 설명된 대로 Azure 서비스에 앱을 인증하는 데 사용됩니다.

예를 들어, Azure CLI를 사용하여 로컬로 Azure에 인증하려면 다음 명령을 실행합니다.

az login

앱 코드 구성

Azure SDK의 Azure.Identity 클라이언트 라이브러리를 사용하여 코드에 Microsoft Entra 인증을 구현합니다. Azure.Identity 라이브러리에는 현재 환경 및 사용 가능한 도구를 기반으로 사용 가능한 Azure 자격 증명을 자동으로 발견하는 DefaultAzureCredential 클래스가 포함되어 있습니다. 지원되는 환경 자격 증명의 전체 집합과 검색 순서를 보려면 .NET용 Azure SDK 설명서를 참조하세요.

예를 들어, 다음 코드를 통해 DefaultAzureCredential을 사용하여 인증하도록 의미 체계 커널을 구성합니다.

Kernel kernel = Kernel
    .CreateBuilder()
    .AddAzureOpenAITextGeneration(
        "your-model",
        "your-endpoint",
        new DefaultAzureCredential())
    .Build();

DefaultAzureCredential을 사용하면 코드 변경 없이 앱을 로컬 개발에서 프로덕션으로 승격할 수 있습니다. 예를 들어, 개발 중에 DefaultAzureCredential은 Visual Studio 또는 Azure CLI의 로컬 사용자 자격 증명을 사용하여 AI 서비스에 인증합니다. 앱이 Azure에 배포되면 DefaultAzureCredential은 앱에 할당된 관리 ID를 사용합니다.

ID에 역할 할당

Azure RBAC(Azure 역할 기반 액세스 제어)는 Azure 리소스에 대한 세분화된 액세스 관리를 제공하는 시스템입니다. 개별 사용자, 그룹, 서비스 주체, 관리 ID 등 Azure AI 서비스에 연결하기 위해 DefaultAzureCredential에서 사용하는 보안 주체에 역할을 할당합니다. Azure 역할은 ID가 완료 생성, 리소스 만들기 및 삭제와 같은 다양한 작업을 수행할 수 있도록 허용하는 권한 컬렉션입니다.

Azure CLI, Bicep 또는 Azure Portal과 같은 도구를 사용하여 관련 ID에 Cognitive Services OpenAI 사용자(역할 ID: 5e0bd9bd-7b93-4f28-af87-19fc36ad61bd)와 같은 역할을 할당합니다. 예를 들어, Azure CLI를 통해 역할을 할당하려면 az role assignment create 명령을 사용합니다.

az role assignment create \
        --role "5e0bd9bd-7b93-4f28-af87-19fc36ad61bd" \
        --assignee-object-id "$PRINCIPAL_ID" \
        --scope /subscriptions/"$SUBSCRIPTION_ID"/resourceGroups/"$RESOURCE_GROUP" \
        --assignee-principal-type User

다음 리소스를 사용하여 Azure RBAC에 대해 자세히 알아봅니다.

앱에 관리 ID 할당

대부분의 시나리오에서 Azure 호스트되는 앱은 관리 ID를 사용하여 Azure OpenAI와 같은 다른 서비스에 연결해야 합니다. 관리 ID는 Microsoft Entra 인증을 지원하는 리소스에 연결할 때 앱이 사용할 Microsoft Entra ID의 완전 관리형 ID를 제공합니다. DefaultAzureCredential은 앱과 연결된 ID를 발견하고 이를 사용하여 다른 Azure 서비스에 인증합니다.

앱에 할당할 수 있는 관리 ID에는 두 가지 형식이 있습니다.

  • 시스템 할당 ID는 애플리케이션에 연결되어 있어 해당 앱을 삭제하면 이 ID도 삭제됩니다. 앱에는 하나의 시스템 할당 ID만 있을 수 있습니다.
  • 사용자 할당 ID는 앱에 할당할 수 있는 독립 실행형 Azure 리소스입니다. 앱에는 여러 사용자 할당 ID가 있을 수 있습니다.

Cognitive Services OpenAI 사용자 역할과 같은 개별 사용자 계정과 마찬가지로 관리 ID에 역할을 할당합니다. 다음 리소스를 사용하여 관리 ID 작업에 대해 자세히 알아봅니다.