Partager via


Manifeste 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.

Le développement d’un agent Security Copilot et de ses outils (compétences) nécessite un fichier manifeste au format YAML ou JSON (par exemple, manifest.yaml). Ce fichier définit des métadonnées sur l’ensemble d’outils (plug-in) et spécifie comment chaque outil doit être appelé.

Un manifeste d’agent comprend trois clés de niveau supérieur qui sont les suivantes :

Chaque clé contient son propre ensemble de paires sous-clé/valeur, dont certaines sont des champs obligatoires/facultatifs en fonction du format de l’outil.

Ce guide de référence décrit les champs de manifeste disponibles pour la création d’agents Security Copilot.

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.

Échantillons

Consultez la liste complète de la collection Samples.

Pour l’exemple Agent sur l’agent interactif, consultez Agents interactifs.

Syntaxe YAML du manifeste

Voici les paramètres de manifeste de l’agent (champs) pour les trois clés de niveau supérieur et ses sous-clés :

Résumé des champs du descripteur

Champ Type Description Contraintes Obligatoire
Name string Nom interne de l’ensemble de compétences. Doit être un nom unique dans l’espace de travail. N’autorise / , \ ? # @pas ; ne peut pas contenir d’espaces blancs. Oui
DisplayName string Nom lisible par l’utilisateur de l’ensemble de compétences. Non*
Description string Description lisible par l’utilisateur de l’ensemble de compétences. Ne peut pas être null ou vide. Oui
Authorization objet Définissez les valeurs d’autorisation. Pour plus d’informations, consultez Authentification pour plus d’informations. Non; Requis pour l’outil API et SupportedAuthTypes non égal à None.
SupportedAuthTypes tableau Liste des types d’authentification pris en charge pour l’ensemble de compétences. Pour plus d’informations, consultez Authentification pour plus d’informations. Non; Requis pour l’outil API

(* implique recommandé, mais non obligatoire)

Résumé du champ AgentDefinitions

