Microsoft Purview는 AI 애플리케이션을 위한 엔터프라이즈급 데이터 보안, 규정 준수 및 거버넌스 기능을 제공합니다. 개발자는 에이전트 프레임워크 SDK 내에 Purview API를 통합하여 기본적으로 안전한 지능형 에이전트를 빌드하는 동시에 프롬프트 및 응답의 중요한 데이터를 보호하고 조직 정책을 준수할 수 있습니다.
Purview를 에이전트 프레임워크와 통합하는 이유는 무엇인가요?
- 중요한 데이터 누출 방지: DLP(데이터 손실 방지) 정책에 따라 중요한 콘텐츠를 인라인으로 차단합니다.
- 거버넌스 사용: 감사, 통신 규정 준수, 내부자 위험 관리, eDiscovery 및 데이터 수명 주기 관리를 위해 Purview에서 AI 상호 작용을 기록합니다.
- 채택 가속화: 엔터프라이즈 고객은 AI 앱을 준수해야 합니다. Purview 통합은 배포의 차단을 해제합니다.
필수 조건
시작하기 전에 다음이 있는지 확인합니다.
- Microsoft Purview가 구성된 Microsoft Azure 구독
- E5 라이선스 및 종량제 청구 설정과 함께 제공되는 Microsoft 365 구독
- 테스트를 위해 Microsoft 365 개발자 프로그램 테넌트를 사용할 수 있습니다. 자세한 내용은 Microsoft 365 개발자 프로그램 참가를 참조하세요.
- 에이전트 프레임워크 SDK: 에이전트 프레임워크 SDK를 설치하려면:
- Python:
pip install agent-framework --pre실행 - .NET: NuGet에서 설치합니다.
- Python:
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의 통합을 테스트합니다.
- Entra 등록: 에이전트를 등록하고 필요한 Microsoft Graph 권한(ProtectionScopes.Compute.All, ContentActivity.Write, Content.Process.All)을 서비스 주체에 추가합니다. 자세한 내용은 Microsoft Entra ID 및 dataSecurityAndGovernance 리소스 종류에 애플리케이션 등록을 참조하세요. 다음 단계에서 Microsoft Entra 앱 ID가 필요합니다.
- Purview 정책: Microsoft Entra 앱 ID를 사용하여 Purview 정책을 구성하여 에이전트 통신 데이터가 Purview로 전달되도록 합니다. 자세한 내용은 Microsoft Purview 구성을 참조하세요.
리소스
- Nuget: Microsoft.Agents.AI.Purview
- Github: Microsoft.Agents.AI.Purview
- 샘플: AgentWithPurview