Microsoft Purview

Microsoft Purview fournit des fonctionnalités de sécurité, de conformité et de gouvernance des données de qualité entreprise pour les applications d'IA. En intégrant des API Purview dans le Kit de développement logiciel (SDK) Agent Framework, les développeurs peuvent créer des agents intelligents sécurisés par conception, tout en garantissant que les données sensibles dans les invites et les réponses sont protégées et conformes aux stratégies organisationnelles.

Pourquoi intégrer Purview à Agent Framework ?

  • Empêcher les fuites de données sensibles : blocage inline du contenu sensible en fonction des stratégies de protection contre la perte de données (DLP).
  • Activer la gouvernance : Journaliser les interactions avec l'IA dans Purview pour l’audit, la conformité des communications, la gestion des risques internes, l'eDiscovery et la gestion du cycle de vie des données.
  • Accélérer l’adoption : les clients d’entreprise nécessitent la conformité pour les applications IA. L’intégration Purview débloque le déploiement.

Prerequisites

Avant de commencer, assurez-vous d’avoir :

  • Abonnement Microsoft Azure avec Microsoft Purview configuré.
  • Abonnement Microsoft 365 avec une licence E5 et une configuration de facturation avec paiement à l’utilisation.
  • Kit de développement logiciel (SDK) Agent Framework : Pour installer le Kit de développement logiciel (SDK) Agent Framework :
    • Python : Exécuter pip install agent-framework.
    • .NET : Installer à partir de NuGet.

Comment intégrer Microsoft Purview à votre agent

Dans le pipeline de middleware de flux de travail de votre agent, vous pouvez ajouter le middleware de stratégie Microsoft Purview afin d'intercepter les appels et les réponses pour vérifier leur conformité avec les stratégies configurées dans Microsoft Purview. Le SDK (Kit de développement logiciel) Agent Framework est capable d’intercepter les sollicitations et les réponses des clients de messagerie entre agents ou entre un agent et un utilisateur final.

L’exemple de code suivant montre comment ajouter l’intergiciel de stratégie Microsoft Purview à votre code d’agent. Si vous débutez avec Agent Framework, consultez Créer et exécuter un agent avec Agent Framework.


using Azure.AI.Projects;
using Azure.Core;
using Azure.Identity;
using Microsoft.Agents.AI;
using Microsoft.Agents.AI.Purview;

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 AIProjectClient(
    new Uri(endpoint),
    new DefaultAzureCredential())
    .AsAIAgent(
        model: deploymentName,
        instructions: "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);

Avertissement

DefaultAzureCredential est pratique pour le développement, mais nécessite une considération minutieuse en production. En production, envisagez d’utiliser des informations d’identification spécifiques (par exemple ManagedIdentityCredential) pour éviter les problèmes de latence, la détection involontaire des informations d’identification et les risques de sécurité potentiels liés aux mécanismes de secours.

import asyncio
import os
from agent_framework import Agent, Message
from agent_framework.openai import OpenAIChatCompletionClient
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_COMPLETION_MODEL", "<azureOpenAIChatDeploymentName>")

async def main():
    chat_client = OpenAIChatCompletionClient(
        model=os.environ["AZURE_OPENAI_CHAT_COMPLETION_MODEL"],
        azure_endpoint=os.environ["AZURE_OPENAI_ENDPOINT"],
        api_version=os.getenv("AZURE_OPENAI_API_VERSION"),
        credential=AzureCliCredential(),
    )
    purview_middleware = PurviewPolicyMiddleware(
        credential=InteractiveBrowserCredential(
            client_id="<clientId>",
        ),
        settings=PurviewSettings(app_name="My Secure Agent")
    )
    agent = Agent(
        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())

Python évaluation et application du contenu

L’intergiciel évalue chaque élément de contenu de message non vide, et non seulement le texte brut. Le texte et le texte de raisonnement sont évalués en tant que texte. Les charges utiles de l’URI de données Base64 sont évaluées en tant que contenu binaire. Les données non base64, le contenu URI, les appels de fonction, les résultats de fonction et d’autres contenus structurés sont sérialisés en tant que texte afin qu’ils ne soient pas ignorés. Seuls le contenu vide et le contenu usage sont omis.

L’évaluation de la politique échoue en mode fermé lorsque le middleware ne peut pas déterminer un ID d’utilisateur, un locataire ou l’emplacement de l’application. Dérivez l’identité d’un jeton côté serveur validé plutôt que des champs de message contrôlés par l’appelant. Définissez ignore_exceptions uniquement lorsque vous préférez délibérément la disponibilité par rapport à l’application ; ce paramètre ignore l’application pour chaque erreur.

Choisir l’emplacement de l’intergiciel Python

PurviewPolicyMiddleware et PurviewChatPolicyMiddleware appliquent les mêmes politiques aux différentes limites du pipeline :

Behavior Intergiciel agent middleware de chat
Portée de l’évaluation Évalue l’entrée et la réponse finale du demandeur une fois par exécution de l’agent. Évalue la demande et la réponse préparées sur chaque appel de modèle.
Données d’outil et de contexte N’évalue pas la sortie du fournisseur de contexte ou un appel d’outil de modèle avant l’exécution de l’outil. Évalue la sortie du fournisseur de contexte, l’historique rejoué et les appels d’outils du modèle avant l’exécution. Les résultats de l’outil sont évalués lors de l’appel de modèle suivant.
Historique des réponses bloquées La réponse d’origine peut déjà être stockée avant que le middleware ne la remplace pour l’appelant. Le remplacement est disponible avant qu’Agent Framework stocke l’échange. Le stockage géré par un fournisseur peut conserver la réponse d’origine.

Utiliser PurviewChatPolicyMiddleware pour la prévention contre la perte de données lorsque la stratégie doit couvrir la requête complète du modèle. Utilisez PurviewPolicyMiddleware lorsque une vérification unique au niveau de la limite d’exécution de l’agent est suffisante. Dans l’une ou l’autre liste des intergiciels, placez l’intergiciel Purview en dernier afin que l’intergiciel ultérieur ne puisse pas remplacer le contenu après l’évaluation de Purview.

Les deux types d’intergiciels mettent en mémoire tampon une réponse diffusée en continu et l’évaluent avant de transmettre toute mise à jour. La diffusion en continu ne fournit donc pas de contenu de manière incrémentielle pendant que le middleware Purview est attaché.


Étapes suivantes

Maintenant que vous avez ajouté le code ci-dessus à votre agent, procédez comme suit pour tester l’intégration de Microsoft Purview à votre code :

  1. Inscription d’Entra : Inscrivez votre agent et ajoutez les autorisations Microsoft Graph requises (ProtectionScopes.Compute.All, ContentActivity.Write, Content.Process.All) au Service Principal. Pour plus d’informations, consultez Inscrire une application dans le type de ressource Microsoft Entra ID et dataSecurityAndGovernance. Vous aurez besoin de l’ID d’application Microsoft Entra à l’étape suivante.
  2. Stratégies Purview : Configurez des stratégies Purview à l’aide de l’ID d’application Microsoft Entra pour permettre aux données de communication de l’agent de circuler dans Purview. Pour plus d’informations, consultez Configurer Microsoft Purview.

Resources

Note

La prise en charge de cette fonctionnalité dans Go sera disponible prochainement. Consultez le référentiel Agent Framework Go pour connaître l’état le plus récent.