다음을 통해 공유


에이전트 프레임워크에서 Microsoft Purview SDK 사용

Microsoft Purview는 AI 애플리케이션을 위한 엔터프라이즈급 데이터 보안, 규정 준수 및 거버넌스 기능을 제공합니다. 개발자는 에이전트 프레임워크 SDK 내에 Purview API를 통합하여 기본적으로 안전한 지능형 에이전트를 빌드하는 동시에 프롬프트 및 응답의 중요한 데이터를 보호하고 조직 정책을 준수할 수 있습니다.

Purview를 에이전트 프레임워크와 통합하는 이유는 무엇인가요?

  • 중요한 데이터 누출 방지: DLP(데이터 손실 방지) 정책에 따라 중요한 콘텐츠를 인라인으로 차단합니다.
  • 거버넌스 사용: 감사, 통신 규정 준수, 내부자 위험 관리, eDiscovery 및 데이터 수명 주기 관리를 위해 Purview에서 AI 상호 작용을 기록합니다.
  • 채택 가속화: 엔터프라이즈 고객은 AI 앱을 준수해야 합니다. Purview 통합은 배포의 차단을 해제합니다.

필수 조건

시작하기 전에 다음이 있는지 확인합니다.

  • Microsoft Purview가 구성된 Microsoft Azure 구독
  • E5 라이선스 및 종량제 청구 설정과 함께 제공되는 Microsoft 365 구독
  • 에이전트 프레임워크 SDK: 에이전트 프레임워크 SDK를 설치하려면:
    • Python: pip install agent-framework --pre 실행
    • .NET: NuGet에서 설치합니다.

Microsoft Purview를 에이전트에 통합하는 방법

에이전트의 워크플로 미들웨어 파이프라인에서 Microsoft Purview 정책 미들웨어를 추가하여 프롬프트 및 응답을 가로채 Microsoft Purview에 설정된 정책을 충족하는지 확인할 수 있습니다. 에이전트 프레임워크 SDK는 에이전트 간 또는 최종 사용자 채팅 클라이언트 프롬프트 및 응답을 가로챌 수 있습니다.

다음 코드 샘플에서는 에이전트 코드에 Microsoft Purview 정책 미들웨어를 추가하는 방법을 보여 줍니다. 에이전트 프레임워크를 새로 사용하는 경우 에이전트 프레임워크를 사용하여 에이전트 만들기 및 실행을 참조하세요.


using Azure.AI.OpenAI;
using Azure.Core;
using Azure.Identity;
using Microsoft.Agents.AI;
using Microsoft.Agents.AI.Purview;
using Microsoft.Extensions.AI;
using OpenAI;

string endpoint = Environment.GetEnvironmentVariable("AZURE_OPENAI_ENDPOINT") ?? throw new InvalidOperationException("AZURE_OPENAI_ENDPOINT is not set.");
string deploymentName = Environment.GetEnvironmentVariable("AZURE_OPENAI_DEPLOYMENT_NAME") ?? "gpt-4o-mini";
string purviewClientAppId = Environment.GetEnvironmentVariable("PURVIEW_CLIENT_APP_ID") ?? throw new InvalidOperationException("PURVIEW_CLIENT_APP_ID is not set.");

TokenCredential browserCredential = new InteractiveBrowserCredential(
    new InteractiveBrowserCredentialOptions
    {
        ClientId = purviewClientAppId
    });

AIAgent agent = new AzureOpenAIClient(
    new Uri(endpoint),
    new DefaultAzureCredential())
    .GetChatClient(deploymentName)
    .AsAIAgent("You are a secure assistant.")
    .AsBuilder()
    .WithPurview(browserCredential, new PurviewSettings("My Secure Agent"))
    .Build();

AgentResponse response = await agent.RunAsync("Summarize zero trust in one sentence.").ConfigureAwait(false);
Console.WriteLine(response);

경고

DefaultAzureCredential 은 개발에 편리하지만 프로덕션 환경에서 신중하게 고려해야 합니다. 프로덕션 환경에서는 특정 자격 증명(예: ManagedIdentityCredential)을 사용하여 대기 시간 문제, 의도하지 않은 자격 증명 검색 및 대체 메커니즘의 잠재적인 보안 위험을 방지하는 것이 좋습니다.

import asyncio
import os
from agent_framework import Agent, Message, Role
from agent_framework.azure import AzureOpenAIChatClient
from agent_framework.microsoft import PurviewPolicyMiddleware, PurviewSettings
from azure.identity import AzureCliCredential, InteractiveBrowserCredential

# Set default environment variables if not already set
os.environ.setdefault("AZURE_OPENAI_ENDPOINT", "<azureOpenAIEndpoint>")
os.environ.setdefault("AZURE_OPENAI_CHAT_DEPLOYMENT_NAME", "<azureOpenAIChatDeploymentName>")

async def main():
    chat_client = AzureOpenAIChatClient(credential=AzureCliCredential())
    purview_middleware = PurviewPolicyMiddleware(
        credential=InteractiveBrowserCredential(
            client_id="<clientId>",
        ),
        settings=PurviewSettings(app_name="My Secure Agent")
    )
    agent = Agent(
        chat_client=chat_client,
        instructions="You are a secure assistant.",
        middleware=[purview_middleware]
    )
    response = await agent.run(Message(role='user', contents=["Summarize zero trust in one sentence."]))
    print(response)

  if __name__ == "__main__":
    asyncio.run(main())

다음 단계:

이제 위의 코드를 에이전트에 추가했으므로 다음 단계를 수행하여 코드에 Microsoft Purview의 통합을 테스트합니다.

  1. Entra 등록: 에이전트를 등록하고 필요한 Microsoft Graph 권한(ProtectionScopes.Compute.All, ContentActivity.Write, Content.Process.All)을 서비스 주체에 추가합니다. 자세한 내용은 Microsoft Entra IDdataSecurityAndGovernance 리소스 종류에 애플리케이션 등록을 참조하세요. 다음 단계에서 Microsoft Entra 앱 ID가 필요합니다.
  2. Purview 정책: Microsoft Entra 앱 ID를 사용하여 Purview 정책을 구성하여 에이전트 통신 데이터가 Purview로 전달되도록 합니다. 자세한 내용은 Microsoft Purview 구성을 참조하세요.

리소스