Partager via


Composants de l’agent

Importante

Certaines informations contenues dans cet article concernent le produit en préversion, qui peut être considérablement modifié avant sa publication commerciale. Microsoft n’offre aucune garantie, explicite ou implicite, concernant les informations fournies ici.

Cet article fournit une vue d’ensemble conceptuelle des composants clés qui définissent le fonctionnement des agents Security Copilot personnalisés, ce qui vous aide à comprendre leur structure, leur comportement et leur logique opérationnelle.

Agent

Un agent dans Security Copilot est une entité de calcul semi-autonome ou entièrement autonome qui fonctionne pour atteindre un objectif spécifique. Elle est définie par sa capacité à percevoir son environnement et à y réagir, à prendre des décisions et à produire des résultats pour atteindre son objectif. La conception d’un agent informe l’agent sur la façon d’atteindre son objectif en choisissant les fonctionnalités à utiliser, qu’il s’agisse d’un modèle LLM (Large Language Model), d’outils connectés (compétences) ou des deux. Les décisions de l’agent sont guidées par ses entrées et instructions, ce qui peut amener l’agent à utiliser une logique prédéfinie, ou à inviter un LLM à interpréter ces instructions et à agir sur ces instructions.

Les agents sont activés via un déclencheur, qui crée une exécution de l’agent et exécute chaque étape (ou tâche) jusqu’à ce qu’un résultat soit atteint. Tout au long de l’exécution de l’agent, en fonction des instructions, il décide entre tirer parti d’un LLM ou d’un outil connecté pour effectuer une tâche.

Les agents peuvent interagir avec des outils, des ressources externes au-delà du LLM et des instructions de l’agent, à l’aide de l’une des deux stratégies de sélection :

  • Outil statique : ensemble fixe de ressources disponibles pour l’agent à appeler, comme indiqué dans la définition de l’agent, pour une étape individuelle ou l’exécution complète de l’agent. Lorsqu’il est défini de cette façon, le LLM au sein d’un agent ne peut pas décider d’appeler des outils en dehors de ce qui est défini. Cela peut améliorer la vitesse et la pertinence des résultats de l’outil. Un agent de renseignement sur les menaces qui doit appeler des sources prédéfinies peut être conçu de cette façon.

  • Outil dynamique : les appels d’outils sont sélectionnés pendant l’exécution de l’agent en fonction du contexte, du raisonnement ou des entrées de l’agent. Les outils mis à la disposition de l’agent peuvent être introduits lors de l’exécution. Les agents qui doivent être réactifs aux conditions rencontrées dans une exécution d’agent peuvent être conçus de cette façon. Par exemple, un agent qui enrichit une entité peut s’exécuter différemment en fonction du type d’entité fourni comme entrée à l’agent.

Les développeurs et les utilisateurs Security Copilot peuvent concevoir des agents à l’aide de l’une ou l’autre des approches de sélection d’outils en fonction de l’objectif de l’agent. L’objectif permet également d’indiquer si le résultat de l’agent sert un individu, une équipe ou organization. Lorsque les agents s’exécutent à l’aide d’une identité, l’étendue du résultat et les autorisations de l’identité doivent être alignées.

Qu’il s’agisse de créer un agent de triage d’alerte simple ou d’orchestrer un système multi-agent pour des investigations complexes, cet article fournit les connaissances de base dont vous avez besoin pour travailler avec l’infrastructure de l’agent Security Copilot, de la sélection d’outils et de la conception de manifeste pour déclencher la configuration et la gouvernance.

Image des composants de l’agent dans Security Copilot

Instructions

Les instructions sont des instructions données à un agent pour définir ses objectifs, éclairer sa prise de décision et détailler son résultat. Par exemple, vous pouvez demander à un agent de triage de se concentrer sur les incidents de gravité élevée, ou de guider un agent de données pour extraire uniquement des informations qui suivent certaines règles. Les instructions aident les agents à rester précis et cohérents.

Outil

Un outil (compétence) est des ressources accessibles en dehors des instructions de l’agent et du LLM qu’un agent Security Copilot peut appeler pour l’aider à atteindre son résultat. Considérez un outil comme une fonction dans un langage de programmation traditionnel. Il a un nom, quelques arguments et, lorsqu’il est appelé, il exécute une tâche bien définie et retourne un résultat.

Les utilisateurs peuvent créer les outils souhaités que Security Copilot pouvez appeler pour effectuer des tâches spécialisées ou interagir avec des systèmes externes.

