다음을 통해 공유


키 없이 Azure OpenAI 사용

대부분의 Azure 서비스에 대한 애플리케이션 요청은 키 또는 암호 없는 연결로 인증되어야 합니다. 개발자는 키를 안전하지 않은 위치에 노출하지 않도록 끊임없이 노력해야 합니다. 키에 대한 액세스 권한을 얻은 사용자는 누구나 서비스에 인증할 수 있습니다. 키 없는 인증은 저장할 키(또는 연결 문자열)가 없기 때문에 계정 키에 비해 개선된 관리 및 보안 이점을 제공합니다.

키 없는 연결은 다음 단계를 통해 사용하도록 설정됩니다.

  • 인증을 구성합니다.
  • 필요에 따라 환경 변수를 설정합니다.
  • Azure ID 라이브러리 자격 증명 형식을 사용하여 Azure OpenAI 클라이언트 개체를 만듭니다.

인증

Azure 클라이언트 라이브러리를 사용하려면 Microsoft Entra ID에 대한 인증이 필요합니다.

인증은 앱이 실행되는 환경에 따라 다릅니다.

Azure OpenAI Keyless 문서 블록

다음 링크를 사용하여 Azure OpenAI Keyless 문서 블록 AI 템플릿을 탐색합니다. 이 템플릿은 OpenAI API SDK에 액세스하기 위해 키 없는(Microsoft Entra) 인증에 대한 사용자 계정 RBAC 역할 권한으로 Azure OpenAI 계정을 프로비전합니다.

참고 항목

이 문서에서는 문서의 예제 및 지침에 대한 기준으로 하나 이상의 AI 앱 템플릿을 사용합니다. AI 앱 템플릿은 AI 앱의 고품질 시작 지점을 보장하는 데 도움이 되는 잘 유지 관리되고 배포하기 쉬운 참조 구현을 제공합니다.

로컬 개발을 위해 인증

로컬 개발 중 인증을 위한 도구를 선택합니다.

Azure 호스팅 환경에 대한 인증

Azure에 배포된 애플리케이션에 대한 DefaultAzureCredential 을 관리하는 방법에 대해 알아봅니다.

권한 부여를 위한 역할 구성

  1. Azure OpenAI 사용에 대한 역할을 찾습니다. 해당 역할을 설정하는 방법에 따라 이름 또는 ID가 필요합니다.

    역할 이름 역할 ID
    Azure CLI 또는 Azure PowerShell의 경우 역할 이름을 사용할 수 있습니다. Bicep의 경우 역할 ID가 필요합니다.
  2. 다음 표를 사용하여 역할 및 ID를 선택합니다.

    사용 사례 역할 이름 역할 ID
    도우미 Cognitive Services OpenAI Contributor a001fd3d-188f-4b5d-821b-7da978bf7442
    채팅 완료 Cognitive Services OpenAI User 5e0bd9bd-7b93-4f28-af87-19fc36ad61bd
  3. 사용할 ID 유형을 선택합니다.

    • 개인 ID: Azure에 로그인하는 데 연결된 개인 ID입니다.
    • 관리 ID: Azure에서 사용하기 위해 관리되고 생성된 ID입니다. 관리 ID의 경우 사용자 할당 관리 ID를 만듭니다. 관리 ID를 만들 때는 .(을 Client ID)라고도 하는 이 ID가 app ID필요합니다.
  4. 개인 ID를 찾으려면 다음 명령 중 하나를 사용합니다. 다음 단계에서 ID를 <identity-id> 사용합니다.

    로컬 개발의 경우 사용자 고유의 ID ID를 가져오려면 다음 명령을 사용합니다. 이 명령을 사용하기 전에 로그인 az login 해야 합니다.

    az ad signed-in-user show \
        --query id -o tsv
    
  5. 리소스 그룹의 ID에 RBAC(역할 기반 액세스 제어) 역할을 할당합니다.

    RBAC를 통해 리소스에 ID 권한을 부여하려면 Azure CLI 명령 az role assignment create를 사용하여 역할을 할당합니다.

    az role assignment create \
        --role "Cognitive Services OpenAI User" \
        --assignee "<identity-id>" \
        --scope "/subscriptions/<subscription-id>/resourceGroups/<resource-group-name>"
    

    해당하는 경우 <identity-id>, <subscription-id><resource-group-name>을 실제 값으로 바꿉니다.

환경 변수 구성

Azure OpenAI에 연결하려면 코드에서 리소스 엔드포인트를 알고 있어야 하며 다른 환경 변수가 필요할 수 있습니다 .

  1. Azure OpenAI 엔드포인트에 대한 환경 변수를 만듭니다.

    • AZURE_OPENAI_ENDPOINT: 이 URL은 Azure OpenAI 리소스에 대한 액세스 지점입니다.
  2. 앱이 실행되는 위치에 따라 환경 변수를 만듭니다.

    위치 ID 설명
    로컬 개인적 개인 ID를 사용하는 로컬 런타임의 경우 로그인하여 도구를 사용하여 자격 증명을 만듭니다.
    Azure 클라우드 사용자 할당 관리 ID 인증할 AZURE_CLIENT_ID 사용자 할당 관리 ID의 클라이언트 ID를 포함하는 환경 변수를 만듭니다.

Azure ID 클라이언트 라이브러리 설치

다음 링크를 사용하여 Azure ID 클라이언트 라이브러리를 설치합니다.

.NET Azure Id 클라이언트 라이브러리를 설치합니다.

dotnet add package Azure.Identity

DefaultAzureCredential 사용

Azure ID 라이브러리를 DefaultAzureCredential 사용하면 고객이 로컬 개발 환경 및 Azure Cloud에서 동일한 코드를 실행할 수 있습니다.

.NET용 DefaultAzureCredential에 대한 자세한 내용은 .NET용 Azure ID 클라이언트 라이브러리를 참조하세요.

using Azure;
using Azure.AI.OpenAI;
using Azure.Identity;
using System;
using static System.Environment;

string endpoint = GetEnvironmentVariable("AZURE_OPENAI_ENDPOINT");

OpenAIClient client = new(new Uri(endpoint), new DefaultAzureCredential());

리소스