Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Wichtig
Einige Informationen in diesem Artikel beziehen sich auf ein vorab veröffentlichtes Produkt, das vor der kommerziellen Veröffentlichung möglicherweise erheblich geändert wird. Microsoft übernimmt mit diesen Informationen keinerlei Gewährleistung, sei sie ausdrücklich oder konkludent.
Die Entwicklung eines Security Copilot-Agents und seiner Tools (Skills) erfordert eine Manifestdatei im YAML- oder JSON-Format (z. B. manifest.yaml). Diese Datei definiert Metadaten zum Toolsatz (Plug-In) und gibt an, wie die einzelnen Tools aufgerufen werden sollen.
Ein Agentmanifest enthält drei Schlüssel der obersten Ebene, die wie folgt aussehen:
Jeder Schlüssel enthält einen eigenen Satz von Unterschlüssel-Wert-Paaren, von denen einige je nach Toolformat erforderlich/optional sind.
In diesem Referenzhandbuch werden die Manifestfelder beschrieben, die zum Erstellen Security Copilot-Agents verfügbar sind.
Agent-YAML
Dies ist ein Beispiel für eine Beispieldatei 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
Der Agent folgt einem dreistufigen Prozess, um die untergeordneten Skills aufzurufen:
ExtractHostname: Verwendet das GPT-ToolExtractHostname_DCA-090925, um den Hostnamen aus der URL zu analysieren.GetDnsResolutionsByIndicators: Verwendet den Microsoft Threat Intelligence-Skillsatz , um die dem Hostnamen zugeordneten IP-Adressen abzurufen. Sie müssen das Plug-In unter Quellen > verwalten benutzerdefiniert aktivieren. Stellen Sie sicher, dassRequiredSkillsets: ThreatIntelligence.DTIhinzugefügt werden muss, ohne welchesGetDnsResolutionsByIndicatorsTool nicht aufgerufen wird.lookupIpAddressGeolocation: Ist dieoperationIdin der OpenAPI-Spezifikation, auf die im API-Plug-InDCA_SampleAPIPluginverwiesen wird, um Geolocationdaten für jede IP-Adresse nachzuschlagen. Eine Referenz finden Sie unter Build-API-Beispiel.
Beispiele
Sehen Sie sich die vollständige Liste der Samples-Auflistung an.
Das Agent-Beispiel für interaktive Agents finden Sie unter Interaktive Agents.
YAML-Manifestsyntax
Im Folgenden sind die Agent-Manifestparameter (Felder) für die drei Schlüssel der obersten Ebene und ihre Unterschlüssel aufgeführt:
Zusammenfassung des Deskriptorfelds
| Feld | Typ | Beschreibung | Einschränkungen | Erforderlich |
|---|---|---|---|---|
Name |
string | Interner Name des Skillsets. Muss ein eindeutiger Name im Arbeitsbereich sein. | Lässt nicht zu / , \ ? # @, darf keine Leerzeichen enthalten. |
Ja |
DisplayName |
string | Lesbarer Name des Skillsets. | Nein* | |
Description |
string | Lesbare Beschreibung des Skillsets. | Darf nicht NULL oder leer sein. | Ja |
Authorization |
Objekt | Legen Sie die Autorisierungswerte fest. Weitere Informationen finden Sie unter Authentifizierung . | Nein; Erforderlich für das API-Tool und SupportedAuthTypes ungleich None. |
|
SupportedAuthTypes |
Array | Liste der unterstützten Authentifizierungstypen für den Skillsatz. Weitere Informationen finden Sie unter Authentifizierung . | Nein; Erforderlich für das API-Tool |
(* impliziert empfohlen, aber nicht erforderlich)
AgentDefinitions-Feldzusammenfassung
| Feld | Typ | Beschreibung | Einschränkungen | Erforderlich |
|---|---|---|---|---|
Name |
string | Name, der für die Installation des Agents verwendet wird; | Darf keine Leerzeichen, einen Punkt (.) enthalten und darf nicht NULL oder leer sein. | Ja |
DisplayName |
string | Benutzerfreundlicher Name für die Anzeige der Benutzeroberfläche. | Ja | |
Description |
string | Für Menschen lesbare Zusammenfassung des Zwecks und der Funktionalität des Agenten. | Ja | |
Publisher |
string | Name des Herausgebers des Agents. | Ja | |
Product |
string | Dem Agent zugeordnetes Quellprodukt. Wird zum Filtern beim Aufzählen von Agentdefinitionen verwendet. | Ja | |
RequiredSkillsets |
string | Skillsets, die für die Funktion des Agents erforderlich sind. | Ja | |
AgentSingleInstanceConstraint |
string | Definiert, wo der Agent bereitgestellt werden kann. Kann auf None, Workspaceoder Tenantfestgelegt werden. - None: Keine Einschränkung. - Workspace: Eine instance pro Arbeitsbereich. - Tenant: Ein instance pro Mandant. |
Nein | |
Settings |
Objekt | Wird nur auf den FetchSkill-Aufruf angewendet. | Nein | |
Triggers |
Objekt | Definiert, wie und wann der Agent ausgelöst wird. Mindestens ein Trigger ist erforderlich. Name: Ein beschreibender Name für den Trigger. DefaultPeriodSeconds: das Intervall in Sekunden für die geplante Ausführung. Trigger verhindern keine gleichzeitigen Ausführungen. Um die geplante Ausführung zu deaktivieren, legen Sie diesen Wert auf 0 fest. FetchSkill: Wenn festgelegt, ruft der Trigger zuerst diesen Skill (Tool) auf. Der Trigger erwartet ein Array von -Objekten. Für jedes -Objekt wird aufgerufen ProcessSkill , wobei die Werte des -Objekts als Eingaben für verwendet werden ProcessSkill. Ein gängiges Muster wäre ein ListAlerts FetchSkill und ein InvestigateAlertAgent ProcessSkill. Weitere Informationen zum Trigger finden Sie unter Agent-Komponenten. |
Name: Leerzeichen dürfen nicht enthalten sein. |
Ja; Name und ProcessSkill. |
PromptSkill |
Objekt | Aktivieren Sie die Interaktivität oder Chaterfahrung mit dem Agent. | Ja; Gilt nur für Interaktive Agents. |
SkillGroups-Feldzusammenfassung
Besteht aus einer Liste von Qualifikationsgruppen, einschließlich Format, Settingsund Skills.
| Feld | Typ | Beschreibung | Einschränkungen | Erforderlich |
|---|---|---|---|---|
Format |
string | Verfügbare Optionen finden Sie im Abschnitt Format. | Ja | |
Skills |
Objekt | Informationen zur Objektstruktur finden Sie im Abschnitt Fertigkeiten. | Ja; für Formate: GPT, API, KQL, AGENT |
|
Settings |
Objekt | Informationen zur Objektstruktur finden Sie im Abschnitt Einstellungen. | Ja; für Formate: API, GPT, KQL, AGENT |
Format (SkillGroups-Feld)
Optionen für Format-Feld:
Fertigkeiten (SkillGroups-Feld)
Objektstruktur für Skills Feld:
| Feld | Typ | Beschreibung | Einschränkungen | Erforderlich |
|---|---|---|---|---|
Name |
string | Interner Name für dieses Tool (Skill) | Darf keine Leerzeichen und period(.) enthalten. | Ja |
DisplayName |
string | Lesbarer Name für dieses Tool. | Empfohlen | |
Description |
string | Lesbare Beschreibung für dieses Tool | Darf nicht NULL oder leer sein. | Empfohlen |
Inputs |
Objekt | Liste von Namen, Beschreibung und Erforderlichen oder optionalen Objekten für Benutzereingaben für das Tool. | Nein | |
Settings |
Objekt | Benutzerdefinierte Einstellungen basierend auf dem Format der Fertigkeit. | Ja | |
ChildSkills |
array of strings | Eine Liste von Toolnamen, von denen der Agent während der Ausführung abhängig ist oder von denen diese aufgerufen werden. Die Tools führen bestimmte Aufgaben aus und werden vom Agent aufgerufen, um seine Ziele zu erfüllen. Ermöglicht die Verkettung oder Zusammensetzung mehrerer Tools, um ein komplexeres Agent-Verhalten zu erstellen. | Nein; Gilt jedoch nur für FORMAT: AGENT Skills und ist erforderlich. |
|
Interfaces |
Objekt | Legen Sie beim Erstellen eines interaktiven Agents auf InteractiveAgent fest. |
Ja | |
SuggestedPrompts |
Objekt | Prompt: Tatsächliche Eingabeaufforderung, die dem Benutzer angezeigt werden soll (wenn die Startaufforderung erfolgt) oder als Vorlage zum Generieren vorgeschlagener Eingabeaufforderungen verwendet werden soll. Title: Titel der Eingabeaufforderung. Personas: Der Personatyp, an dem eine Eingabeaufforderung ausgerichtet ist. IsStarterAgent: Legen Sie für die Starteingabeaufforderung auf true fest. Empfehlung: Legen Sie für Starter und vorgeschlagene Eingabeaufforderungen auf maximal zwei Sätze fest. |
Ja; Gilt nur für Interaktive Agents.
Title und Personas (nur für Startaufforderungen erforderlich). |
Einstellungen (SkillGroups-Feld)
Die Objektstruktur für das Settings Feld sieht für die unterstützten Formate wie folgt aus. Beispiele für Skills (Tool) finden Sie unter Toolbeispiele.
API
| Einstellungsname | Typ | Beschreibung | Einschränkungen | Erforderlich |
|---|---|---|---|---|
OpenApiSpecUrl |
string | URL zur öffentlichen OpenAPI-Spezifikation. | Ja | |
EndpointUrl |
string | URL zum öffentlichen Endpunkt. | Nein; Geben Sie nur an, wenn Sie den in der OpenAPI-Spezifikation aufgeführten API-Server nicht verwenden möchten. | |
EndpointUrlSettingName |
string | Anpassbare Einstellung zum Anfordern der URL für den öffentlichen Endpunkt während der Plug-In-Einrichtung. | Nein; Geben Sie nur an, wenn der API-Endpunkt konfigurierbar sein soll. | |
EnableSkillContextApi |
bool | Legen Sie dies nur fest, wenn die API-Tools Zugriff auf die SkillContext-API benötigen. | Nein |
GPT
| Einstellungsname | Typ | Beschreibung | Einschränkungen | Erforderlich |
|---|---|---|---|---|
ModelName |
string | Wählt aus, welches GPT-Modell verwendet werden soll. | Muss gpt-4.1 sein. | Ja |
Template |
string | GPT-Eingabeaufforderungsvorlage. | Unterstützt bis zu 80.000 Zeichen | Ja |
AGENT
| Einstellungsname | Typ | Beschreibung | Einschränkungen | Erforderlich |
|---|---|---|---|---|
Instructions |
string | Anleitungen oder klare Anweisungen, die das Verhalten und die Mission des Agents definieren. Die Anleitung wird verwendet, um die Antworten des Agents zu steuern und sicherzustellen, dass sie dem beabsichtigten Anwendungsfall entspricht. | In der Regel in natürlicher Sprache geschrieben und enthält Formatierungen wie Markdown oder Kommentare. | Ja |
KQL
| Einstellungsname | Typ | Beschreibung | Einschränkungen | Erforderlich |
|---|---|---|---|---|
Target |
string | Wählen Sie das System oder die Plattform aus, auf dem bzw. der das Tool ausgeführt wird. Weitere Informationen finden Sie unter Zielspezifische Einstellungen. | Ja | |
Template |
string | KQL-Eingabeaufforderungsvorlage. | Unterstützt bis zu 80.000 Zeichen. | Ja, wenn TemplateUrl nicht angegeben ist. |
TemplateUrl |
string | Öffentliche URL zum Herunterladen der KQL-Eingabeaufforderungsvorlage (bis zu 80.000 Zeichen). | Ja. Geben Sie entweder TemplatUrl oder Template an, aber nicht beides. |
|
PackageUrl |
string | Öffentliche URL für die ZIP-Datei mit der darin enthaltenen KQL-Eingabeaufforderungsvorlage. Hinweis: Wird auf SkillGroup-Ebene angegeben. | Ja, wenn Template oder TemplateUrl nicht angegeben sind. |
|
TemplateFile |
string | Relativer Pfad zur KQL-Eingabeaufforderungsvorlage (bis zu 80.000 Zeichen) in der PackageUrl ZIP-Datei. |
Ja, wenn PackageUrl angegeben ist. |
LogicApp
| Einstellungsname | Typ | Beschreibung | Erforderlich |
|---|---|---|---|
SubscriptionId |
string | Microsoft Azure-Abonnement-ID von Logic Apps. Das Abonnement muss sich im selben Mandanten wie der Security Copilot Benutzermandanten befinden. | Ja |
ResourceGroup |
string | Microsoft Azure Ressourcengruppe aus Logik-App, in der die Ressource erstellt wird. | Ja |
WorkflowName |
string | Name der Logik-App-Ressource. | Ja |
TriggerName |
string | Name des triggers, der in Logic Apps erstellt wurde. | Ja |
Zielspezifische Einstellungen
Microsoft Defender
Keine zusätzlichen Einstellungen.
Microsoft Sentinel
Diese Einstellungen gelten für das KQL-Tool, bei dem das Ziel Microsoft Sentinel ist.
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
Diese Einstellungen gelten für das KQL-Tool, bei dem das Ziel Kusto ist.
Settings:
# The Kusto cluster URL.
Cluster:
# The Kusto database name.
Database:
Authentifizierung
Security Copilot unterstützt mehrere Schemas für die Authentifizierung von Tools. Weitere Informationen finden Sie unter Authentifizierungstypen. Beispiele zu den verschiedenen Authentifizierungstypen finden Sie unter API-Plug-In.
| Schema | Beschreibung | Unterstützung des Copilot-Manifests | OpenAI-Unterstützung + |
|---|---|---|---|
None |
Keine Authentifizierung | Ja | Ja |
Basic |
Standardauthentifizierung | Ja | Nein |
ApiKey |
ApiKey-basierte Authentifizierung. ApiKey wird in einem benutzerdefinierten Header oder Abfrageparameter übergeben. | Ja | Ja* |
ServiceHttp |
Authentifizierung basierend auf dem bereitgestellten Token. | Ja | Ja |
OAuthAuthorizationCodeFlow |
Der OAuth 2.0-Autorisierungscodefluss ist eine sicherere und komplexere Authentifizierungsmethode, die verwendet wird, um Zugriff auf Anwendungen von Drittanbietern zu gewähren, ohne Benutzeranmeldeinformationen freizugeben. | Ja | Ja |
OAuthClientCredentialsFlow |
Ähnlich wie die Standardauthentifizierung, wird aber stattdessen für die Server-zu-Server-Kommunikation oder beim Zugriff auf öffentliche Daten verwendet, für die keine benutzerspezifischen Berechtigungen erforderlich sind. | Ja | Nein |
OAuthPasswordGrantFlow |
Eine Legacy-Methode zum Austauschen der Anmeldeinformationen eines Benutzers gegen ein Zugriffstoken mithilfe des OAuth 2.0-Kennworts. Dies wird nicht mehr empfohlen. | Ja | Nein |
AAD |
Microsoft Entra Nur-Anwendungszugriff. | Ja | Ja* |
AADDelegated |
Benutzer + Microsoft Entra Nur-Anwendungszugriff. | Ja | Ja* |
+Dieses Feld wird verwendet, um die zwei verschiedenen Uploadtypen anzugeben, die in Security Copilot unterstützt werden.*Diese stellen Authentifizierungsmethoden dar, die über das hinausgehen, was ursprünglich von OpenAI unterstützt wurde.
Authentifizierungstypen
Die Tabelle enthält die unterstützten Einstellungen für jeden Authentifizierungstyp.
| Authentifizierungstyp | Einstellung | Beschreibung |
|---|---|---|
AAD oder AADDelegated |
EntraScopes |
Eine durch Trennzeichen getrennte Liste von Microsoft Entra bereichen, die anzufordern sind. |
Basic oder OAuthPasswordGrantFlow |
Username |
Der Benutzername, der für die Standardauthentifizierung verwendet werden soll. |
Password |
Das Kennwort, das für die Standardauthentifizierung verwendet werden soll. | |
ApiKey |
Key |
Der Name des Header-/Abfrageparameters. Der Standardwert ist Authorization, kann aber ein benutzerdefinierter Wert sein. Beispiel: X-ApiKey. |
AuthScheme |
Der Name des Authentifizierungsschemas, das dem Wert vorangestellt wird, wenn es in einem Header verwendet wird. Zulässige Optionen sind eine leere Zeichenfolge, ein Bearer oder Basic. | |
Location |
Der Speicherort des API-Schlüssels, entweder Header oder QueryParams. Der Standardwert ist Header. | |
Value |
Der zu verwendende Schlüssel/Token. | |
ServiceHttp |
AccessToken |
Der zu verwendende Schlüssel/Token. Bearer AuthScheme wird dem Token im Autorisierungsanforderungsheader vorangestellt. |
OAuthAuthorizationCodeFlowoder oder OAuthClientCredentialsFlowOAuthPasswordGrantFlow |
TokenEndpoint |
Der Endpunkt, von dem das Token angefordert werden soll. |
Scopes |
Eine optionale durch Trennzeichen getrennte Liste von Bereichen, die anzufordern sind. | |
ClientId |
Die Client-ID, die beim Anfordern des Tokens verwendet werden soll. Optional für OAuthPasswordGrantFlow. |
|
ClientSecret |
Der geheime Clientschlüssel, der beim Anfordern des Tokens verwendet werden soll. Optional für OAuthPasswordGrantFlow. |
|
AuthorizationContentType |
Der Inhaltstyp, der beim Senden der Tokenanforderung verwendet wird. Der Standardwert ist application/x-www-form-urlencoded. | |
OAuthAuthorizationCodeFlow |
AuthorizationEndpoint |
Der Endpunkt, von dem der Autorisierungscode anzufordern ist. |