Par exemple :

  • Répondre à des questions de résolution ou de réputation sur une entité jamais vue auparavant, telles que « Qui s’est inscrit » www.contoso.com?'

  • Répondez aux questions sur les données spécifiques au client, telles que « L’incident 1234 affecte quels utilisateurs ? »

  • Interagissez avec des systèmes externes tels que « Réinitialiser le mot de passe du compte pour « ».testaccount@contoso.com

  • Récupérez les connaissances spécifiques du client à partir d’une source de connaissances telle que SharePoint.

Plug-in

Collection d’outils connexes que les utilisateurs peuvent activer dans Security Copilot le cas échéant pour créer de nouvelles fonctionnalités d’invite, de promptbook ou d’agentic. Pour les agents, les plug-ins étendent ce qu’un agent peut faire en lui donnant accès à des ressources en dehors d’un agent et de LLM. Un exemple est un plug-in qui utilise une API pour se connecter à un service externe tel que la recherche de réputation, où les définitions d’outils sous-jacentes du plug-in peuvent retourner un score de réputation, des programmes malveillants connexes, des informations sur les menaces, etc.

Formats d’outils

Security Copilot plateforme prend en charge plusieurs façons de créer et d’héberger des outils (compétences) pour répondre à différents besoins. Vous pouvez créer des agents à l’aide de l’une des compétences prises en charge. Les formats d’outils pris en charge sont les suivants :

Format de l’outil Idéal pour Exemple de cas d’usage
API Intégration de systèmes externes ou internes Automatiser les réinitialisations de mot de passe, récupérer des informations sur les menaces à partir d’API, déclencher des workflows de correction
GPT Fournit des définitions pour le traitement en langage naturel qui ne sont pas disponibles en mode natif dans les modules LLM sous-jacents. Définitions spécifiques à un domaine, résumer les incidents dans des formats uniques
KQL Interrogation de sources de données Microsoft (Microsoft Defender, Microsoft Sentinel) Récupérer les journaux de connexion, détecter les anomalies
AGENT Orchestration de flux de travail à plusieurs étapes à l’aide de modèles de langage volumineux (LLM) et d’outils enfants Comprendre la situation d’hébergement d’une URL, , chaîner plusieurs outils à des fins d’investigation.
MCP Intégrations dynamiques et multi-outils exposées par un serveur MCP ; Le copilote de sécurité découvre les outils au moment de l’exécution. Agréger l’intelligence des menaces ou orchestrer la correction sur plusieurs outils via le serveur MCP.

Définition de l’agent

La définition de l’agent sert de blueprint pour un agent et est un composant clé du fichier manifeste. Il s’agit de l’une des clés de niveau supérieur dans le manifeste et spécifie la configuration, les fonctionnalités et le comportement de base de l’agent. Il spécifie :

  • Détails descriptifs/de métadonnées (par exemple : nom, description).
  • Définitions de déclencheur décrivant les événements qui provoquent l’exécution de l’agent.
  • Outils ou références d’outils associés que l’agent utilise pour effectuer son travail.

En tant que développeur Security Copilot, les définitions d’agent que vous créez sont disponibles pour que les analystes s’exécutent et voient les résultats.

Agent instance

Un agent instance est la version déployée d’une définition d’agent dans un espace de travail particulier. Chaque instance :

  • Conserve sa propre identité ou ses propres informations d’identification.
  • Stocke des mémoires et des commentaires spécifiques à instance.
  • Plusieurs locataires et espaces de travail peuvent avoir leur propre instance de la même définition d’agent. Les modifications de configuration ou les mises à jour de la mémoire pour une instance n’ont pas d’impact sur les autres.

Manifeste

Le manifeste définit la définition, l’identité, les outils et la logique opérationnelle de l’agent dans un format YAML ou JSON structuré. À l’instar d’un fichier de configuration dans les systèmes logiciels traditionnels, le manifeste spécifie :

  • Objectif et tâches uniques de l’agent
  • Instructions générales de fonctionnement
  • Logique de prise de décision
  • Les outils qu’il doit appeler
  • Autres agents qu’il peut appeler pendant l’exécution

Le manifeste inclut des métadonnées (définitions et compétences de l’agent) que l’agent peut utiliser, la façon dont ces compétences sont regroupées et les actions qu’il peut effectuer. Le fichier manifeste est empaqueté et déployé dans le cadre du flux de travail de l’agent sur la plateforme Security Copilot. Les analystes SOC interagissent avec l’agent via cette plateforme et l’agent répond aux invites ou aux événements en fonction de la configuration du manifeste et de la logique de l’outil.

