Merk
Tilgang til denne siden krever autorisasjon. Du kan prøve å logge på eller endre kataloger.
Tilgang til denne siden krever autorisasjon. Du kan prøve å endre kataloger.
Organisasjoner kan legge til et lag med sikkerhet i Copilot Studio-agentene sine ved å koble dem til et kjøretidstrusselregistreringssystem. Når den er tilkoblet, kaller agenten dette systemet ved kjøring. Agenten gir systemet data slik at systemet kan avgjøre om et verktøy agenten planlegger å aktivere, er legitimt eller ikke. Systemet svarer deretter til Copilot Studio med et svar på enten «godkjenn» eller «blokk», noe som fører til at agenten aktiverer eller hopper over verktøyet tilsvarende. Hvis du vil ha mer informasjon om hvordan du kobler agenter til et eksisterende eksternt trusselgjenkjenningssystem, kan du se Aktivere ekstern trusselregistrering og beskyttelse for egendefinerte Copilot Studio-agenter.
Denne artikkelen er rettet mot utviklere, og beskriver hvordan du integrerer dine egne trusselgjenkjenningsfunksjoner som en sikkerhetsleverandør for Copilot Studio-agenter.
Integreringen er basert på en API som består av to endepunkter. Hovedendepunktet du må implementere, er analyze-tool-execution endepunktet. Du må vise dette endepunktet som et grensesnitt for trusselregistreringssystemet. Når kunder konfigurerer systemet som sitt eksterne trusselregistreringssystem, kaller agenten denne API-en hver gang den har til hensikt å aktivere et verktøy.
Bortsett fra analyze-tool-execution endepunktet, må du også vise et annet endepunkt, kalt validate.
validate Endepunktet brukes til å kontrollere tilstanden og beredskapen til endepunktet som en del av systemoppsettet.
Avsnittene nedenfor beskriver hvert endepunkt i detalj.
POST /validate
Hensikt: Kontrollerer at endepunktet for trusselregistrering kan nås og fungere. Brukes til første konfigurasjons- og konfigurasjonstesting.
Valider forespørsel
Metode: POST
URL-adresse:
https://{threat detection endpoint}/validate?api-version=2025-05-01Hoder:
Autorisasjon: Bærertoken for API-godkjenning
x-ms-correlation-id: GUID for sporing
Kropp: Tom
Valider svar
Eksempel på svar på 200 OK
{
"isSuccessful": true,
"status": "OK"
}
Eksempel på feilsvar
Hvis det oppstår en feil (mislykket HTTP-kode), returnerer endepunktet en feilkode, en melding og valgfri diagnostikk.
{
"errorCode": 5031,
"message": "Validation failed. Webhook service is temporarily unavailable.",
"httpStatus": 503,
"diagnostics": "{\\reason\\:\\Upstream dependency timeout\\}"
}
POST /analyse-verktøy-utførelse
Hensikt: Sender inn kontekst for kjøring av verktøy for risikoevaluering. Evaluerer forespørselen om kjøring av verktøy og svarer om verktøyet skal tillate eller blokkere kjøring av verktøyet.
Forespørsel om analysering av verktøyutføring
Metode: POST
URL-adresse:
https://{threat detection endpoint}/analyze-tool-execution?api-version=2025-05-01Hoder:
- Autorisasjon: Bærertoken for API-godkjenning
- Innholdstype: program/json
Kropp: JSON-objekt
Eksempel på forespørsel om analyse-verktøyutføring
POST https://security.contoso.com/api/agentSecurity/analyze-tool-execution?api-version=2025-05-01
Authorization: Bearer XXX……
x-ms-correlation-id: fbac57f1-3b19-4a2b-b69f-a1f2f2c5cc3c
Content-Type: application/json
{
"plannerContext": {
"userMessage": "Send an email to the customer",
"thought": "User wants to notify customer",
"chatHistory": [
{
"id": "m1",
"role": "user",
"content": "Send an email to the customer",
"timestamp": "2025-05-25T08:00:00Z"
},
{
"id": "m2",
"role": "assistant",
"content": "Which customer should I email?",
"timestamp": "2025-05-25T08:00:01Z"
},
{
"id": "m3",
"role": "user",
"content": "The customer is John Doe",
"timestamp": "2025-05-25T08:00:02Z"
}
],
"previousToolOutputs": [
{
"toolId": "tool-123",
"toolName": "Get customer email by name",
"outputs": {
"name": "email",
"description": "Customer's email address",
"type": {
"$kind": "String"
},
"value": "customer@foobar.com"
},
"timestamp": "2025-05-25T08:00:02Z"
}
]
},
"toolDefinition": {
"id": "tool-123",
"type": "PrebuiltToolDefinition",
"name": "Send email",
"description": "Sends an email to specified recipients.",
"inputParameters": [
{
"name": "to",
"description": "Receiver of the email",
"type": {
"$kind": "String"
}
},
{
"name": "bcc",
"description": "BCC of the email",
"type": {
"$kind": "String"
}
}
],
"outputParameters": [
{
"name": "result",
"description": "Result",
"type": {
"$kind": "String"
}
}
]
},
"inputValues": {
"to": "customer@foobar.com",
"bcc": "hacker@evil.com"
},
"conversationMetadata": {
"agent": {
"id": "agent-guid",
"tenantId": "tenant-guid",
"environmentId": "env-guid",
"isPublished": true
},
"user": {
"id": "user-guid",
"tenantId": "tenant-guid"
},
"trigger": {
"id": "trigger-guid",
"schemaName": "trigger-schema"
},
"conversationId": "conv-id",
"planId": "plan-guid",
"planStepId": "step-1"
}
}
Analyser svar på utførelse av verktøy
200 OK
Når forespørselen er gyldig, evalueres verktøybruken som er angitt i forespørselen, og enten tillates eller blokkeres, basert på de definerte kriteriene. Svaret kan inneholde følgende felt:
- blockAction (boolsk): Om handlingen skal blokkeres
- reasonCode (heltall, valgfritt): Numerisk kode som forklarer årsaken til blokken
- årsak (streng, valgfritt): Forklaring som kan leses av mennesker
- diagnostikk (objekt, valgfritt): Andre detaljer for sporing eller feilsøking
Eksempel på tillat svar
{
"blockAction": false
}
Eksempel på blokksvar
{
"blockAction": true,
"reasonCode": 112,
"reason": "The action was blocked because there is a noncompliant email address in the BCC field.",
"diagnostics": "{\\flaggedField\\:\\bcc\\,\\flaggedValue\\:\\hacker@evil.com\\}"
}
Eksempel på feilsvar
Hvis forespørselen ikke er gyldig, returneres et feilsvar med feilkode, melding, HTTP-status og valgfri diagnostikk.
{
"errorCode": 4001,
"message": "Missing required field: toolDefinition",
"httpStatus": 400,
"diagnostics": "{\\missingField\\:\\toolDefinition\\,\\traceId\\:\\abc-123\\}"
}
Referanse for forespørsels- og svartekststrukturer
Tabellene nedenfor beskriver innholdet i ulike objekter som brukes i forespørsels- og svarorganene for endepunktene.
ValidationResponse
| Navn | Type | Obligatorisk | Beskrivelse |
|---|---|---|---|
| isSuccessful | boolsk | Ja | Angir om valideringen ble sendt. |
| status | streng | Ja | Valgfri statusmelding eller partnerspesifikke detaljer. |
AnalyzeToolExecutionResponse
| Navn | Type | Obligatorisk | Beskrivelse |
|---|---|---|---|
| blockAction | boolsk | Ja | Angir om handlingen skal blokkeres. |
| reasonCode | heltall | Nei | Valgfri numerisk årsakskode, bestemt av partner. |
| grunn | streng | Nei | Valgfri forklaring som kan leses av mennesker. |
| Diagnostikk | streng | Nei | Valgfri frihåndsdiagnoseinformasjon for feilsøking eller telemetri. Må forhåndsserialiseres. |
ErrorResponse
| Navn | Type | Obligatorisk | Beskrivelse |
|---|---|---|---|
| errorCode | heltall | Ja | Numerisk identifikator for feilen (for eksempel 1001 = manglende felt, 2003 = godkjenningsfeil). |
| melding | streng | Ja | Lesbar forklaring av feilen. |
| httpStatus | heltall | Ja | HTTP-statuskode returnert av partneren. |
| Diagnostikk | streng | Nei | Valgfri frihåndsdiagnoseinformasjon for feilsøking eller telemetri. Må forhåndsserialiseres. |
EvaluationRequest
| Navn | Type | Obligatorisk | Beskrivelse |
|---|---|---|---|
| plannerContext | PlannerContext | Ja | Planner-kontekstdata. |
| toolDefinition | ToolDefinition | Ja | Detaljer for verktøydefinisjon. |
| inputValues | JSON-objekt | Ja | Ordliste over nøkkelverdipar som er angitt i verktøyet. |
| conversationMetadata | ConversationMetadata | Ja | Metadata om samtalekontekst, bruker og plansporing. |
PlannerContext
| Navn | Type | Obligatorisk | Beskrivelse |
|---|---|---|---|
| userMessage | streng | Ja | Den opprinnelige meldingen som ble sendt av agenten. |
| tanke | streng | Nei | Planner-forklaring for hvorfor dette verktøyet ble valgt. |
| chatHistory | ChatMessage[] | Nei | Liste over nylige chat-meldinger som er utvekslet med brukeren. |
| previousToolsOutputs | ToolExecutionOutput[] | Nei | Liste over nylige verktøyutdata. |
ChatMessage
| Navn | Type | Obligatorisk | Beskrivelse |
|---|---|---|---|
| id | streng | Ja | Unik identifikator for denne meldingen i samtalen. |
| rolle | streng | Ja | Kilde for meldingen (for eksempel bruker, assistent). |
| innhold | streng | Ja | Meldingsteksten. |
| timestamp | streng (dato/klokkeslett) | Nei | ISO 8601-tidsangivelse som angir når meldingen ble sendt. |
ToolExecutionOutputs
| Navn | Type | Obligatorisk | Beskrivelse |
|---|---|---|---|
| toolId | streng | Ja | Unik identifikator for denne meldingen i samtalen. |
| toolName | streng | Ja | Navnet på verktøyet. |
| Utganger | ExecutionOutput[] | Ja | Liste over utdata for utføring av verktøy. |
| timestamp | streng (dato/klokkeslett) | Nei | ISO 8601-tidsangivelse som angir når utføringen av verktøyet var fullført. |
ExecutionOutput
| Navn | Type | Obligatorisk | Beskrivelse |
|---|---|---|---|
| name | streng | Ja | Navnet på utdataparameteren. |
| description | streng | Nei | Forklaring på utdataverdien. |
| type | objekt | Nei | Datatype for utdataene. |
| verdi | JSON-dataverdi | Ja | Utdataverdien. |
ToolDefinition
| Navn | Type | Obligatorisk | Beskrivelse |
|---|---|---|---|
| id | streng | Ja | Unik identifikator for verktøyet. |
| type | streng | Ja | Angir hvilken type verktøy som brukes i planleggeren. |
| name | streng | Ja | Menneskelig lesbart navn på verktøyet. |
| description | streng | Ja | Sammendrag av hva verktøyet gjør. |
| inputParameters | ToolInput[] | Nei | Inndataparametere for verktøyet. |
| outputParameters | ToolOutput[] | Nei | Utdataparametere verktøyet returnerer etter kjøring. |
ToolInput
| Navn | Type | Obligatorisk | Beskrivelse |
|---|---|---|---|
| name | streng | Ja | Navn på inndataparameteren. |
| description | streng | Nei | Forklaring av den forventede verdien for denne inndataparameteren. |
| type | JSON-objekt | Nei | Datatype for inndataparameteren. |
ToolOutput
| Navn | Type | Obligatorisk | Beskrivelse |
|---|---|---|---|
| name | streng | Ja | Navnet på utdataparameteren. |
| description | streng | Nei | Forklaring av utdataverdien. |
| type | JSON-objekt | Nei | Type utdataverdi. |
ConversationMetadata
| Navn | Type | Obligatorisk | Beskrivelse |
|---|---|---|---|
| agent | AgentContext | Ja | Kontekstinformasjon for agent. |
| bruker | UserContext | Nei | Informasjon om brukeren som samhandler med agenten. |
| utløsende handling | TriggerContext | Nei | Informasjon om hva som utløste kjøringen av planleggeren. |
| conversationId | streng | Ja | ID for den pågående samtalen. |
| planId | streng | Nei | ID for planen som brukes til å oppfylle brukerforespørselen. |
| planStepId | streng | Nei | Trinn i planen som tilsvarer denne kjøringen av verktøyet. |
| parentAgentComponentId | streng | Nei | ID for komponenten for overordnet agent. |
AgentContext
| Navn | Type | Obligatorisk | Beskrivelse |
|---|---|---|---|
| id | streng | Ja | ID-en til agenten. |
| tenantId | streng | Ja | Leier der agenten befinner seg. |
| environmentId | streng | Ja | Miljø der agenten publiseres. |
| versjon | streng | Nei | Agentversjon (valgfritt hvis isPublished er usann). |
| isPublished | boolsk | Ja | Om denne kjøringskonteksten er en publisert versjon. |
UserContext
| Navn | Type | Obligatorisk | Beskrivelse |
|---|---|---|---|
| id | streng | Nei | Microsoft Entra-objekt-ID for brukeren. |
| tenantId | streng | Nei | Leier-ID for brukeren. |
TriggerContext
| Navn | Type | Obligatorisk | Beskrivelse |
|---|---|---|---|
| id | streng | Nei | IDen til utløseren som utløste planleggeren. |
| schemaName | streng | Nei | Navnet på utløserskjemaet som utløste planleggeren. |
Autentisering
Integreringen du utvikler, bør bruke Microsoft Entra ID-godkjenning. Følg instruksjonene på Integrer apper utviklerne bygger.
Fremgangsmåte for å utføre inkluderer følgende:
- Opprett en appregistrering for ressursen i leieren.
-
Vis et omfang for nett-API-en. Det eksponerte omfanget må være den grunnleggende URL-adressen for ressursen kundene kaller. Hvis API-url-adressen for eksempel er
https://security.contoso.com/api/threatdetection, må det eksponerte omfanget værehttps://security.contoso.com. - Avhengig av hvordan du implementerer tjenesten, må du implementere godkjenningslogikk og validere innkommende tokener. Du må dokumentere hvordan kunden må godkjenne appene sine. Det finnes flere måter å gjøre dette på, for eksempel ved å bruke en tillatelsesliste over app-ID-er, eller rollebasert tilgangskontroll (RBAC).
Krav til responstid
Agenten forventer et svar fra trusselregistreringssystemet innen mindre enn 1000 ms. Du bør sørge for at endepunktet svarer på samtalen innen denne tidsrammen. Hvis systemet ikke svarer i tide, oppfører agenten seg som om svaret er «tillatt», og aktiverer verktøyet.
API-versjonskontroll
I forespørsler angis API-versjonen via en api-version spørringsparameter (for eksempel api-version=2025-05-01). Implementeringen bør være tolerant for andre uventede felt og bør ikke mislykkes hvis nye verdier legges til i fremtiden. Partnere bør ikke bekrefte API-versjonen, da alle versjonene for øyeblikket anses som ikke-brytende. Partnere bør spore API-versjonene, men ikke mislykke forespørselen om å se en ny versjon.