Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Importante
Algumas informações neste artigo estão relacionadas ao produto pré-lançado que pode ser modificado substancialmente antes de ser lançado comercialmente. A Microsoft não faz garantias, expressas ou implícitas, quanto às informações fornecidas aqui.
O desenvolvimento de um agente Security Copilot e as respetivas ferramentas (competências) requerem um ficheiro de manifesto no formato YAML ou JSON (por exemplo, manifest.yaml). Este ficheiro define metadados sobre o conjunto de ferramentas (plug-in) e especifica como cada ferramenta deve ser invocada.
Um manifesto de agente inclui três chaves de nível superior que são as seguintes:
Cada chave contém o seu próprio conjunto de pares de subchave/valor, alguns dos quais são campos obrigatórios/opcionais, consoante o formato da ferramenta.
Este guia de referência descreve os campos de manifesto disponíveis para a criação de agentes Security Copilot.
AGENTE YAML
Este é um exemplo de um ficheiro de exemplo 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
O agente segue um processo de três passos para invocar as competências subordinadas:
ExtractHostname: utiliza a ferramentaExtractHostname_DCA-090925GPT para analisar o nome do anfitrião do URL.GetDnsResolutionsByIndicators: utiliza o conjunto de competências do Microsoft Threat Intelligence para obter os endereços IP associados ao nome do anfitrião. Tem de ativar o plug-in em Gerir origens Personalizadas > . Certifique-se de queRequiredSkillsets: ThreatIntelligence.DTItem de ser adicionada sem a ferramenta queGetDnsResolutionsByIndicatorsnão é invocada.lookupIpAddressGeolocation: está naoperationIdespecificação OpenAPI, que é referenciada no plug-inDCA_SampleAPIPluginda API para procurar dados de geolocalização para cada endereço IP. Para referência, veja Build API sample (Exemplo de API de Criação).
Exemplos
Veja a lista completa da coleção Exemplos.
Para obter o exemplo do Agente no agente interativo, veja Agentes interativos.
Sintaxe YAML do manifesto
Seguem-se os parâmetros de manifesto do agente (campos) para as três chaves de nível superior e as respetivas subchaves:
Resumo do campo descritor
| Campo | Tipo | Descrição | Restrições | Obrigatório |
|---|---|---|---|---|
Name |
string | Nome interno do conjunto de competências. Tem de ser um nome exclusivo na área de trabalho. | Não permite / , \ ? # @; não pode conter espaço em branco. |
Sim |
DisplayName |
string | Nome legível por humanos do conjunto de competências. | Não* | |
Description |
string | Descrição legível por humanos do conjunto de competências. | Não pode ser nulo ou estar vazio. | Sim |
Authorization |
objeto | Defina os valores de autorização. Para obter mais informações, veja Autenticação para obter mais detalhes. | Não; Necessário para a ferramenta de API e SupportedAuthTypes não é igual a None. |
|
SupportedAuthTypes |
array | Lista de tipos de autenticação suportados para o conjunto de competências. Para obter mais informações, veja Autenticação para obter mais detalhes. | Não; Necessário para a ferramenta de API |
(* implica recomendado, mas não necessário)
Resumo do campo AgentDefinitions
| Campo | Tipo | Descrição | Restrições | Obrigatório |
|---|---|---|---|---|
Name |
string | Nome utilizado para instalar o agente; | Não é possível conter espaço em branco, ponto final (.) e não pode ser nulo ou estar vazio. | Sim |
DisplayName |
string | Nome amigável do utilizador para apresentação da IU. | Sim | |
Description |
string | Resumo legível por humanos da finalidade e funcionalidade do agente. | Sim | |
Publisher |
string | Nome do editor do agente. | Sim | |
Product |
string | Produto de origem associado ao agente. Utilizado para filtrar ao enumerar definições de agente. | Sim | |
RequiredSkillsets |
string | Conjuntos de competências necessários para o agente funcionar. | Sim | |
AgentSingleInstanceConstraint |
string | Define onde o agente pode ser implementado. Pode ser definido como None, Workspaceou Tenant. - None: sem restrições. - Workspace: uma instância por área de trabalho. - Tenant: uma instância por inquilino. |
Não | |
Settings |
objeto | Aplicado apenas à invocação FetchSkill. | Não | |
Triggers |
objeto | Define como e quando o agente é acionado. É necessário, pelo menos, um acionador. Name: um nome descritivo para o acionador. DefaultPeriodSeconds: o intervalo em segundos para a execução agendada. Os acionadores não impedem execuções simultâneas. Para desativar a execução agendada, defina este valor como 0. FetchSkill: se estiver definido, o acionador invoca primeiro esta competência (ferramenta). O acionador espera uma matriz de objetos. Para cada objeto, chama a utilização ProcessSkill dos valores do objeto como entradas para .ProcessSkill Um padrão comum seria ter uma ListAlerts FetchSkill e um InvestigateAlertAgent ProcessSkill. Para obter mais informações sobre o Acionador, veja Componentes do agente. |
Name: não é possível conter o espaço em branco |
Sim; Name e ProcessSkill. |
PromptSkill |
objeto | Ativar a interatividade ou a experiência de chat com o agente. | Sim; Aplicável apenas a agentes interativos. |
Resumo do campo SkillGroups
Consiste em uma lista de grupos de habilidades, incluindo Format, Settings e Skills.
| Campo | Tipo | Descrição | Restrições | Obrigatório |
|---|---|---|---|---|
Format |
string | Consulte a seção Formatar para obter as opções disponíveis. | Sim | |
Skills |
objeto | Consulte a seção Habilidades para obter a estrutura do objeto. | Sim; para formatos: GPT, , API, KQLAGENT |
|
Settings |
objeto | Consulte a seção Configurações para obter a estrutura do objeto. | Sim; para formatos: API, , GPT, KQLAGENT |
Formato (campo SkillGroups)
Opções do campo Format:
Habilidades (campo SkillGroups)
Estrutura do objeto para Skills o campo:
| Campo | Tipo | Descrição | Restrições | Obrigatório |
|---|---|---|---|---|
Name |
string | Nome interno desta ferramenta (competência) | Não é possível conter espaço em branco e ponto final(.) | Sim |
DisplayName |
string | Nome legível por humanos para esta ferramenta. | Recomendado | |
Description |
string | Descrição legível por humanos para esta ferramenta | Não pode ser nulo ou estar vazio. | Recomendado |
Inputs |
objeto | Lista de objetos Nome, Descrição e Obrigatórios ou opcionais para a entrada do utilizador na ferramenta. | Não | |
Settings |
objeto | Configurações personalizadas com base no Formato de habilidade. | Sim | |
ChildSkills |
matriz de cadeia de caracteres | Uma lista de nomes de ferramentas de que o agente depende ou invoca durante a execução. As ferramentas executam tarefas específicas e são chamadas pelo agente para cumprir os seus objetivos. Permite o encadeamento ou composição de múltiplas ferramentas para criar um comportamento de agente mais complexo. | Não; No entanto, aplicável e necessário apenas para FORMAT: AGENT competências. |
|
Interfaces |
objeto | Definido como ao InteractiveAgent criar um agente interativo. |
Sim | |
SuggestedPrompts |
objeto | Prompt: pedido real para apresentar ao utilizador (se pedido inicial) ou utilizar como modelo para gerar pedidos sugeridos. Title: título da linha de comandos. Personas: o tipo de persona a que um pedido está alinhado. IsStarterAgent: defina como verdadeiro para pedido inicial. Recomendação: defina para o máximo de duas frases para Starter e pedidos sugeridos. |
Sim; Aplicável apenas a agentes interativos.
Title e Personas (necessário apenas para pedidos de arranque). |
Configurações (campo SkillGroups)
A estrutura do objeto para o Settings campo é a seguinte para os Formatos suportados. Para obter exemplos de competências (ferramentas), veja Tool samples (Exemplos de ferramentas).
API
| Nome da configuração | Tipo | Descrição | Restrições | Obrigatório |
|---|---|---|---|---|
OpenApiSpecUrl |
string | URL para a especificação pública de OpenAPI. | Sim | |
EndpointUrl |
string | URL para o ponto final público. | Não; Especifique apenas se não quiser utilizar o servidor de API listado na especificação OpenAPI. | |
EndpointUrlSettingName |
string | Definição personalizável para pedir o URL para o ponto final público durante a configuração do plug-in. | Não; Especifique apenas se pretender que o ponto final da API seja configurável. | |
EnableSkillContextApi |
bool | Defina esta opção apenas se as ferramentas de API precisarem de acesso à API SkillContext. | Não |
GPT
| Nome da configuração | Tipo | Descrição | Restrições | Obrigatório |
|---|---|---|---|---|
ModelName |
string | Seleciona qual modelo GPT usar. | Tem de ser gpt-4.1 | Sim |
Template |
string | Modelo de prompt GPT. | Suporta até 80 000 carateres | Sim |
AGENTE
| Nome da configuração | Tipo | Descrição | Restrições | Obrigatório |
|---|---|---|---|---|
Instructions |
string | Orientação ou orientações claras que definem o comportamento e a missão do agente. A documentação de orientação é utilizada para orientar as respostas do agente e garantir que está alinhada com o caso de utilização pretendido. | Normalmente escrito em linguagem natural e inclui formatação como markdown ou comentários. | Sim |
KQL
| Nome da configuração | Tipo | Descrição | Restrições | Obrigatório |
|---|---|---|---|---|
Target |
string | Selecione o sistema ou plataforma onde a ferramenta é executada. Veja Definições específicas do destino. | Sim | |
Template |
string | Modelo de prompt do KQL. | Dá suporte a até 80.000 caracteres. | Sim, se TemplateUrl não for especificado. |
TemplateUrl |
string | URL público para transferir o modelo de pedido de KQL (até 80 000 carateres). | Sim. Especifique ou TemplatUrlTemplate , mas não ambos. |
|
PackageUrl |
string | URL público para o arquivo zip com o modelo de prompt do KQL. Nota: especificado ao nível do SkillGroup. | Sim se Template ou TemplateUrl não forem especificados. |
|
TemplateFile |
string | Caminho relativo para o modelo de pedido de aviso KQL (até 80 000 carateres) no PackageUrl ficheiro zip. |
Sim, se PackageUrl for especificado. |
LogicApp
| Nome da configuração | Tipo | Descrição | Obrigatório |
|---|---|---|---|
SubscriptionId |
string | ID da subscrição do Microsoft Azure do Logic Apps. A subscrição tem de estar no mesmo inquilino que o inquilino Security Copilot utilizador. | Sim |
ResourceGroup |
string | O Microsoft Azure grupo de recursos da Aplicação Lógica onde o recurso é criado. | Sim |
WorkflowName |
string | Nome do recurso da Aplicação Lógica. | Sim |
TriggerName |
string | Nome do acionador criado no Logic Apps. | Sim |
Configurações específicas do destino
Microsoft Defender
Sem definições adicionais.
Microsoft Sentinel
Estas definições são válidas para a ferramenta KQL onde o Destino é 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
Estas definições são válidas para a ferramenta KQL em que Target é Kusto.
Settings:
# The Kusto cluster URL.
Cluster:
# The Kusto database name.
Database:
Autenticação
Security Copilot suporta vários esquemas para ferramentas de autenticação. Veja Tipos de autenticação. Para obter exemplos sobre os diferentes tipos de autenticação, veja Plug-in da API.
| Esquema | Descrição | Suporte do Manifesto copilot | Suporte openAI + |
|---|---|---|---|
None |
Sem autenticação | Sim | Sim |
Basic |
Autenticação básica | Sim | Não |
ApiKey |
Autenticação baseada em ApiKey. O ApiKey é transmitido num parâmetro de cabeçalho ou consulta personalizado. | Sim | Sim* |
ServiceHttp |
Autenticação com base no token fornecido. | Sim | Sim |
OAuthAuthorizationCodeFlow |
O OAuth 2.0 Authorization Code Flow é um método de autenticação mais seguro e complexo utilizado para conceder acesso a aplicações de terceiros sem partilhar credenciais de utilizador. | Sim | Sim |
OAuthClientCredentialsFlow |
Semelhante à Autenticação Básica, mas utilizada para comunicação servidor a servidor ou ao aceder a dados públicos que não requerem permissões específicas do utilizador. | Sim | Não |
OAuthPasswordGrantFlow |
Uma forma legada de trocar as credenciais de um utilizador por um token de acesso com o tipo de concessão de palavra-passe OAuth 2.0. Já não é recomendado. | Sim | Não |
AAD |
Microsoft Entra acesso apenas à Aplicação. | Sim | Sim* |
AADDelegated |
Acesso apenas a Utilizador + Microsoft Entra Aplicação. | Sim | Sim* |
+Este campo é utilizado para indicar os dois tipos diferentes de carregamento suportados no Security Copilot.*Estes representam métodos de autenticação que se estendem para além do que foi inicialmente suportado pela OpenAI.
Tipos de autenticação
A tabela mostra as definições suportadas para cada tipo de autenticação.
| Tipo de autenticação | Configuração | Descrição |
|---|---|---|
AAD ou AADDelegated |
EntraScopes |
Uma lista separada por vírgulas de âmbitos Microsoft Entra a pedir. |
Basic ou OAuthPasswordGrantFlow |
Username |
O nome de utilizador a utilizar para autenticação básica. |
Password |
A palavra-passe a utilizar para autenticação básica. | |
ApiKey |
Key |
O nome do parâmetro de cabeçalho/consulta. O valor predefinido é Autorização, mas pode ser um valor personalizado. Por exemplo, X-ApiKey. |
AuthScheme |
O nome do esquema de autenticação foi anexado ao Valor quando utilizado num cabeçalho. As opções aceitáveis são uma cadeia vazia, Portador ou Básico. | |
Location |
A localização da chave de API, Cabeçalho ou QueryParams. A predefinição é Cabeçalho. | |
Value |
A chave/token a utilizar. | |
ServiceHttp |
AccessToken |
A chave/token a utilizar. O Portador AuthScheme está pré-anexado ao token no Cabeçalho do pedido de autorização. |
OAuthAuthorizationCodeFlowou ou OAuthClientCredentialsFlowOAuthPasswordGrantFlow |
TokenEndpoint |
O ponto final a partir do que pedir o token. |
Scopes |
Uma lista opcional separada por vírgulas de âmbitos a pedir. | |
ClientId |
O ID de cliente a utilizar ao pedir o token. Opcional para OAuthPasswordGrantFlow. |
|
ClientSecret |
O segredo do cliente a utilizar ao pedir o token. Opcional para OAuthPasswordGrantFlow. |
|
AuthorizationContentType |
O tipo de conteúdo utilizado ao enviar o pedido de token. O valor predefinido é application/x-www-form-urlencoded. | |
OAuthAuthorizationCodeFlow |
AuthorizationEndpoint |
O ponto final para pedir o código de autorização. |