Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Importante
Parte de la información contenida en este artículo se refiere a un producto preliminar que puede sufrir modificaciones sustanciales antes de su lanzamiento comercial. Microsoft no otorga garantías, expresas o implícitas, con respecto a la información que aquí se proporciona.
El desarrollo de un agente de Security Copilot y sus herramientas (aptitudes) requieren un archivo de manifiesto en formato YAML o JSON (por ejemplo, manifest.yaml). Este archivo define los metadatos sobre el conjunto de herramientas (complemento) y especifica cómo se debe invocar cada herramienta.
Un manifiesto de agente incluye tres claves de nivel superior que son las siguientes:
Cada clave contiene su propio conjunto de pares de subclave/valor, algunos de los cuales son campos obligatorios o opcionales en función del formato de la herramienta.
En esta guía de referencia se describen los campos de manifiesto disponibles para crear agentes Security Copilot.
YAML del agente
Este es un ejemplo de un archivo de ejemplo manifest.yaml .
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
El agente sigue un proceso de tres pasos para invocar las aptitudes secundarias:
ExtractHostname: usa la herramientaExtractHostname_DCA-090925GPT para analizar el nombre de host de la dirección URL.GetDnsResolutionsByIndicators: usa el conjunto de aptitudes de Microsoft Threat Intelligence para recuperar las direcciones IP asociadas al nombre de host. Debe habilitar el complemento en Administrar orígenes > personalizados. Asegúrese de queRequiredSkillsets: ThreatIntelligence.DTIse debe agregar sin quéGetDnsResolutionsByIndicatorsherramienta no se invoca.lookupIpAddressGeolocation: es enoperationIdla especificación de OpenAPI, a la que se hace referencia en el complementoDCA_SampleAPIPluginde API para buscar datos de geolocalización para cada dirección IP. Para obtener referencia, consulte Ejemplo de API de compilación.
Muestras
Consulte la lista completa de la colección Samples.
Para obtener el ejemplo de agente en el agente interactivo, consulte Agentes interactivos.
Sintaxis YAML del manifiesto
A continuación se muestran los parámetros de manifiesto del agente (campos) para las tres claves de nivel superior y sus subclaves:
Resumen del campo descriptor
| Campo | Tipo | Descripción | Restricciones | Obligatorio |
|---|---|---|---|---|
Name |
string | Nombre interno del conjunto de aptitudes. Debe ser un nombre único en el área de trabajo. | No permite / , \ ? # @; no puede contener espacios en blanco. |
Sí |
DisplayName |
string | Nombre legible del conjunto de aptitudes. | No* | |
Description |
string | Descripción legible del conjunto de aptitudes. | No puede ser null ni estar vacío. | Sí |
Authorization |
object | Establezca los valores de autorización. Para obtener más información, consulte Autenticación para obtener más detalles. | No; Necesario para la herramienta de API y SupportedAuthTypes no es igual a None. |
|
SupportedAuthTypes |
matriz | Lista de tipos de autenticación admitidos para el conjunto de aptitudes. Para obtener más información, consulte Autenticación para obtener más detalles. | No; Necesario para la herramienta de API |
(* implica que se recomienda pero no es necesario)
Resumen del campo AgentDefinitions
| Campo | Tipo | Descripción | Restricciones | Obligatorio |
|---|---|---|---|---|
Name |
string | Nombre utilizado para instalar el agente; | No puede contener espacios en blanco, punto (.) y no pueden ser nulos o vacíos. | Sí |
DisplayName |
string | Nombre descriptivo para mostrar la interfaz de usuario. | Sí | |
Description |
string | Resumen legible del propósito y la funcionalidad del agente. | Sí | |
Publisher |
string | Nombre del publicador del agente. | Sí | |
Product |
string | Producto de origen asociado al agente. Se usa para filtrar al enumerar definiciones de agente. | Sí | |
RequiredSkillsets |
string | Conjuntos de aptitudes necesarios para que el agente funcione. | Sí | |
AgentSingleInstanceConstraint |
string | Define dónde se puede implementar el agente. Se puede establecer en None, Workspaceo Tenant. - None: sin restricción. - Workspace: una instancia por área de trabajo. - Tenant: una instancia por inquilino. |
No | |
Settings |
object | Solo se aplica a la invocación FetchSkill. | No | |
Triggers |
object | Define cómo y cuándo se desencadena el agente. Se requiere al menos un desencadenador. Name: un nombre descriptivo para el desencadenador. DefaultPeriodSeconds: el intervalo en segundos para la ejecución programada. Los desencadenadores no impiden ejecuciones simultáneas. Para deshabilitar la ejecución programada, establezca este valor en 0. FetchSkill: si se establece, el desencadenador invoca primero esta aptitud (herramienta). El desencadenador espera una matriz de objetos. Para cada objeto, llama a ProcessSkill mediante los valores del objeto como entradas a ProcessSkill. Un patrón común sería tener un ListAlerts FetchSkill y un InvestigateAlertAgent ProcessSkill. Para obtener más información sobre el desencadenador, consulte Componentes del agente. |
Name: no puede contener espacios en blanco |
Sí; Name y ProcessSkill. |
PromptSkill |
objeto | Habilite la interactividad o la experiencia de chat con el agente. | Sí; Solo se aplica a agentes interactivos. |
Resumen del campo SkillGroups
Consta de una lista de grupos de aptitudes que incluye Format, Settings, y Skills.
| Campo | Tipo | Descripción | Restricciones | Obligatorio |
|---|---|---|---|---|
Format |
string | Vea la sección Formato para ver las opciones disponibles. | Sí | |
Skills |
object | Vea la sección Aptitudes para la estructura de objetos. | Sí; para formatos: GPT, API, , KQLAGENT |
|
Settings |
object | Vea sección Configuración de la estructura de objetos. | Sí; para formatos: API, GPT, , KQLAGENT |
Formato (campo SkillGroups)
Opciones para el campo Format:
Aptitudes (campo SkillGroups)
Estructura de objetos para el Skills campo:
| Campo | Tipo | Descripción | Restricciones | Obligatorio |
|---|---|---|---|---|
Name |
string | Nombre interno de esta herramienta (aptitud) | No puede contener espacios en blanco y period(.) | Sí |
DisplayName |
string | Nombre legible para esta herramienta. | Recomendado | |
Description |
string | Descripción legible para esta herramienta | No puede ser null ni estar vacío. | Recomendado |
Inputs |
objeto | Lista de objetos Name, Description y Required u optional para la entrada del usuario en la herramienta. | No | |
Settings |
object | Configuración personalizada basada en la aptitud Formato. | Sí | |
ChildSkills |
matriz de cadenas | Lista de nombres de herramientas de los que depende el agente o que invoca durante la ejecución. Las herramientas realizan tareas específicas y el agente las llama para cumplir sus objetivos. Permite el encadenamiento o la composición de varias herramientas para crear un comportamiento de agente más complejo. | No; Sin embargo, solo es aplicable y necesario para la FORMAT: AGENT aptitud. |
|
Interfaces |
objeto | Establézcalo InteractiveAgent en al compilar un agente interactivo. |
Sí | |
SuggestedPrompts |
object | Prompt: símbolo del sistema real para mostrar al usuario (si es el aviso de inicio) o usar como plantilla para generar mensajes sugeridos. Title: título del símbolo del sistema. Personas: el tipo de persona al que se alinea un símbolo del sistema. IsStarterAgent: se establece en true para el aviso de inicio. Recomendación: establezca en dos oraciones como máximo para Starter y los avisos sugeridos. |
Sí; Solo se aplica a agentes interactivos.
Title y Personas (solo es necesario para los avisos de inicio). |
Configuración (campo SkillGroups)
La estructura de objetos del campo es la Settings siguiente para los formatos admitidos. Para obtener ejemplos de aptitudes (herramientas), consulte Ejemplos de herramientas.
API
| Nombre de la configuración | Tipo | Descripción | Restricciones | Obligatorio |
|---|---|---|---|---|
OpenApiSpecUrl |
string | Dirección URL a la especificación pública de OpenAPI. | Sí | |
EndpointUrl |
string | Dirección URL al punto de conexión público. | No; Especifique solo si no desea usar el servidor de API que aparece en la especificación de OpenAPI. | |
EndpointUrlSettingName |
string | Configuración personalizable para solicitar la dirección URL del punto de conexión público durante la instalación del complemento. | No; Especifique solo si desea que el punto de conexión de API se pueda configurar. | |
EnableSkillContextApi |
bool | Establézcalo solo si las herramientas de API necesitan acceso a skillContext API. | No |
GPT
| Nombre de la configuración | Tipo | Descripción | Restricciones | Obligatorio |
|---|---|---|---|---|
ModelName |
string | Selecciona el modelo de GPT que se va a usar. | Debe ser gpt-4.1 | Sí |
Template |
string | Plantilla de símbolo del sistema de GPT. | Admite hasta 80 000 caracteres | Sí |
AGENTE
| Nombre de la configuración | Tipo | Descripción | Restricciones | Obligatorio |
|---|---|---|---|---|
Instructions |
string | Guía o instrucciones claras que definen el comportamiento y la misión del agente. La guía se usa para dirigir las respuestas del agente y asegurarse de que se alinea con el caso de uso previsto. | Normalmente se escribe en lenguaje natural e incluye formatos como markdown o comentarios. | Sí |
KQL
| Nombre de la configuración | Tipo | Descripción | Restricciones | Obligatorio |
|---|---|---|---|---|
Target |
string | Seleccione el sistema o la plataforma donde se ejecuta la herramienta. Consulte Configuración específica de destino. | Sí | |
Template |
string | Plantilla de símbolo del sistema de KQL. | Admite hasta 80 000 caracteres. | Sí, si TemplateUrl no se especifica. |
TemplateUrl |
string | Dirección URL pública para descargar la plantilla de solicitud de KQL (hasta 80 000 caracteres). | Sí. Especifique o TemplatUrlTemplate , pero no ambos. |
|
PackageUrl |
string | Dirección URL pública del archivo ZIP con la plantilla de solicitud de KQL en él. Nota: Se especifica en el nivel SkillGroup. | Sí si Template se especifica o TemplateUrl no. |
|
TemplateFile |
string | Ruta de acceso relativa a la plantilla de símbolo del sistema de KQL (hasta 80 000 caracteres) en el PackageUrl archivo ZIP. |
Sí, si PackageUrl se especifica. |
LogicApp
| Nombre de la configuración | Tipo | Descripción | Obligatorio |
|---|---|---|---|
SubscriptionId |
string | Microsoft Azure identificador de suscripción de Logic Apps. La suscripción debe estar en el mismo inquilino que el inquilino de usuario Security Copilot. | Sí |
ResourceGroup |
string | Microsoft Azure grupo de recursos de Logic App donde se crea el recurso. | Sí |
WorkflowName |
string | Nombre del recurso de aplicación lógica. | Sí |
TriggerName |
string | Nombre del desencadenador creado en Logic Apps. | Sí |
Configuración específica de destino
Microsoft Defender
No hay ninguna configuración adicional.
Microsoft Sentinel
Esta configuración es válida para la herramienta KQL donde el destino es 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
Esta configuración es válida para la herramienta KQL, donde el destino es Kusto.
Settings:
# The Kusto cluster URL.
Cluster:
# The Kusto database name.
Database:
Autenticación
Security Copilot admite varios esquemas para autenticar herramientas. Consulte Tipos de autenticación. Para obtener ejemplos sobre los diferentes tipos de autenticación, consulte Complemento de API.
| Combinación | Descripción | Compatibilidad con manifiestos de Copilot | Compatibilidad con OpenAI + |
|---|---|---|---|
None |
Sin autenticación | Sí | Sí |
Basic |
Autenticación básica | Sí | No |
ApiKey |
Autenticación basada en ApiKey. ApiKey se pasa en un encabezado personalizado o un parámetro de consulta. | Sí | Sí* |
ServiceHttp |
Autenticación basada en el token proporcionado. | Sí | Sí |
OAuthAuthorizationCodeFlow |
OAuth 2.0 Authorization Code Flow es un método de autenticación más seguro y complejo que se usa para conceder acceso a aplicaciones de terceros sin compartir credenciales de usuario. | Sí | Sí |
OAuthClientCredentialsFlow |
Similar a la autenticación básica, pero se usa para la comunicación de servidor a servidor en su lugar o al acceder a datos públicos que no requieren permisos específicos del usuario. | Sí | No |
OAuthPasswordGrantFlow |
Una forma heredada de intercambiar las credenciales de un usuario por un token de acceso mediante el tipo de concesión de contraseña de OAuth 2.0. Ya no se recomienda. | Sí | No |
AAD |
Microsoft Entra acceso solo a la aplicación. | Sí | Sí* |
AADDelegated |
Acceso de usuario y Microsoft Entra solo a la aplicación. | Sí | Sí* |
+Este campo se usa para indicar los dos tipos diferentes de carga admitidos en Security Copilot.*Estos representan métodos de autenticación que se extienden más allá de lo que inicialmente admitía OpenAI.
Tipos de autenticación
En la tabla se muestra la configuración admitida para cada tipo de autenticación.
| Tipo de autenticación | Configuración | Descripción |
|---|---|---|
AAD o AADDelegated |
EntraScopes |
Lista separada por comas de Microsoft Entra ámbitos que se van a solicitar. |
Basic o OAuthPasswordGrantFlow |
Username |
Nombre de usuario que se va a usar para la autenticación básica. |
Password |
Contraseña que se va a usar para la autenticación básica. | |
ApiKey |
Key |
Nombre del parámetro header/query. El valor predeterminado es Autorización, pero puede ser un valor personalizado. Por ejemplo, X-ApiKey. |
AuthScheme |
Nombre del esquema de autenticación antepuesto al valor cuando se usa en un encabezado. Las opciones aceptables son una cadena vacía, portador o básica. | |
Location |
Ubicación de la clave de API, ya sea Header o QueryParams. El valor predeterminado es Encabezado. | |
Value |
Clave o token que se va a usar. | |
ServiceHttp |
AccessToken |
Clave o token que se va a usar. Bearer AuthScheme se antepone al token en encabezado de solicitud de autorización. |
OAuthAuthorizationCodeFlowo o OAuthClientCredentialsFlowOAuthPasswordGrantFlow |
TokenEndpoint |
Punto de conexión desde el que se va a solicitar el token. |
Scopes |
Lista opcional separada por comas de los ámbitos que se van a solicitar. | |
ClientId |
Identificador de cliente que se va a usar al solicitar el token. Opcional para OAuthPasswordGrantFlow. |
|
ClientSecret |
Secreto de cliente que se va a usar al solicitar el token. Opcional para OAuthPasswordGrantFlow. |
|
AuthorizationContentType |
Tipo de contenido usado al enviar la solicitud de token. El valor predeterminado es application/x-www-form-urlencoded. | |
OAuthAuthorizationCodeFlow |
AuthorizationEndpoint |
Punto de conexión desde el que se va a solicitar el código de autorización. |