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.
Du kan opprette en RestApiPoller datakobling med Codeless Connector Framework (CCF) ved hjelp av denne artikkelen som et tillegg til Microsoft Sentinel REST-API for datakoblingsdokumenter.
Hver datakobling representerer en bestemt tilkobling til en Microsoft Sentinel datakobling. Én datakobling kan ha flere tilkoblinger, som henter data fra forskjellige endepunkter. Du kan fullføre distribusjonsmalen for CCF-datakoblingen ved hjelp av JSON-konfigurasjonen du bygger med denne artikkelen.
Hvis du vil ha mer informasjon, kan du se Opprette en kodeløs kobling for Microsoft Sentinel.
Opprette eller oppdatere datakoblinger
Finn den nyeste API-versjonen for stabil eller forhåndsversjon ved å create referere til eller update operasjoner i REST-API-dokumentene. Forskjellen mellom create og update operasjonene er at update det etag krever verdien.
PUT Metoden:
https://management.azure.com/subscriptions/{{subscriptionId}}/resourceGroups/{{resourceGroupName}}/providers/Microsoft.OperationalInsights/workspaces/{{workspaceName}}/providers/Microsoft.SecurityInsights/dataConnectors/{{dataConnectorId}}?api-version={{apiVersion}}
URI-parametere
Hvis du vil ha mer informasjon om den nyeste API-versjonen, kan du se Datakoblinger: opprette eller oppdatere URI-parametere.
| Navn | Beskrivelse |
|---|---|
dataConnectorId |
Datakoblings-ID-en. Det må være et unikt navn som er det samme som parameteren name i forespørselsteksten. |
resourceGroupName |
Navnet på ressursgruppen skiller ikke mellom store og små bokstaver. |
subscriptionId |
ID-en for målabonnementet. |
workspaceName |
Navnet på arbeidsområdet, ikke ID-en. Regex-mønsteret er ^[A-Za-z0-9][A-Za-z0-9-]+[A-Za-z0-9]$. |
api-version |
API-versjonen som skal brukes for denne operasjonen. |
Forespørselstekst
Forespørselsteksten for en RestApiPoller CCF-datakobling har følgende struktur:
{
"name": "{{dataConnectorId}}",
"kind": "RestApiPoller",
"etag": "",
"properties": {
"connectorDefinitionName": "",
"auth": {},
"request": {},
"response": {},
"paging": "",
"dcrConfig": ""
}
}
RestApiPoller
RestApiPoller er en KOPIF-datakobling for API-poller som du kan bruke til å tilpasse nyttelaster for sideveksling, autorisasjon og forespørsel/svar for datakilden.
| Navn | Obligatorisk | Type: | Beskrivelse |
|---|---|---|---|
name |
Sant | Streng | Det unike navnet på tilkoblingen som samsvarer med URI-parameteren. |
kind |
Sant | Streng | Verdien kind . Dette feltet må settes til RestApiPoller. |
etag |
GUID | Verdien etag . Dette feltet må stå tomt for oppretting av ny kobling. For oppdateringsoperasjoner etag må den samsvare med den eksisterende koblingen etag (GUID). |
|
properties.connectorDefinitionName |
Streng | Navnet på ressursen DataConnectorDefinition som definerer grensesnittkonfigurasjonen for datakoblingen. Hvis du vil ha mer informasjon, kan du gå til datakoblingsdefinisjon. |
|
properties.auth |
Sant | Nestet JSON | Godkjenningsegenskapene for avspørring av dataene. Hvis du vil ha mer informasjon, kan du gå til godkjenningskonfigurasjon. |
properties.request |
Sant | Nestet JSON | Nyttelasten for forespørsel for avspørring av dataene, for eksempel API-endepunktet. Hvis du vil ha mer informasjon, kan du gå til Be om konfigurasjon. |
properties. response |
Sant | Nestet JSON | Svarobjektet og den nestede meldingen API-en returnerer når den avspørrer dataene. Hvis du vil ha mer informasjon, kan du gå til Svarkonfigurasjon. |
properties.paging |
Nestet JSON | Nyttelasten for paginering når du avspørrer dataene. Hvis du vil ha mer informasjon, kan du gå til sidevekslingskonfigurasjon. | |
properties.dcrConfig |
Nestet JSON | De nødvendige parameterne når dataene sendes til en datainnsamlingsregel (DCR). Hvis du vil ha mer informasjon, kan du gå til DCR-konfigurasjon. |
Godkjenningskonfigurasjon
CCF støtter følgende godkjenningstyper:
Obs!
CCF OAuth2-implementering støtter ikke klientsertifikatlegitimasjon.
Som en anbefalt fremgangsmåte kan du bruke parametere i godkjenningsdelen i stedet for hardkodingslegitimasjon. Hvis du vil ha mer informasjon, kan du se Sikre konfidensielle inndata.
Hvis du vil opprette distribusjonsmalen, som også bruker parametere, må du fjerne parameterne i denne inndelingen med en ekstra start [. Dette trinnet gjør det mulig for parameterne å tilordne en verdi basert på brukersamhandlingen med koblingen. Hvis du vil ha mer informasjon, kan du se Escape-tegn for maluttrykk.
Hvis du vil at legitimasjonen skal angis fra brukergrensesnittet, krever inndelingen connectorUIConfig at du angir de ønskede parameterne i instructions. Hvis du vil ha mer informasjon, kan du se definisjonsreferansen for Data connector for Codeless Connector Framework.
Enkel godkjenning
| Felt | Obligatorisk | Type: |
|---|---|---|
UserName |
Sant | Streng |
Password |
Sant | Streng |
Her er et eksempel på enkel godkjenning som bruker parametere definert i connectorUIconfig:
"auth": {
"type": "Basic",
"UserName": "[[parameters('username')]",
"Password": "[[parameters('password')]"
}
API-nøkkel
| Felt | Obligatorisk | Type: | Beskrivelse | Standardverdi |
|---|---|---|---|---|
ApiKey |
Sant | Streng | Brukerhemmelighetsnøkkel. | |
ApiKeyName |
Streng | Navnet på URI-toppteksten ApiKey som inneholder verdien. |
Authorization |
|
ApiKeyIdentifier |
Streng | Strengverdi for å klargjøre tokenet. | token |
|
IsApiKeyInPostPayload |
Boolsk | Verdi som bestemmer om hemmeligheten skal sendes i brødteksten POST i stedet for topptekst. |
false |
APIKey eksempler på godkjenning:
"auth": {
"type": "APIKey",
"ApiKey": "[[parameters('apikey')]",
"ApiKeyName": "X-MyApp-Auth-Header",
"ApiKeyIdentifier": "Bearer"
}
Resultatet av dette eksemplet er hemmeligheten som er definert fra brukerinndataene som sendes i følgende topptekst: X-MyApp-Auth-Header: Bearer apikey.
"auth": {
"type": "APIKey",
"ApiKey": "123123123",
}
Dette eksemplet bruker standardverdiene og resultatene i følgende topptekst: Authorization: token 123123123.
"auth": {
"type": "APIKey",
"ApiKey": "123123123",
"ApiKeyName": ""
}
Fordi ApiKeyName det er angitt eksplisitt til "", er resultatet følgende topptekst: Authorization: 123123123.
OAuth2
Codeless Connector Framework støtter OAuth 2.0 godkjenningskodetilskudd og klientlegitimasjon. Godkjenningskodetildelingstypen brukes av konfidensielle og offentlige klienter til å utveksle en godkjenningskode for et tilgangstoken.
Når brukeren returnerer til klienten via nettadressen for omadressering, får programmet godkjenningskoden fra nettadressen og bruker den til å be om et tilgangstoken.
| Felt | Obligatorisk | Type: | Beskrivelse |
|---|---|---|---|
ClientId |
Sant. | Streng | Klient-ID-en. |
ClientSecret |
Sant. | Streng | Klienthemmeligheten. |
AuthorizationCode |
Sann når grantType verdien er authorization_code. |
Streng | Hvis tildelingstypen er authorization_code, er denne feltverdien godkjenningskoden som godkjenningsserveren returnerte. |
Scope |
Sann for authorization_code tildelingstypen.Valgfritt for client_credentials tildelingstypen. |
Streng | En områdedelt liste over omfang for brukersamtykke. Hvis du vil ha mer informasjon, kan du se OAuth2-omfang og -tillatelser. |
RedirectUri |
Sann når grantType verdien er authorization_code. |
Streng | URL-adressen for omadressering må være https://portal.azure.com/TokenAuthorize/ExtensionName/Microsoft_Azure_Security_Insights. |
GrantType |
Sant. | Streng | Tildelingstypen. Kan være authorization_code eller client_credentials. |
TokenEndpoint |
Sant. | Streng | URL-adressen for å utveksle kode med et gyldig token i tildelingen authorization_code , eller en klient-ID og hemmelighet med et gyldig token i tildelingen client_credentials . |
TokenEndpointHeaders |
Objekt | Et valgfritt nøkkel-/verdiobjekt for å sende egendefinerte overskrifter til tokenserveren. | |
TokenEndpointQueryParameters |
Objekt | Et valgfritt nøkkel-/verdiobjekt for å sende egendefinerte spørringsparametere til tokenserveren. | |
AuthorizationEndpoint |
Sant. | Streng | Nettadressen for brukersamtykke authorization_code for flyten. |
AuthorizationEndpointHeaders |
Objekt | Et valgfritt nøkkel-/verdiobjekt for å sende egendefinerte overskrifter til godkjenningsserveren. | |
AuthorizationEndpointQueryParameters |
Objekt | Et valgfritt nøkkel-/verdipar som brukes i en forespørsel om godkjenningskodeflyt for OAuth2. |
Du kan bruke godkjenningskodeflyt til å hente data på vegne av en brukers tillatelser. Du kan bruke klientlegitimasjon til å hente data med programtillatelser. Dataserveren gir tilgang til programmet. Fordi det ikke finnes noen bruker i klientlegitimasjonsflyten, er det ikke nødvendig med godkjenningsendepunkt, bare et tokenendepunkt.
Her er et eksempel på OAuth2-tildelingstypen authorization_code :
"auth": {
"type": "OAuth2",
"ClientId": "[[parameters('appId')]",
"ClientSecret": "[[parameters('appSecret')]",
"tokenEndpoint": "https://login.microsoftonline.com/{{tenantId}}/oauth2/v2.0/token",
"authorizationEndpoint": "https://login.microsoftonline.com/{{tenantId}}/oauth2/v2.0/authorize",
"authorizationEndpointHeaders": {},
"authorizationEndpointQueryParameters": {
"prompt": "consent"
},
"redirectUri": "https://portal.azure.com/TokenAuthorize/ExtensionName/Microsoft_Azure_Security_Insights",
"tokenEndpointHeaders": {
"Accept": "application/json",
"Content-Type": "application/x-www-form-urlencoded"
},
"TokenEndpointQueryParameters": {},
"scope": "openid offline_access some_scope",
"grantType": "authorization_code"
}
Her er et eksempel på OAuth2-tildelingstypen client_credentials :
"auth": {
"type": "OAuth2",
"ClientId": "[[parameters('appId')]",
"ClientSecret": "[[parameters('appSecret')]",
"tokenEndpoint": "https://login.microsoftonline.com/{{tenantId}}/oauth2/v2.0/token",
"tokenEndpointHeaders": {
"Accept": "application/json",
"Content-Type": "application/x-www-form-urlencoded"
},
"TokenEndpointQueryParameters": {},
"scope": "openid offline_access some_scope",
"grantType": "client_credentials"
}
JWT
JSON Web Token -godkjenning (JWT) støtter henting av tokener via brukernavn og passordlegitimasjon og bruk av dem for API-forespørsler.
Grunnleggende eksempel
"auth": {
"type": "JwtToken",
"userName": {
"key": "username",
"value": "[[parameters('UserName')]"
},
"password": {
"key": "password",
"value": "[[parameters('Password')]"
},
"TokenEndpoint": "https://token_endpoint.contoso.com",
"IsJsonRequest": true,
"JwtTokenJsonPath": "$.access_token"
}
Legitimasjon i POST-brødtekst (standard)
"auth": {
"type": "JwtToken",
"userName": {
"key": "username",
"value": "[[parameters('UserName')]"
},
"password": {
"key": "password",
"value": "[[parameters('Password')]"
},
"TokenEndpoint": "https://api.example.com/token",
"Headers": {
"Accept": "application/json",
"Content-Type": "application/json"
},
"IsCredentialsInHeaders": false,
"IsJsonRequest": true,
"JwtTokenJsonPath": "$.access_token"
}
Legitimasjon i topptekster (enkel godkjenning)
"auth": {
"type": "JwtToken",
"userName": {
"key": "client_id",
"value": "[[parameters('ClientId')]"
},
"password": {
"key": "client_secret",
"value": "[[parameters('ClientSecret')]"
},
"TokenEndpoint": "https://api.example.com/oauth/token",
"Headers": {
"Accept": "application/json"
},
"IsCredentialsInHeaders": true,
"IsJsonRequest": true,
"JwtTokenJsonPath": "$.access_token",
"RequestTimeoutInSeconds": 30
}
Legitimasjon i overskrifter (brukertoken)
"auth": {
"type": "JwtToken",
"UserToken": "[[parameters('userToken')]",
"UserTokenPrepend": "Bearer",
"TokenEndpoint": "https://api.example.com/oauth/token",
"Headers": {
"Accept": "application/json"
},
"TokenEndpointHttpMethod": "GET",
"NoAccessTokenPrepend": true,
"JwtTokenJsonPath": "$.systemToken"
}
Følg denne godkjenningsflyten:
Send legitimasjon til for å
TokenEndpointhente JWT-token, når du brukeruserNameogpassword,IsCredentialsInHeadersbrukes til å bestemme hvor legitimasjonen skal plasseres i forespørselen.- Hvis
IsCredentialsInHeaders: true: Sender et grunnleggende godkjenningshode medusername:password. - Hvis
IsCredentialsInHeaders: false: Sender legitimasjon i enPOSTbrødtekst.
- Hvis
Trekk ut tokenet ved hjelp
JwtTokenJsonPathav eller fra svarhodet.Autorisasjonshodet for JWT-tokener er en konstant og vil alltid være «Autorisasjon».
| Felt | Obligatorisk | Type: | Beskrivelse |
|---|---|---|---|
type |
Sant | Streng | Typen. Må være JwtToken |
userName |
Sann (hvis userToken den ikke brukes) |
Objekt | Nøkkel-/verdiparet for legitimasjonen userName . Hvis userName og password sendes i hodeforespørselen value , angir du egenskapen med brukernavnet. Hvis userName og password sendes i brødtekstforespørselen, angir du Key og Value. |
password |
Sann (hvis userToken den ikke brukes) |
Objekt | Nøkkel-/verdiparet for passordlegitimasjonen. Hvis userName og password sendes i hodeforespørselen, angir du value egenskapen med userName. Hvis userName og password sendes i brødtekstforespørselen, angir du Key og Value. |
userToken |
Sann (hvis userName den ikke brukes) |
Streng | Brukertokenet som genereres av klienten for å få systemtokenet for godkjenning. |
UserTokenPrepend |
Falsk | Streng | Verdien som angir om tekst skal klargjøres før tokenet. Standard: Bearer. |
NoAccessTokenPrepend |
Falsk | Boolsk | Et tilgangsflagg som angir at tokenet ikke bør forberede noe. |
TokenEndpointHttpMethod |
Falsk | Streng | HTTP-metoden for tokenendepunkt. Det kan være Get eller Post. Standardverdien er Post. |
TokenEndpoint |
Sant | Streng | Url-endepunktet som brukes til å hente JWT-tokenet. |
IsCredentialsInHeaders |
Boolsk | Verdien som angir om legitimasjon skal sendes som et grunnleggende godkjenningshode (true) kontra en POST brødtekst (false), ignoreres når du bruker userToken. Standardverdien er false. |
|
IsJsonRequest |
Boolsk | Verdien som angir om forespørselen skal sendes i JSON (topptekst Content-Type = application/json) kontra skjemakodet (topptekst Content-Type = application/x-www-form-urlencoded). Standardverdien er false. |
|
JwtTokenJsonPath |
Streng | Verdien som angir JSONPath verdien som skal brukes til å trekke ut tokenet fra svaret. Eksempel: $.access_token. |
|
JwtTokenInResponseHeader |
Boolsk | Verdien som angir om tokenet skal trekkes ut fra svarhodet kontra brødteksten. Standardverdien er false. |
|
JwtTokenHeaderName. |
Streng | Verdien som angir topptekstnavnet når tokenet er i svarhodet. Standardverdien er Authorization. |
|
JwtTokenIdentifier |
Streng | Identifikatoren som brukes til å trekke ut JWT fra en prefikstokenstreng. | |
QueryParameters |
Objekt | De egendefinerte spørringsparameterne som skal inkluderes når du sender forespørselen til tokenendepunktet. | |
Headers |
Objekt | De egendefinerte overskriftene som skal inkluderes når du sender forespørselen til tokenendepunktet. | |
RequestTimeoutInSeconds |
Heltall | Tidsavbruddet for forespørselen i sekunder. Standardverdien er 100, med en maksimumsverdi på 180. |
Obs!
Begrensninger
- Krever brukernavn- og passordgodkjenning for tokeninnhenting
- Støtter ikke API-nøkkelbaserte tokenforespørsler
- Støtter ikke egendefinert topptekstgodkjenning (uten brukernavn og passord)
Be om konfigurasjon
Forespørselsdelen definerer hvordan CCF-datakoblingen sender forespørsler til datakilden (for eksempel API-endepunktet og hvor ofte det skal avspørre dette endepunktet).
| Felt | Obligatorisk | Type: | Beskrivelse |
|---|---|---|---|
ApiEndpoint |
Sant. | Streng | Dette feltet bestemmer URL-adressen for den eksterne serveren og definerer endepunktet som dataene skal hentes fra. |
RateLimitQPS |
Heltall | Dette feltet definerer antall kall eller spørringer som tillates på et sekund for den første forespørselen. Den gjelder ikke for paginerte forespørsler. Hvis du vil begrense paginering, angir du PaginatedCallsPerSecondogså . |
|
PaginatedCallsPerSecond |
Dobbel (0...1000) | Dette feltet definerer antall kall per sekund som tillates for paginerte forespørsler til RESTful-API-en. Den introduserer en forsinkelse (1000 / paginatedCallsPerSecond) på millisekunder mellom hvert paginerte API-kall. Denne begrensningen gjelder bare for pagineringsforespørsler og er atskilt fra RateLimitQPS, som styrer den opprinnelige forespørselsfrekvensen. Dette vil vanligvis angis som den samme verdien for RateLimitQPS å respektere datakildens satsgrense på tvers av alle forespørsler.
0 verdi betyr at ingen pagineringsbegrensning brukes. |
|
RateLimitConfig |
Objekt | Dette feltet definerer satsgrensekonfigurasjonen for RESTful-API-en. Hvis du vil ha mer informasjon, kan du gå til RateLimitConfig eksempel. |
|
QueryWindowInMin |
Heltall | Dette feltet definerer det tilgjengelige spørringsvinduet i minutter. Minimum er 1 minutt. Standardverdien er 5 minutter. | |
HttpMethod |
Streng | Dette feltet definerer API-metoden: GET(standard) eller POST. |
|
QueryTimeFormat |
Streng | Dette feltet definerer dato- og klokkeslettformatet som endepunktet (ekstern server) forventer. KOPIF bruker gjeldende dato og klokkeslett uansett hvor denne variabelen brukes. Mulige verdier er konstantene: UnixTimestamp, UnixTimestampInMillseller andre gyldige representasjoner av dato og klokkeslett. For eksempel: yyyy-MM-dd, MM/dd/yyyy HH:mm:ss.Standardverdien er ISO 8601 UTC. |
|
RetryCount |
Heltall (1...6) | Dette feltet definerer at verdier 1 for 6 nye forsøk kan gjenopprettes etter en feil. Standardverdien er 3. |
|
TimeoutInSeconds |
Heltall (1...180) | Dette feltet definerer tidsavbruddet for forespørselen i sekunder. Standardverdien er 20. |
|
IsPostPayloadJson |
Boolsk | Dette feltet bestemmer om nyttelasten POST er i JSON-format. Standardverdien er false. |
|
Headers |
Objekt | Dette feltet inneholder nøkkel-/verdipar som definerer forespørselshodene. | |
QueryParameters |
Objekt | Dette feltet inneholder nøkkel-/verdipar som definerer spørringsparameterne for forespørselen. | |
StartTimeAttributeName |
Sann når EndTimeAttributeName verdien er angitt. |
Streng | Dette feltet definerer spørringsparameternavnet for starttidspunktet for spørringen. Hvis du vil ha mer informasjon, kan du gå til StartTimeAttributeName eksempel. |
EndTimeAttributeName |
Sann når den StartTimeAttributeName er angitt. |
Streng | Dette feltet definerer spørringsparameternavnet for sluttidspunktet for spørringen. |
QueryTimeIntervalAttributeName |
Streng | Dette feltet brukes hvis endepunktet krever et spesialisert format for spørring av dataene på en tidsramme. Bruk denne egenskapen med QueryTimeIntervalPrepend og QueryTimeIntervalDelimiter -parameterne. Hvis du vil ha mer informasjon, kan du gå til QueryTimeIntervalAttributeName eksempel. |
|
QueryTimeIntervalPrepend |
Sann når den QueryTimeIntervalAttributeName er angitt. |
Streng | Referanse QueryTimeIntervalAttributeName. |
QueryTimeIntervalDelimiter |
Sann når den QueryTimeIntervalAttributeName er angitt. |
Streng | Referanse QueryTimeIntervalAttributeName. |
QueryParametersTemplate |
Streng | Dette feltet refererer til spørringsmalen som skal brukes ved overføring av parametere i avanserte scenarioer. Eksempel: "queryParametersTemplate": "{'cid': 1234567, 'cmd': 'reporting', 'format': 'siem', 'data': { 'from': '{_QueryWindowStartTime}', 'to': '{_QueryWindowEndTime}'}, '{_APIKeyName}': '{_APIKey}'}". |
|
InitialCheckpointTimeUtc |
DateTime (UTC) | Angir starttidspunktet for spørringen for den aller første undersøkelsen når det ikke finnes et lagret kontrollpunkt. Når et kontrollpunkt beholdes etter den første vellykkede undersøkelsen, ignoreres denne verdien. Denne innstillingen trer bare i kraft når koblingens forespørselskonfigurasjon definerer en spørringsparameter for starttid (for eksempel startTimeAttributeName eller {_QueryWindowStartTime} erstatningstokenet) uten en tilsvarende parameter for sluttidspunkt. Det har ingen innvirkning på koblinger som utelukkende er avhengige av pagineringsmarkører eller tokener. Format: ISO 8601 UTC datetime (for eksempel 2024-01-15T00:00:00Z). |
Når API-en krever komplekse parametere, kan du bruke queryParameters eller queryParametersTemplate. Disse kommandoene inkluderer noen innebygde variabler.
| Innebygd variabel | For bruk i queryParameters |
For bruk i queryParametersTemplate |
|---|---|---|
_QueryWindowStartTime |
Ja | Ja |
_QueryWindowEndTime |
Ja | Ja |
_APIKeyName |
Nei | Ja |
_APIKey |
Nei | Ja |
StartTimeAttributeName-eksempel
Vurder dette eksemplet:
StartTimeAttributeName=fromEndTimeAttributeName=untilApiEndpoint=https://www.example.com
Spørringen som sendes til den eksterne serveren, er: https://www.example.com?from={QueryTimeFormat}&until={QueryTimeFormat + QueryWindowInMin}.
Eksempel på QueryTimeIntervalAttributeName
Vurder dette eksemplet:
QueryTimeIntervalAttributeName=intervalQueryTimeIntervalPrepend=time:QueryTimeIntervalDelimiter=..ApiEndpoint=https://www.example.com
Spørringen som sendes til den eksterne serveren, er: https://www.example.com?interval=time:{QueryTimeFormat}..{QueryTimeFormat + QueryWindowInMin}.
Eksempel på RateLimitConfig
Vurder dette eksemplet:
ApiEndpoint
=
https://www.example.com.
"rateLimitConfig": {
"evaluation": {
"checkMode": "OnlyWhen429"
},
"extraction": {
"source": "CustomHeaders",
"headers": {
"limit": {
"name": "X-RateLimit-Limit",
"format": "Integer"
},
"remaining": {
"name": "X-RateLimit-Remaining",
"format": "Integer"
},
"reset": {
"name": "X-RateLimit-RetryAfter",
"format": "UnixTimeSeconds"
}
}
},
"retryStrategy": {
"useResetOrRetryAfterHeaders": true
}
}
Når svaret inkluderer topptekster for satsgrenser, kan koblingen bruke denne informasjonen til å justere forespørselsfrekvensen.
Forespørselseksempler som bruker Microsoft Graph som datakilde-API
Dette eksemplet spør meldinger med en filterspørringsparameter. Hvis du vil ha mer informasjon, kan du se spørringsparametere for Microsoft Graph API.
"request": {
"apiEndpoint": "https://graph.microsoft.com/v1.0/me/messages",
"httpMethod": "Get",
"queryTimeFormat": "yyyy-MM-ddTHH:mm:ssZ",
"queryWindowInMin": 10,
"retryCount": 3,
"rateLimitQPS": 20,
"headers": {
"Accept": "application/json",
"User-Agent": "Example-app-agent"
},
"QueryTimeIntervalAttributeName": "filter",
"QueryTimeIntervalPrepend": "receivedDateTime gt ",
"QueryTimeIntervalDelimiter": " and receivedDateTime lt "
}
Det forrige eksemplet sender en GET forespørsel til https://graph.microsoft.com/v1.0/me/messages?filter=receivedDateTime gt {time of request} and receivedDateTime lt 2019-09-01T17:00:00.0000000. Tidsangivelsen oppdateres for hver queryWindowInMin gang.
Du oppnår de samme resultatene med dette eksemplet:
"request": {
"apiEndpoint": "https://graph.microsoft.com/v1.0/me/messages",
"httpMethod": "Get",
"queryTimeFormat": "yyyy-MM-ddTHH:mm:ssZ",
"queryWindowInMin": 10,
"retryCount": 3,
"rateLimitQPS": 20,
"headers": {
"Accept": "application/json",
},
"queryParameters": {
"filter": "receivedDateTime gt {_QueryWindowStartTime} and receivedDateTime lt {_QueryWindowEndTime}"
}
}
Det finnes et annet alternativ for situasjoner der datakilden forventer to spørringsparametere (én for starttidspunkt og én for sluttidspunkt).
Eksempel:
"request": {
"apiEndpoint": "https://graph.microsoft.com/v1.0/me/calendarView",
"httpMethod": "Get",
"queryTimeFormat": "yyyy-MM-ddTHH:mm:ssZ",
"queryWindowInMin": 10,
"retryCount": 3,
"rateLimitQPS": 20,
"headers": {
"Accept": "application/json",
},
"StartTimeAttributeName": "startDateTime",
"EndTimeAttributeName": "endDateTime",
}
Dette alternativet sender en GET forespørsel til https://graph.microsoft.com/me/calendarView?startDateTime=2019-09-01T09:00:00.0000000&endDateTime=2019-09-01T17:00:00.0000000.
Bruk for komplekse spørringer QueryParametersTemplate. Dette eksemplet sender en POST forespørsel med parametere i brødteksten:
"request": {
"apiEndpoint": "https://graph.microsoft.com/v1.0/me/messages",
"httpMethod": "POST",
"queryTimeFormat": "yyyy-MM-ddTHH:mm:ssZ",
"queryWindowInMin": 10,
"retryCount": 3,
"rateLimitQPS": 20,
"headers": {
"Accept": "application/json",
},
"isPostPayloadJson": true,
"queryParametersTemplate": "{\"query":"TableName | where createdTimestamp between (datetime({_QueryWindowStartTime}) .. datetime({_QueryWindowEndTime}))\"}"
}
Svarkonfigurasjon
Definer hvordan datakoblingen håndterer svar ved hjelp av følgende parametere:
| Felt | Obligatorisk | Type: | Beskrivelse |
|---|---|---|---|
EventsJsonPaths |
Sant | Liste over strenger | Definerer banen til meldingen i svaret JSON. Et JSON-baneuttrykk angir en bane til et element, eller et sett med elementer, i en JSON-struktur. |
SuccessStatusJsonPath |
Streng | Definerer banen til den vellykkede meldingen i svar-JSON. Når denne parameteren er definert, bør parameteren SuccessStatusValue også defineres. |
|
SuccessStatusValue |
Streng | Definerer banen til verdien for vellykkede meldinger i svar-JSON. | |
IsGzipCompressed |
Boolsk | Bestemmer om svaret er komprimert i en GZIP-fil. | |
format |
Sant | Streng | Bestemmer om formatet er json, csveller xml. |
CompressionAlgo |
Streng | Definerer komprimeringsalgoritmen, enten multi-gzip eller deflate. Konfigurer for GZIP-komprimeringsalgoritmen IsGzipCompressed i stedet for å True angi en verdi for denne parameteren. |
|
CsvDelimiter |
Streng | Referanser hvis svarformatet er CSV og du vil endre standard CSV-skilletegn for ",". |
|
HasCsvBoundary |
Boolsk | Angir om CSV-dataene har en grense. | |
HasCsvHeader |
Boolsk | Angir om CSV-dataene har en topptekst. Standardverdien er True. |
|
CsvEscape |
Streng | Definerer et escape-tegn for en feltgrense. Standardverdien er "En CSV med overskrifter id,name,avg og en rad med data som 1,"my name",5.5 inneholder mellomrom, krever " for eksempel feltgrensen. |
|
ConvertChildPropertiesToArray |
Boolsk | Refererer til et spesielt tilfelle der den eksterne serveren returnerer et objekt i stedet for en liste over hendelser der hver egenskap inneholder data. |
Obs!
CSV-formattypen analyseres etter RFC4180 spesifikasjonen.
Eksempler på svarkonfigurasjon
Det forventes et serversvar i JSON-format. Svaret har de forespurte dataene i egenskapsverdien. Statusen for svaregenskapen angir at dataene bare skal tas inn hvis verdien er success.
"response": {
"EventsJsonPaths ": ["$.value"],
"format": "json",
"SuccessStatusJsonPath": "$.status",
"SuccessStatusValue": "success",
"IsGzipCompressed": true
}
Det forventede svaret i dette eksemplet forbereder en CSV uten topptekst.
"response": {
"EventsJsonPaths ": ["$"],
"format": "csv",
"HasCsvHeader": false
}
Sidevekslingskonfigurasjon
Når datakilden ikke kan sende hele nyttelasten for svar samtidig, må CCF-datakoblingen vite hvordan du mottar deler av dataene på svarsider. Sidevekslingstypene du kan velge mellom, er:
| Sidevekslingstype | Beslutningsfaktor |
|---|---|
| Har API-svaret koblinger til neste og forrige side? | |
| Har API-svaret et token eller en markør for neste og forrige sider? | |
| Støtter API-svaret en parameter for antall objekter som skal hoppes over når sideveksling? | |
| Støtter API-svaret en parameter for antall objekter som skal returneres? |
Konfigurer LinkHeader eller PersistentLinkHeader
Den vanligste sidevekslingstypen er når en serverdatakilde-API gir nettadresser til neste og tidligere sider med data. Hvis du vil ha mer informasjon om spesifikasjonen For koblingshode , kan du se RFC 5988.
LinkHeader sideveksling betyr at API-svaret inkluderer enten:
-
LinkHTTP-svarhodet. - En JSON-bane for å hente koblingen fra svarteksten.
PersistentLinkHeader-type sideveksling har de samme egenskapene som LinkHeader, bortsett fra at koblingshodet vedvarer i baklageret. Dette alternativet aktiverer sidevekslingskoblinger på tvers av spørringsvinduer.
Noen API-er støtter for eksempel ikke starttidspunkter eller sluttidspunkt for spørringer. I stedet støtter de en markør på serversiden. Du kan bruke faste sidetyper til å huske markøren på serversiden. Hvis du vil ha mer informasjon, kan du se Hva er en markør?.
Obs!
Bare én spørring for koblingen kan kjøres med PersistentLinkHeader for å unngå raseforhold på markøren på serversiden. Dette problemet kan påvirke ventetiden.
| Felt | Obligatorisk | Type: | Beskrivelse |
|---|---|---|---|
LinkHeaderTokenJsonPath |
Falsk | Streng | Bruk denne egenskapen til å angi hvor verdien skal hentes i svarteksten. Hvis datakilden for eksempel returnerer følgende JSON: { nextPage: "foo", value: [{data}]}, LinkHeaderTokenJsonPath er $.nextPageverdien . |
PageSize |
Falsk | Heltall | Bruk denne egenskapen til å bestemme antall hendelser per side. |
PageSizeParameterName |
Falsk | Streng | Bruk dette spørringsparameternavnet til å angi sidestørrelsen. |
PagingInfoPlacement |
Falsk | Streng | Bruk denne egenskapen til å bestemme hvordan sidevekslingsinformasjon fylles ut. Godtar enten QueryString eller RequestBody. |
PagingQueryParamOnly |
Falsk | Boolsk | Bruk denne egenskapen til å angi spørringsparametere. Hvis den er satt til sann, utelates alle andre spørringsparametere unntatt sidevekslingsspørringsparametere. |
Her er noen eksempler:
"paging": {
"pagingType": "LinkHeader",
"linkHeaderTokenJsonPath" : "$.metadata.links.next"
}
"paging": {
"pagingType" : "PersistentLinkHeader",
"pageSizeParameterName" : "limit",
"pageSize" : 500
}
Konfigurer NextPageUrl
NextPageUrl-type sideveksling betyr at API-svaret inneholder en kompleks kobling i svarteksten som ligner LinkHeaderpå , men nettadressen er inkludert i svarteksten i stedet for toppteksten.
| Felt | Obligatorisk | Type: | Beskrivelse |
|---|---|---|---|
PageSize |
Falsk | Heltall | Antall hendelser per side. |
PageSizeParameterName |
Falsk | Streng | Spørringsparameternavnet for sidestørrelsen. |
NextPageUrl |
Falsk | Streng | Felt som bare brukes hvis koblingen er for Coralogix-API-en. |
NextPageUrlQueryParameters |
Falsk | Objekt | Nøkkel-/verdipar som legger til en egendefinert spørringsparameter i hver forespørsel for neste side. |
NextPageParaName |
Falsk | Streng | Neste sidenavn i forespørselen. |
HasNextFlagJsonPath |
Falsk | Streng | Banen til HasNextPage flaggattributtet. |
NextPageRequestHeader |
Falsk | Streng | Topptekstnavnet på neste side i forespørselen. |
NextPageUrlQueryParametersTemplate |
Falsk | Streng | Felt som bare brukes hvis koblingen er for Coralogix-API-en. |
PagingInfoPlacement |
Falsk | Streng | Felt som bestemmer hvordan sidevekslingsinformasjon fylles ut. Godtar enten QueryString eller RequestBody. |
PagingQueryParamOnly |
Falsk | Boolsk | Felt som bestemmer spørringsparametere. Hvis den er satt til sann, utelates alle andre spørringsparametere unntatt sidevekslingsspørringsparametere. |
Eksempel:
"paging": {
"pagingType" : "NextPageUrl",
"nextPageTokenJsonPath" : "$.data.repository.pageInfo.endCursor",
"hasNextFlagJsonPath" : "$.data.repository.pageInfo.hasNextPage",
"nextPageUrl" : "https://api.github.com/graphql",
"nextPageUrlQueryParametersTemplate" : "{'query':'query{repository(owner:\"xyz\")}"
}
Konfigurer NextPageToken eller PersistentToken
NextPageToken-type paginering bruker et token (en hash eller en markør) som representerer tilstanden til gjeldende side. Tokenet er inkludert i API-svaret, og klienten tilføyer det til neste forespørsel om å hente neste side. Denne metoden brukes ofte når serveren må opprettholde den nøyaktige tilstanden mellom forespørsler.
PersistentToken Paginering bruker et token som vedvarer serversiden. Serveren husker det siste tokenet klienten hentet, og angir neste token i etterfølgende forespørsler. Klienten fortsetter der den slapp, selv om den foretar nye forespørsler senere.
| Felt | Obligatorisk | Type: | Beskrivelse |
|---|---|---|---|
PageSize |
Falsk | Heltall | Antall hendelser per side. |
PageSizeParameterName |
Falsk | Streng | Navn på spørringsparameter for sidestørrelsen. |
NextPageTokenJsonPath |
Falsk | Streng | JSON-bane for neste sidetoken i svarteksten. |
NextPageTokenResponseHeader |
Falsk | Streng | Felt som angir at hvis NextPageTokenJsonPath det er tomt, bruker du tokenet i dette topptekstnavnet for neste side. |
NextPageParaName |
Falsk | Streng | Felt som bestemmer neste sidenavn i forespørselen. |
HasNextFlagJsonPath |
Falsk | Streng | Felt som definerer banen til et HasNextPage flaggattributt når du avgjør om flere sider er igjen i svaret. |
NextPageRequestHeader |
Falsk | Streng | Felt som bestemmer topptekstnavnet på neste side i forespørselen. |
PagingInfoPlacement |
Falsk | Streng | Felt som bestemmer hvordan sidevekslingsinformasjon fylles ut. Godtar enten QueryString eller RequestBody. |
PagingQueryParamOnly |
Falsk | Boolsk | Felt som bestemmer spørringsparametere. Hvis den er satt til sann, utelates alle andre spørringsparametere unntatt sidevekslingsspørringsparametere. |
Eksempler:
"paging": {
"pagingType" : "NextPageToken",
"nextPageRequestHeader" : "ETag",
"nextPageTokenResponseHeader" : "ETag"
}
"paging": {
"pagingType" : "PersistentToken",
"nextPageParaName" : "gta",
"nextPageTokenJsonPath" : "$.alerts[-1:]._id"
}
Konfigurer forskyvning
Offset-type paginering angir antall sider som skal hoppes over, og en grense for antall hendelser som skal hentes per side i forespørselen. Klienter henter et bestemt elementområde fra datasettet.
| Felt | Obligatorisk | Type: | Beskrivelse |
|---|---|---|---|
PageSize |
Falsk | Heltall | Antall hendelser per side. |
PageSizeParameterName |
Falsk | Streng | Navn på spørringsparameter for sidestørrelsen. |
OffsetParaName |
Falsk | Streng | Det neste spørringsparameternavnet for forespørselen. KOPIF beregner forskyvningsverdien for hver forespørsel (alle hendelser inntatt + 1). |
PagingInfoPlacement |
Falsk | Streng | Felt som bestemmer hvordan sidevekslingsinformasjon fylles ut. Godtar enten QueryString eller RequestBody. |
PagingQueryParamOnly |
Falsk | Boolsk | Felt som bestemmer spørringsparametere. Hvis den er satt til sann, utelates alle andre spørringsparametere unntatt sidevekslingsspørringsparametere. |
Eksempel:
"paging": {
"pagingType": "Offset",
"offsetParaName": "offset",
"pageSize": 50,
"pagingQueryParamOnly": true,
"pagingInfoPlacement": "QueryString"
}
Konfigurer CountBasedPaging
CountBasedPaging-type paginering gjør at klienten kan angi antall elementer som skal returneres i svaret. Denne muligheten er nyttig for API-er som støtter paginering basert på en tellingsparameter som en del av nyttelasten for svar.
| Felt | Obligatorisk | Type: | Beskrivelse |
|---|---|---|---|
pageNumberParaName |
Sant | Streng | Parameternavnet for sidetallet i HTTP-forespørselen. |
PageSize |
Falsk | Heltall | Antall hendelser per side. |
ZeroBasedIndexing |
Falsk | Boolsk | Flagg som angir at antallet er null basert. |
HasNextFlagJsonPath |
Falsk | Streng | JSON-banen til flagget i nyttelasten for HTTP-svar som angir at det finnes flere sider. |
TotalResultsJsonPath |
Falsk | Streng | JSON-banen for det totale antallet resultater i nyttelasten for HTTP-svar. |
PageNumberJsonPath |
Falsk | Streng | JSON-banen til sidetallet i nyttelasten for HTTP-svar. Obligatorisk hvis totalResultsJsonPath det er angitt. |
PageCountJsonPath |
Falsk | Streng | JSON-banen for sideantallet i nyttelasten for HTTP-svar. Obligatorisk hvis totalResultsJsonPath det er angitt. |
PagingInfoPlacement |
Falsk | Streng | Felt som bestemmer hvordan sidevekslingsinformasjon fylles ut. Godtar enten QueryString eller RequestBody. |
PagingQueryParamOnly |
Falsk | Boolsk | Felt som bestemmer spørringsparametere. Hvis den er satt til sann, utelates alle andre spørringsparametere unntatt sidevekslingsspørringsparametere. |
Eksempel:
"paging": {
"pagingType" : "CountBasedPaging",
"pageNumberParaName" : "page",
"pageSize" : 10,
"zeroBasedIndexing" : true,
"hasNextFlagJsonPath" : "$.hasNext",
"totalResultsJsonPath" : "$.totalResults",
"pageNumberJsonPath" : "$.pageNumber",
"pageCountJsonPath" : "$.pageCount"
}
DCR-konfigurasjon
| Felt | Obligatorisk | Type: | Beskrivelse |
|---|---|---|---|
DataCollectionEndpoint |
Sant | Streng | Endepunkt for datainnsamling (DCE). Eksempel: https://example.ingest.monitor.azure.com. |
DataCollectionRuleImmutableId |
Sant | Streng | Dcr uforanderlig ID. Finn den ved å vise DCR-opprettingssvaret eller ved hjelp av DCR-API-en. |
StreamName |
Sant | Streng | Denne verdien er definert streamDeclaration i DCR. Prefikset må begynne med Custom-. |
Eksempel på CCF-datakobling
Her er et eksempel på alle komponentene i CCF-datakoblingen JSON:
{
"kind": "RestApiPoller",
"properties": {
"connectorDefinitionName": "ConnectorDefinitionExample",
"dcrConfig": {
"streamName": "Custom-ExampleConnectorInput",
"dataCollectionEndpoint": "https://example-dce-sbsr.location.ingest.monitor.azure.com",
"dataCollectionRuleImmutableId": "dcr-32_character_hexadecimal_id"
},
"dataType": "ExampleLogs",
"auth": {
"type": "Basic",
"password": "[[parameters('username')]",
"userName": "[[parameters('password')]"
},
"request": {
"apiEndpoint": "https://rest.contoso.com/example",
"rateLimitQPS": 10,
"rateLimitConfig": {
"evaluation": {
"checkMode": "OnlyWhen429"
},
"extraction": {
"source": "CustomHeaders",
"headers": {
"limit": {
"name": "X-RateLimit-Limit",
"format": "Integer"
},
"remaining": {
"name": "X-RateLimit-Remaining",
"format": "Integer"
},
"reset": {
"name": "X-RateLimit-RetryAfter",
"format": "UnixTimeSeconds"
}
}
},
"retryStrategy": {
"useResetOrRetryAfterHeaders": true
}
},
"queryWindowInMin": 5,
"httpMethod": "POST",
"queryTimeFormat": "UnixTimestamp",
"startTimeAttributeName": "t0",
"endTimeAttributeName": "t1",
"retryCount": 3,
"timeoutInSeconds": 60,
"headers": {
"Accept": "application/json",
"User-Agent": "Example-app-agent"
}
},
"paging": {
"pagingType": "LinkHeader",
"pagingInfoPlacement": "RequestBody",
"pagingQueryParamOnly": true
},
"response": {
"eventsJsonPaths": ["$"]
}
}
}