Compartir a través de


Manifiesto del agente

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 herramienta ExtractHostname_DCA-090925 GPT 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 que RequiredSkillsets: ThreatIntelligence.DTI se debe agregar sin qué GetDnsResolutionsByIndicators herramienta no se invoca.

  • lookupIpAddressGeolocation: es en operationId la especificación de OpenAPI, a la que se hace referencia en el complemento DCA_SampleAPIPlugin de 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.
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.
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.
DisplayName string Nombre descriptivo para mostrar la interfaz de usuario.
Description string Resumen legible del propósito y la funcionalidad del agente.
Publisher string Nombre del publicador del agente.
Product string Producto de origen asociado al agente. Se usa para filtrar al enumerar definiciones de agente.
RequiredSkillsets string Conjuntos de aptitudes necesarios para que el agente funcione.
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.
    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:

    API
    GPT
    AGENT
    KQL
    LogicApp

    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(.)
    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.
    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.
    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.
    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
    Template string Plantilla de símbolo del sistema de GPT. Admite hasta 80 000 caracteres

    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.

    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.
    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.
    ResourceGroup string Microsoft Azure grupo de recursos de Logic App donde se crea el recurso.
    WorkflowName string Nombre del recurso de aplicación lógica.
    TriggerName string Nombre del desencadenador creado en Logic Apps.

    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
    Basic Autenticación básica No
    ApiKey Autenticación basada en ApiKey. ApiKey se pasa en un encabezado personalizado o un parámetro de consulta. Sí*
    ServiceHttp Autenticación basada en el token proporcionado.
    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.
    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. 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. No
    AAD Microsoft Entra acceso solo a la aplicación. Sí*
    AADDelegated Acceso de usuario y Microsoft Entra solo a la aplicación. 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.