Remarque

Dans les exemples, le format YAML est répertorié, car il est plus clair pour les humains et peut inclure des commentaires, mais l’un ou l’autre des formats fonctionne également bien. Le format JSON est identique au format YAML, mais utilise la syntaxe JSON à la place.

Agent YAML

Il s’agit d’un manifest.yaml exemple de fichier.


Descriptor:
  Name: Contoso.SecurityOperations.Samples-090925
  Description: DCA URL Geolocation Agent
  DisplayName: DCA URL Geolocation Agent

SkillGroups:
- Format: AGENT
  Skills:
  - Name: URL_Location_DCA_Agent_Entrypoint-090925
    Description: The entrypoint into the URL Location Agent
    Interfaces:
    - Agent
    Inputs:
    - Required: true
      Name: URL
      Description: A URL the agent should investigate
    Settings:
      Model: gpt-4.1
      Instructions: |
            <|im_start|>system
            You are an AI agent that helps a security analyst understand the hosting situation of a URL (the input).
            You'll do this by following a three-step process:
            1) Use ExtractHostname to find the hostname from the URL provided as input
            2) Use GetDnsResolutionsByIndicators to extract IP Addresses that the hostname has been observed resolving to. This may produce a list of IP Addresses.
            3) One-at-a time, use lookupIpAddressGeolocation to look up the geolocation of an IP address.

            Produce a simply formatted response telling the security analyst which locations that URL is being served from.  
            If you encounter an error share that.  
            Always return something the user knows that something happened.
            
            <|im_end|>
            <|im_start|>user
            {{URL}}
            <|im_end|>

    ChildSkills:
    - lookupIpAddressGeolocation
    - ExtractHostname_DCA-090925
    - GetDnsResolutionsByIndicators
- Format: GPT
  Skills:
  - Name: ExtractHostname_DCA-090925
    DisplayName: ExtractHostname_DCA-090925
    Description: ExtractHostname_DCA-090925
    Inputs:
    - Name: URL
      Description: A URL string
      Required: true
    Settings:
      ModelName: gpt-4.1
      Template: |-
        <|im_start|>system
        Return the hostname component of the URL provided as input.  For example:
        - If the input is 'https://www.mlb.com/', return 'www.mlb.com'
        - If the input is 'http://dev.mycompany.co.uk/sign-up/blah?a=12&b=12&c=32#23', return 'dev.mycompany.co.uk'
        - If the input is 'ftp:/x.espon.com', return 'x.espon.com'
        <|im_end|>
        <|im_start|>user
        {{URL}}
        <|im_end|>
- Format: KQL
  Skills:
    - Name: RecentUrlClicks_DCA-090925
      Description: Returns 10 recently clicked URLs
      Settings:
        Target: Defender
        Template: UrlClickEvents | sort by TimeGenerated desc | limit 10 | project Url

AgentDefinitions:
  - Name:  URLLocationAgent-090925
    DisplayName: URLLocationAgent
    Description: An agent to help an analyst understand URL hosting 
    Publisher: Contoso
    Product: SecurityOperations
    RequiredSkillsets:
      - Contoso.SecurityOperations.Samples-090925
      - ThreatIntelligence.DTI
      - DCA_SampleAPIPlugin
    AgentSingleInstanceConstraint: None
    Settings:
      - Name: LookbackWindowMinutes
        Label: Max Lookback Window in minutes
        Description: The maximum number of minutes to find clicked URLs
        HintText: You should probably enter 5
        SettingType: String
        Required: true
    Triggers:
      - Name: Default
        DefaultPeriodSeconds: 300
        FetchSkill: Contoso.SecurityOperations.Samples-090925.RecentUrlClicks_DCA-090925
        ProcessSkill: Contoso.SecurityOperations.Samples-090925.URL_Location_DCA_Agent_Entrypoint-090925

L’agent suit un processus en trois étapes pour appeler les compétences enfants :

  • ExtractHostname: utilise l’outil ExtractHostname_DCA-090925 GPT pour analyser le nom d’hôte à partir de l’URL.

  • GetDnsResolutionsByIndicators: utilise l’ensemble de compétences Microsoft Threat Intelligence pour récupérer les adresses IP associées au nom d’hôte. Vous devez activer le plug-in sous Gérer les sources > personnalisées. Vérifiez que RequiredSkillsets: ThreatIntelligence.DTI doit être ajouté sans quel GetDnsResolutionsByIndicators outil n’est pas appelé.

  • lookupIpAddressGeolocation: dans la spécification OpenAPI, qui est référencée dans le plug-in DCA_SampleAPIPlugin d’API pour rechercher des operationId données de géolocalisation pour chaque adresse IP. Pour plus d’informations de référence, consultez Exemple d’API de build.