Champ Type Description Contraintes Obligatoire
Name string Nom utilisé pour installer l’agent ; Ne peut pas contenir d’espace blanc, de point (.) et ne peut pas être null ou vide. Oui
DisplayName string Nom convivial pour l’affichage de l’interface utilisateur. Oui
Description string Résumé lisible de l’objectif et des fonctionnalités de l’agent. Oui
Publisher string Nom de l’éditeur de l’agent. Oui
Product string Produit source associé à l’agent. Utilisé pour le filtrage lors de l’énumération des définitions d’agent. Oui
RequiredSkillsets string Ensembles de compétences requis pour que l’agent fonctionne. Oui
AgentSingleInstanceConstraint string Définit l’emplacement où l’agent peut être déployé. Peut être défini sur None, Workspaceou Tenant.
- None: aucune restriction.
- Workspace: un instance par espace de travail.
- Tenant: un instance par locataire.
Non
Settings objet Appliqué uniquement à l’appel FetchSkill. Non
Triggers objet Définit comment et quand l’agent est déclenché. Au moins un déclencheur est requis.
  • Name: nom descriptif du déclencheur.
  • DefaultPeriodSeconds: intervalle en secondes pour l’exécution planifiée. Les déclencheurs n’empêchent pas les exécutions simultanées. Pour désactiver l’exécution planifiée, définissez cette valeur sur 0.
  • FetchSkill: s’il est défini, le déclencheur appelle d’abord cette compétence (outil). Le déclencheur attend un tableau d’objets. Pour chaque objet, il appelle à l’aide ProcessSkill des valeurs de l’objet comme entrées du ProcessSkill. Un modèle courant serait d’avoir un ListAlerts FetchSkill et un InvestigateAlertAgent ProcessSkill. Pour plus d’informations sur le déclencheur, consultez Composants de l’agent.
  • Name: impossible de contenir des espaces blancs Oui; Name et ProcessSkill.
    PromptSkill objet Activez l’interactivité ou l’expérience de conversation avec l’agent. Oui; Applicable uniquement aux agents interactifs.

    Résumé du champ SkillGroups

    Il s'agit d'une liste de groupes de compétences comprenant Format, Settings, et Skills.

    Champ Type Description Contraintes Obligatoire
    Format chaîne Consultez la section Format pour connaître les options disponibles. Oui
    Skills objet Consulter la section Compétences pour la structure de l'objet. Oui; pour les formats : GPT, API, KQL, AGENT
    Settings objet Consultez la section Paramètres pour connaître la structure de l'objet. Oui; pour les formats : API, GPT, KQL, AGENT

    Format (champ SkillGroups)

    Options pour le Format champ :

    API
    GPT
    AGENT
    KQL
    LogicApp

    Compétences (champ SkillGroups)

    Structure d’objet pour Skills le champ :

    Champ Type Description Contraintes Obligatoire
    Name string Nom interne de cet outil (compétence) Impossible de contenir un espace blanc et un point(.) Oui
    DisplayName string Nom lisible par l’utilisateur pour cet outil. Recommandé
    Description string Description lisible par l’utilisateur pour cet outil Ne peut pas être null ou vide. Recommandé
    Inputs objet Liste des objets Name, Description et Obligatoire ou facultatif pour l’entrée utilisateur dans l’outil. Non
    Settings objet Paramètres personnalisés basés sur les compétences Format. Oui
    ChildSkills tableau de chaînes Liste des noms d’outils dont l’agent dépend ou appelle pendant l’exécution. Les outils effectuent des tâches spécifiques et sont appelés par l’agent pour atteindre ses objectifs. Permet le chaînage ou la composition de plusieurs outils pour générer un comportement d’agent plus complexe. Non; Toutefois, applicable et requis uniquement pour FORMAT: AGENT la compétence.
    Interfaces objet InteractiveAgent Défini sur lors de la création d’un agent interactif. Oui
    SuggestedPrompts objet
  • Prompt: invite réelle à afficher à l’utilisateur (si l’invite de démarrage) ou à utiliser comme modèle pour générer des invites suggérées.
  • Title: titre de l’invite.
  • Personas: type de personnage sur lequel une invite est alignée.
  • IsStarterAgent: défini sur true pour l’invite de démarrage.
    Recommandation : Définissez sur deux phrases maximum pour starter et les invites suggérées.
  • Oui; Applicable uniquement aux agents interactifs. Title et Personas (obligatoire pour les invites de démarrage uniquement).

    Paramètres (champ SkillGroups)

    La structure d’objet du Settings champ est la suivante pour les formats pris en charge. Pour obtenir des exemples de compétence (outil), consultez Exemples d’outils.

    API

    Nom du paramètre Type Description Contraintes Obligatoire
    OpenApiSpecUrl string URL de la spécification OpenAPI publique. Oui
    EndpointUrl string URL du point de terminaison public. Non; Spécifiez uniquement si vous ne souhaitez pas utiliser le serveur d’API répertorié dans la spécification OpenAPI.
    EndpointUrlSettingName string Paramètre personnalisable pour demander l’URL du point de terminaison public pendant la configuration du plug-in. Non; Spécifiez uniquement si vous souhaitez que le point de terminaison d’API soit configurable.
    EnableSkillContextApi bool Définissez cette option uniquement si les outils d’API ont besoin d’accéder à l’API SkillContext. Non

    GPT

    Nom du paramètre Type Description Contraintes Obligatoire
    ModelName string Sélectionne le modèle GPT à utiliser. Doit être gpt-4.1 Oui
    Template chaîne Modèle de requête GPT. Prend en charge jusqu’à 80 000 caractères Oui

    AGENT

    Nom du paramètre Type Description Contraintes Obligatoire
    Instructions string Conseils ou instructions claires qui définissent le comportement et la mission de l’agent. Les conseils sont utilisés pour orienter les réponses de l’agent et s’assurer qu’elles s’alignent sur le cas d’usage prévu. Généralement écrit en langage naturel et inclut une mise en forme comme markdown ou des commentaires. Oui

    KQL

    Nom du paramètre Type Description Contraintes Obligatoire
    Target string Sélectionnez le système ou la plateforme où l’outil s’exécute. Consultez Paramètres spécifiques de la cible. Oui
    Template string Modèle de requête KQL. Prend en charge jusqu’à 80 000 caractères. Oui si TemplateUrl n’est pas spécifié.
    TemplateUrl string URL publique pour télécharger le modèle d’invite KQL (jusqu’à 80 000 caractères). Oui. Spécifiez ou TemplatUrl , Template mais pas les deux.
    PackageUrl string URL publique du fichier zip contenant le modèle de requête KQL. Remarque : spécifié au niveau de SkillGroup. Oui si Template ou TemplateUrl ne sont pas spécifiés.
    TemplateFile string Chemin d’accès relatif au modèle d’invite KQL (jusqu’à 80 000 caractères) dans le PackageUrl fichier zip. Oui si PackageUrl est spécifié.

    LogicApp

    Nom du paramètre Type Description Obligatoire
    SubscriptionId string Microsoft Azure l’ID d’abonnement de Logic Apps. L’abonnement doit se trouver dans le même locataire que le locataire Security Copilot’utilisateur. Oui
    ResourceGroup string Microsoft Azure groupe de ressources à partir de l’application logique où la ressource est créée. Oui
    WorkflowName string Nom de la ressource d’application logique. Oui
    TriggerName string Nom du déclencheur créé dans Logic Apps. Oui

    Paramètres spécifiques de la cible

    • Microsoft Defender

      Aucun paramètre supplémentaire.

    • Microsoft Sentinel

      Ces paramètres sont valides pour l’outil KQL où la cible est Microsoft Sentinel.

    Settings:
      Target: Sentinel
      # The ID of the AAD Organization that the Sentinel workspace is in.
      TenantId: '{{TenantId}}'
      # The id of the Azure Subscription that the Sentinel workspace is in.
      SubscriptionId: '{{SubscriptionId}}'
      # The name of the Resource Group that the Sentinel workspace is in.
      ResourceGroupName: '{{ResourceGroupName}}'
      # The name of the Sentinel workspace.
      WorkspaceName: '{{WorkspaceName}}'
    
    • Kusto

      Ces paramètres sont valides pour l’outil KQL où la cible est Kusto.

    Settings:
      # The Kusto cluster URL. 
      Cluster: 
      # The Kusto database name.
      Database: 
    

    Authentification

    Security Copilot prend en charge plusieurs schémas d’authentification des outils. Consultez Types d’authentification. Pour obtenir des exemples sur les différents types d’authentification, consultez Plug-in d’API.

    Jeu Description Prise en charge du manifeste Copilot Prise en charge d’OpenAI +
    None Aucune authentification Oui Oui
    Basic Authentification de base Oui Non
    ApiKey Authentification basée sur ApiKey. ApiKey est passé dans un en-tête ou un paramètre de requête personnalisé. Oui Oui*
    ServiceHttp Authentification basée sur le jeton fourni. Oui Oui
    OAuthAuthorizationCodeFlow Le flux de code d’autorisation OAuth 2.0 est une méthode d’authentification plus sécurisée et plus complexe utilisée pour accorder l’accès à des applications tierces sans partager les informations d’identification de l’utilisateur. Oui Oui
    OAuthClientCredentialsFlow Similaire à l’authentification de base, mais utilisée pour la communication de serveur à serveur à la place ou lors de l’accès à des données publiques qui ne nécessitent pas d’autorisations spécifiques à l’utilisateur. Oui Non
    OAuthPasswordGrantFlow Un moyen hérité d’échanger les informations d’identification d’un utilisateur contre un jeton d’accès à l’aide du type d’octroi de mot de passe OAuth 2.0. Il n’est plus recommandé. Oui Non
    AAD Microsoft Entra Accès à l’application uniquement. Oui Oui*
    AADDelegated Accès utilisateur + Microsoft Entra Application uniquement. Oui Oui*
    • +Ce champ est utilisé pour indiquer les deux types de chargement pris en charge dans Security Copilot.

    • * Celles-ci représentent des méthodes d’authentification qui vont au-delà de ce qui était initialement pris en charge par OpenAI.

    Types d’authentification

    Le tableau présente les paramètres pris en charge pour chaque type d’authentification.

    Type d’authentification Setting Description
    AAD ou AADDelegated EntraScopes Liste séparée par des virgules des étendues Microsoft Entra à demander.
    Basic ou OAuthPasswordGrantFlow Username Nom d’utilisateur à utiliser pour l’authentification de base.
    Password Mot de passe à utiliser pour l’authentification de base.
    ApiKey Key Nom du paramètre header/query. La valeur par défaut est Authorization, mais peut être une valeur personnalisée. Par exemple, X-ApiKey.
    AuthScheme Nom du schéma d’authentification ajouté à la valeur lorsqu’il est utilisé dans un en-tête. Les options acceptables sont une chaîne vide, un porteur ou de base.
    Location Emplacement de la clé API, Header ou QueryParams. La valeur par défaut est En-tête.
    Value Clé/jeton à utiliser.
    ServiceHttp AccessToken Clé/jeton à utiliser. Bearer AuthScheme est ajouté au jeton dans l’en-tête de la demande d’autorisation.
    OAuthAuthorizationCodeFlowou ou OAuthClientCredentialsFlowOAuthPasswordGrantFlow TokenEndpoint Point de terminaison à partir duquel demander le jeton.
    Scopes Liste facultative d’étendues séparées par des virgules à demander.
    ClientId ID client à utiliser lors de la demande du jeton. Facultatif pour OAuthPasswordGrantFlow.
    ClientSecret Clé secrète client à utiliser lors de la demande du jeton. Facultatif pour OAuthPasswordGrantFlow.
    AuthorizationContentType Type de contenu utilisé lors de l’envoi de la demande de jeton. La valeur par défaut est application/x-www-form-urlencoded.
    OAuthAuthorizationCodeFlow AuthorizationEndpoint Point de terminaison à partir duquel demander le code d’autorisation.