RestApiPoller-datakoblingsreferanse for Codeless Connector Framework

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:

  1. Send legitimasjon til for å TokenEndpoint hente JWT-token, når du bruker userName og password, IsCredentialsInHeaders brukes til å bestemme hvor legitimasjonen skal plasseres i forespørselen.

    • Hvis IsCredentialsInHeaders: true: Sender et grunnleggende godkjenningshode med username:password.
    • Hvis IsCredentialsInHeaders: false: Sender legitimasjon i en POST brødtekst.
  2. Trekk ut tokenet ved hjelp JwtTokenJsonPath av eller fra svarhodet.

  3. 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 = from
  • EndTimeAttributeName = until
  • ApiEndpoint = 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 = interval
  • QueryTimeIntervalPrepend = 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:

  • Link HTTP-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": ["$"]
      }
   }
}