Déclencher

Un déclencheur est ce qui démarre le workflow d’un agent. Il peut être démarré manuellement ou configuré pour s’exécuter selon une planification. Une fois le déclencheur activé, l’agent suit son plan et exécute automatiquement les actions.

Les agents fonctionnent sur la base d’un plan d’action structuré et s’exécutent sur ce plan. Par exemple, un agent de triage d’hameçonnage peut déterminer les outils ou autres agents à appeler à partir de son ensemble de fonctionnalités préconfigurées. Les outils tels que FetchSkill et ProcessSkill définis dans le déclencheur servent de points d’entrée dans le flux de travail de l’agent qui guide l’exécution de la tâche.

Dans l’exemple suivant :

Triggers:
      - Name: Default
        DefaultPeriodSeconds: 300
        FetchSkill: Contoso.SecurityCopilot.Samples-090925_1b.RecentUrlClicks_DCA-090925_1b
        ProcessSkill: Contoso.SecurityCopilot.Samples-090925_1b.URL_Location_DCA_Agent_Entrypoint-090925_1b
        Settings:

1.Toutes les 5 minutes, le RecentUrlClicks_DCA-090925_1b est appelé pour obtenir de nouvelles données.

2.Ensuite, le ProcessSkill URL_Location_DCA_Agent_Entrypoint-090925_1b est appelé sur chaque élément retourné pour agir sur les données.

Chacun de ces cycles est une exécution de déclencheur, et chaque appel à ProcessSkill est une exécution de déclencheur. Ces appels de compétence s’exécutent dans les sessions associées à l’agent instance et au déclencheur, et utilisent l’identité associée de l’agent.

FetchSkill et ProcessSkill

FetchSkill

Lorsqu’un déclencheur est activé sur un agent exécuté, fetchSkill s’il est configuré collecte des données. ProcessSkill définit la façon dont les agents agissent sur ces données pendant l’exécution. Une fois les données extraites, processSkill prend le relais, en utilisant ces données comme entrée pour effectuer des actions ou des analyses spécifiques. Ces deux composants fonctionnent en tandem pour permettre des workflows dynamiques pilotés par les données. Si la valeur FetchSkill est définie, le déclencheur appelle d’abord fetchSkill.

Importante

Fetch et ProcessSkills doivent être séparés par l’ensemble de compétences. Ils doivent suivre le format Skillset name.Skill name.

D’après l’exemple de Déclencheurs, est Skill nameRecentUrlClicks_DCA. est Skillset name le Descriptor.name (par exemple, Contoso.SecurityCopilot.Samples-090925_1b). Par conséquent, le nom complet de la compétence est Contoso.SecurityCopilot.Samples-090925_1b. RecentUrlClicks_DCA.

ProcessSkill

Si un FetchSkill est défini, pour chaque objet de sortie, le ProcessSkill est appelé à l’aide des valeurs de sortie comme entrées pour le ProcessSkill. Si un FetchSkill n’est pas défini, le ProcessSkill est appelé.

{
    [
        {
            "Incident": 1,
            "name": "Item One",
            "created_at": "2024-02-17T12:34:56Z"
        },
        {
            "Incident": 2,
            "name": "Item Two",
            "created_at": "2024-02-17T12:35:30Z"
        },
        {
            "Incident": 3,
            "name": "Item Three",
            "created_at": "2024-02-17T12:36:10Z"
        }
    ]
}

Dans l’exemple, processSkill est appelé trois fois avec Incident, nameet created_at comme entrées.

Espace de travail

Un conteneur pour le travail. Les agents fonctionnent dans le contexte d’un espace de travail. L’espace de travail fournit une unité de contrôle pour l’accès, la configuration, la consommation et la gestion des données.

Mémoire

La mémoire permet aux agents de conserver le contexte entre les interactions, ce qui permet des réponses plus intelligentes et personnalisées. En stockant des informations pertinentes telles que les actions passées, les préférences utilisateur ou l’historique des incidents, les agents peuvent assurer la continuité et améliorer la prise de décision au fil du temps.