Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
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’outilExtractHostname_DCA-090925GPT 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 queRequiredSkillsets: ThreatIntelligence.DTIdoit être ajouté sans quelGetDnsResolutionsByIndicatorsoutil n’est pas appelé.lookupIpAddressGeolocation: dans la spécification OpenAPI, qui est référencée dans le plug-inDCA_SampleAPIPlugind’API pour rechercher desoperationIddonné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 :
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. |