Informations de référence sur le connecteur de données RestApiPoller pour la plateforme de connecteurs sans code

Pour créer un RestApiPoller connecteur de données avec la plateforme de connecteurs sans code (CCP), utilisez cette référence comme supplément à la documentation de l’API REST Microsoft Sentinel pour les connecteurs de données.

Chacun dataConnector représente une connexion spécifique d’un connecteur de données Microsoft Sentinel. Un connecteur de données peut avoir plusieurs connexions, qui extraient des données à partir de différents points de terminaison. La configuration JSON créée à l’aide de ce document de référence est utilisée pour terminer le modèle de déploiement pour le connecteur de données CCP.

Pour plus d’informations, consultez Créer un connecteur sans code pour Microsoft Sentinel.

Connecteurs de données - Créer ou mettre à jour

Référencez l’opération Créer ou mettre à jour dans la documentation de l’API REST pour trouver la dernière version stable ou préliminaire de l’API. La différence entre la création et l’opération de mise à jour est que la mise à jour nécessite la valeur etag .

PUT , méthode

https://management.azure.com/subscriptions/{{subscriptionId}}/resourceGroups/{{resourceGroupName}}/providers/Microsoft.OperationalInsights/workspaces/{{workspaceName}}/providers/Microsoft.SecurityInsights/dataConnectors/{{dataConnectorId}}?api-version={{apiVersion}}

Paramètres d’URI

Pour plus d’informations sur la dernière version de l’API, consultez Connecteurs de données - Créer ou mettre à jour des paramètres d’URI.

Nom Description
dataConnectorId L’ID du connecteur de données doit être un nom unique et est identique au paramètre dans le name corps de la requête.
resourceGroupName Nom du groupe de ressources, pas sensible à la casse.
subscriptionId ID de l’abonnement cible.
workspaceName Nom de l’espace de travail, et non de l’ID.
Modèle d’expression régulière : ^[A-Za-z0-9][A-Za-z0-9-]+[A-Za-z0-9]$
api-version Version de l’API à utiliser pour cette opération.

Corps de la demande

Le corps de la demande d’un RestApiPoller connecteur de données CCP a la structure suivante :

{
   "name": "{{dataConnectorId}}",
   "kind": "RestApiPoller",
   "etag": "",
   "properties": {
        "connectorDefinitionName": "",
        "auth": {},
        "request": {},
        "response": {},
        "paging": "",
        "dcrConfig": ""
   }
}

RestApiPoller

RestApiPoller représente un connecteur de données CCP Poller API dans lequel vous personnalisez les charges utiles de pagination, d’autorisation et de requête/réponse pour votre source de données.

Nom Requise Type Description
nom True string Nom unique de la connexion correspondant au paramètre URI
kind True string Doit être RestApiPoller
etag GUID Laissez vide pour la création de nouveaux connecteurs. Pour les opérations de mise à jour, l’etag doit correspondre à l’etag (GUID) du connecteur existant.
properties.connectorDefinitionName string Nom de la ressource DataConnectorDefinition qui définit la configuration de l’interface utilisateur du connecteur de données. Pour plus d’informations, consultez Définition du connecteur de données.
Propriétés.Auth True JSON imbriqué Décrit les propriétés d’authentification pour l’interrogation des données. Pour plus d’informations, consultez la configuration de l’authentification.
Propriétés.demander True JSON imbriqué Décrit la charge utile de la requête pour interroger les données, telles que le point de terminaison de l’API. Pour plus d’informations, consultez Configuration de request.
Propriétés.réponse True JSON imbriqué Décrit l’objet de réponse et le message imbriqué renvoyés par l’API lors de l’interrogation des données. Pour plus d’informations, consultez Configuration de response.
Propriétés.pagination JSON imbriqué Décrit la charge utile de la pagination lors de l’interrogation des données. Pour plus d’informations, consultez Configuration de paging.
Propriétés.dcrConfig JSON imbriqué Paramètres obligatoires lorsque les données sont envoyées à une règle de collecte de données (DCR). Pour plus d’informations, consultez configuration DCR.

Configuration de l'authentification

Le CCP prend en charge les types d’authentification suivants :

Remarque

L’implémentation DE CCP OAuth2 ne prend pas en charge les informations d’identification du certificat client.

En guise de meilleure pratique, utilisez des paramètres dans la section d’authentification au lieu de coder en dur les informations d’identification. Pour plus d’informations, consultez Entrée confidentielle sécurisée.

Pour créer le modèle de déploiement qui utilise également des paramètres, vous devez échapper aux paramètres de cette section avec un démarrage [supplémentaire. Cela permet aux paramètres d'attribuer une valeur en fonction de l'interaction de l'utilisateur avec le connecteur. Pour plus d’informations, consultez caractères d’échappement des expressions de modèle.

Pour permettre l’entrée des informations d’identification à partir de l’interface utilisateur, la connectorUIConfig section nécessite instructions les paramètres souhaités. Pour plus d’informations, consultez la référence des définitions de connecteur de données pour la plateforme de connecteurs sans code.

Authentification de base

Champ Requis Type
UserName True string
Mot de passe True string

Exemple d’authentification de base à l’aide de paramètres définis dans connectorUIconfig:

"auth": {
    "type": "Basic",
    "UserName": "[[parameters('username')]",
    "Password": "[[parameters('password')]"
}

APIKey

Champ Requis Type Description Valeur par défaut
ApiKey True string clé secrète utilisateur
ApiKeyName string nom de l’en-tête Uri contenant la valeur ApiKey Authorization
ApiKeyIdentifier string valeur de chaîne à ajouter au jeton token
IsApiKeyInPostPayload booléen envoyer un secret dans le corps POST au lieu d’en-tête false

Exemples d’authentification APIKey :

"auth": {
    "type": "APIKey",
    "ApiKey": "[[parameters('apikey')]",
    "ApiKeyName": "X-MyApp-Auth-Header",
    "ApiKeyIdentifier": "Bearer"
}

Cet exemple montre comment obtenir le secret défini à partir de l’entrée utilisateur envoyée dans l’en-tête suivant : X-MyApp-Auth-Header : Porteur apikey

"auth": { 
    "type": "APIKey",
    "ApiKey": "123123123",
}

Cet exemple utilise les valeurs par défaut et génère l’en-tête suivant : Autorisation : jeton 123123123

"auth": { 
    "type": "APIKey",
    "ApiKey": "123123123",
    "ApiKeyName": ""
}

Étant donné que le ApiKeyName paramètre est défini ""explicitement sur , le résultat est l’en-tête suivant : Autorisation : 123123123

OAuth2

La plateforme de connecteurs sans code prend en charge l’octroi de code d’autorisation OAuth 2.0 et les informations d’identification du client. Le type d’autorisation du code d’autorisation est utilisé par les clients confidentiels et publics pour échanger un code d’autorisation pour un jeton d’accès. Une fois que l’utilisateur est retourné au client via l’URL de redirection, l’application obtient le code d’autorisation de l’URL et l’utilise pour demander un jeton d’accès.

Champ Requis Type Description
ClientId True Chaîne ID client
ClientSecret True Chaîne Secret client
AuthorizationCode True quand grantType = authorization_code Chaîne Si le type d’octroi est authorization_code cette valeur de champ correspond au code d’autorisation retourné par le service d’authentification.
Portée True pour le type d’octroi authorization_code
facultatif pour le type d’octroi client_credentials
Chaîne Liste d’étendues séparées par un espace pour le consentement de l’utilisateur. Pour plus d’informations, consultez les étendues et autorisations OAuth2.
RedirectUri True quand grantType = authorization_code Chaîne L’URL de redirection doit être https://portal.azure.com/TokenAuthorize/ExtensionName/Microsoft_Azure_Security_Insights
GrantType True Chaîne authorization_code ou client_credentials
TokenEndpoint True Chaîne URL permettant d’échanger du code avec un jeton valide dans l’octroi ou l’ID authorization_code client et le secret avec un jeton valide dans client_credentials l’octroi.
TokenEndpointHeaders Object Objet de valeur de clé facultatif pour envoyer des en-têtes personnalisés au serveur de jetons
TokenEndpointQueryParameters Object Objet de valeur de clé facultatif pour envoyer des analyseurs de requête personnalisés au serveur de jetons
AuthorizationEndpoint True Chaîne URL du consentement de l’utilisateur pour authorization_code le flux
AuthorizationEndpointHeaders Object Objet de valeur de clé facultatif pour envoyer des en-têtes personnalisés au serveur d’authentification
AuthorizationEndpointQueryParameters Object Paire de valeurs de clé facultative utilisée dans la demande de flux de code d’autorisation OAuth2

Le flux de code d’authentification permet d’extraire des données pour le compte des autorisations d’un utilisateur et des informations d’identification client est d’extraire des données avec des autorisations d’application. Le serveur de données accorde l’accès à l’application. Étant donné qu’il n’existe aucun utilisateur dans le flux d’informations d’identification du client, aucun point de terminaison d’autorisation n’est nécessaire, qu’un point de terminaison de jeton.

Exemple : type d’octroi OAuth2 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"
}

Exemple : type d’octroi OAuth2 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

Exemple : jeton web JSON (JWT)

"auth": {
    "type": "JwtToken",
    "userName": {
        "key":"username",
        "value":"[[parameters('UserName')]"
    },
    "password": {
        "key":"password",
        "value":"[[parameters('Password')]"
    },
    "TokenEndpoint": {"https://token_endpoint.contoso.com"},
    "IsJsonRequest": true
}

Configuration de requête

La section de requête définit la façon dont le connecteur de données CCP envoie des requêtes à votre source de données, comme le point de terminaison de l’API et la fréquence à laquelle interroger ce point de terminaison.

Champ Requis Type Description
ApiEndpoint True Chaîne URL du serveur distant. Définit le point de terminaison à partir duquel extraire les données.
RateLimitQPS Integer Définit le nombre d’appels ou de requêtes autorisés en une seconde.
QueryWindowInMin Integer Définit la fenêtre de requête disponible en minutes. Le minimum est de 1 minute. La valeur par défaut est de 5 minutes.
HttpMethod Chaîne Définit la méthode d’API : GET(par défaut) ou POST
QueryTimeFormat Chaîne Définit le format de date et d’heure attendu par le point de terminaison (serveur distant). Le CCP utilise la date et l’heure actuelles où cette variable est utilisée. Les valeurs possibles sont les constantes : UnixTimestamp, UnixTimestampInMills ou toute autre représentation valide de l’heure de date, par exemple : yyyy-MM-dd, MM/dd/yyyy HH:mm:ss
la valeur par défaut est ISO 8601 UTC
RetryCount Entier (1...6) Définit 1 les 6 nouvelles tentatives autorisées à récupérer à partir d’un échec. La valeur par défaut est 3.
TimeoutInSeconds Entier (1...180) Définit le délai d’expiration de la requête, en secondes. La valeur par défaut est 20
IsPostPayloadJson Boolean Détermine si la charge utile POST est au format JSON. La valeur par défaut est false
En-têtes Object Paires clé-valeur qui définissent les en-têtes de requête.
QueryParameters Object Paires clé-valeur qui définissent les paramètres de requête de requête.
StartTimeAttributeName True quand est EndTimeAttributeName défini Chaîne Définit le nom du paramètre de requête pour l’heure de début de la requête. Consultez l’exemple.
EndTimeAttributeName True quand est StartTimeAttributeName défini Chaîne Définit le nom du paramètre de requête pour l’heure de fin de la requête.
QueryTimeIntervalAttributeName Chaîne Si le point de terminaison nécessite un format spécialisé pour interroger les données sur une période de temps, utilisez cette propriété avec les paramètres et les QueryTimeIntervalPrepend QueryTimeIntervalDelimiter paramètres. Consultez l’exemple.
QueryTimeIntervalPrepend True quand est QueryTimeIntervalAttributeName défini Chaîne Consultez QueryTimeIntervalAttributeName
QueryTimeIntervalDelimiter True quand est QueryTimeIntervalAttributeName défini Chaîne Consultez QueryTimeIntervalAttributeName
QueryParametersTemplate Chaîne Modèle de requête à utiliser lors du passage de paramètres dans des scénarios avancés.
br>Par exemple : "queryParametersTemplate": "{'cid': 1234567, 'cmd': 'reporting', 'format': 'siem', 'data': { 'from': '{_QueryWindowStartTime}', 'to': '{_QueryWindowEndTime}'}, '{_APIKeyName}': '{_APIKey}'}"

Lorsque l’API nécessite des paramètres complexes, utilisez ou queryParameters queryParametersTemplate incluez des variables intégrées.

Variable intégrée pour une utilisation dans queryParameters pour une utilisation dans queryParametersTemplate
_QueryWindowStartTime Oui oui
_QueryWindowEndTime oui oui
_APIKeyName non Oui
_APIKey non Oui

Exemple StartTimeAttributeName

Prenons cet exemple :

  • StartTimeAttributeName = from
  • EndTimeAttributeName = until
  • ApiEndpoint = https://www.example.com

La requête envoyée au serveur distant est la suivante : https://www.example.com?from={QueryTimeFormat}&until={QueryTimeFormat + QueryWindowInMin}

Exemple QueryTimeIntervalAttributeName

Prenons cet exemple :

  • QueryTimeIntervalAttributeName = interval
  • QueryTimeIntervalPrepend = time:
  • QueryTimeIntervalDelimiter = ..
  • ApiEndpoint = https://www.example.com

La requête envoyée au serveur distant est la suivante : https://www.example.com?interval=time:{QueryTimeFormat}..{QueryTimeFormat + QueryWindowInMin}

Exemples de requête utilisant Microsoft Graph comme API de source de données

Cet exemple interroge les messages avec un paramètre de requête de filtre. Pour plus d’informations, consultez les paramètres de requête de l’API Microsoft Graph.

"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 "
}

L’exemple précédent envoie une GET requête à https://graph.microsoft.com/v1.0/me/messages?filter=receivedDateTime gt {time of request} and receivedDateTime lt 2019-09-01T17:00:00.0000000. L’horodatage est mis à jour pour chaque queryWindowInMin fois.

Les mêmes résultats sont obtenus avec cet exemple :

"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}"
  }
}

Une autre option est lorsque la source de données attend 2 paramètres de requête, un pour l’heure de début et l’autre pour l’heure de fin.

Exemple :

"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",
}

Cela envoie une GET demande à https://graph.microsoft.com/me/calendarView?startDateTime=2019-09-01T09:00:00.0000000&endDateTime=2019-09-01T17:00:00.0000000

Pour les requêtes complexes, utilisez QueryParametersTemplate. Cet exemple suivant envoie une POST requête avec des paramètres dans le corps.

Exemple :

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}))\"}"
}

Configuration de réponse

Définissez la gestion des réponses de votre connecteur de données avec les paramètres suivants :

Champ Requis Type Description
EventsJsonPaths True Liste des chaînes Définit le chemin d’accès au message dans la réponse JSON. Une expression de chemin d’accès JSON spécifie un chemin d’accès à un élément, ou à un ensemble d’éléments, dans une structure JSON
SuccessStatusJsonPath Chaîne Définit le chemin d’accès au message de réussite dans la réponse JSON. Lorsque ce paramètre est défini, le SuccessStatusValue paramètre doit également être défini.
SuccessStatusValue Chaîne Définit le chemin d’accès vers la valeur du message de réussite dans la réponse JSON.
IsGzipCompressed Boolean Détermine si la réponse est compressée dans un fichier gzip
format True Chaîne json ou csv ou xml
CompressionAlgo Chaîne L’algorithme de compression, soit multi-gzip deflate. Pour l’algorithme de compression gzip, configurez IsGzipCompressed simplement pour True définir une valeur pour ce paramètre.
CsvDelimiter Chaîne Si le format de réponse est CSV et que vous souhaitez modifier le délimiteur CSV par défaut de ","
Limite de hachage Boolean Indiquer si les données CSV ont une limite
HasCsvHeader Boolean Indiquer si les données CSV ont un en-tête, la valeur par défaut est True
CsvEscape Chaîne Caractère d’échappement pour une limite de champ, la valeur par défaut est "

Par exemple, un fichier CSV avec des en-têtes id,name,avg et une ligne de données contenant des espaces comme 1,"my name",5.5 nécessite la limite de " champ.
ConvertChildPropertiesToArray Boolean Cas particulier dans lequel le serveur distant retourne un objet au lieu d’une liste d’événements où chaque propriété contient des données.

Remarque

Le type de format CSV est analysé par la spécification RFC4180 .

Exemples de configuration de réponse

Une réponse de serveur au format JSON est attendue, avec les données demandées dans la valeur de propriété. L’état de la propriété de réponse indique d’ingérer les données uniquement si la valeur est success.

"response": {
  "EventsJsonPaths ": ["$.value"],
  "format": "json",
  "SuccessStatusJsonPath": "$.status",
  "SuccessStatusValue": "success",
  "IsGzipCompressed: true
 }

La réponse attendue dans cet exemple prépare un fichier CSV sans en-tête.

"response": {
  "EventsJsonPaths ": ["$"],
  "format": "csv",
  "HasCsvHeader": false
 }

Configuration de pagination

Lorsque la source de données ne peut pas envoyer l’intégralité de la charge utile de réponse en même temps, le connecteur de données CCP doit savoir comment recevoir des parties des données dans les pages de réponse. Les types de pagination à choisir sont les suivants :

Type de pagination facteur de décision
La réponse de l’API contient-elle des liens vers les pages suivantes et précédentes ?
La réponse de l’API a-t-elle un jeton ou un curseur pour les pages suivantes et précédentes ?
La réponse de l’API prend-elle en charge un paramètre pour le nombre d’objets à ignorer lors de la pagination ?

Configurer LinkHeader ou PersistentLinkHeader

Le type de pagination le plus courant est lorsqu’une API de source de données serveur fournit des URL aux pages de données suivantes et précédentes. Pour plus d’informations sur la spécification de l’en-tête de lien, consultez RFC 5988.

LinkHeader la pagination signifie que la réponse de l’API inclut les éléments suivants :

  • en-tête de Link réponse HTTP
  • ou un chemin JSON pour récupérer le lien à partir du corps de la réponse.

PersistentLinkHeader la pagination a les mêmes propriétés que , sauf que LinkHeaderl’en-tête de lien persiste dans le stockage back-end. Cette option active la pagination des liens entre les fenêtres de requête. Par exemple, certaines API ne prennent pas en charge les heures de début ou les heures de fin des requêtes. Au lieu de cela, ils prennent en charge un curseur côté serveur. Les types de pages persistantes peuvent être utilisés pour mémoriser le curseur côté serveur. Pour plus d’informations, consultez Qu’est-ce qu’un curseur ?.

Remarque

Il ne peut y avoir qu’une seule requête s’exécutant pour le connecteur avec PersistentLinkHeader afin d’éviter les conditions de concurrence sur le curseur côté serveur. Cela peut affecter la latence.

Champ Requis Type Description
LinkHeaderTokenJsonPath False Chaîne Utilisez cette propriété pour indiquer où obtenir la valeur dans le corps de la réponse.

Par exemple, si la source de données retourne le code JSON suivant : { nextPage: "foo", value: [{data}]} LinkHeaderTokenJsonPath$.nextPage
PageSize False Integer Nombre d’événements par page
PageSizeParameterName False Chaîne Nom du paramètre de requête pour la taille de page

Voici quelques exemples :

Paging: {
  "pagingType": "LinkHeader",
  "linkHeaderTokenJsonPath" : "$.metadata.links.next"
}
Paging: {
 "pagingType" : "PersistentLinkHeader", 
 "pageSizeParameterName" : "limit", 
 "pageSize" : 500 
}

Configurer NextPageUrl

NextPageUrl la pagination signifie que la réponse de l’API inclut un lien complexe dans le corps de la réponse similaire à LinkHeader, mais que l’URL est incluse dans le corps de la réponse au lieu de l’en-tête.

Champ Requis Type Description
PageSize False Integer Nombre d’événements par page
PageSizeParameterName False Chaîne Nom du paramètre de requête pour la taille de page
NextPageUrl False Chaîne Uniquement si le connecteur est pour l’API Coralogix
NextPageUrlQueryParameters False Paires de valeurs clé d’objet : ajout d’un paramètre de requête personnalisé à chaque demande de la page suivante
NextPageParaName False Chaîne Détermine le nom de la page suivante dans la requête.
HasNextFlagJsonPath False Chaîne Définit le chemin d’accès à l’attribut d’indicateur HasNextPage
NextPageRequestHeader False Chaîne Détermine le nom de l’en-tête de la page suivante dans la requête.
NextPageUrlQueryParametersTemplate False Chaîne Uniquement si le connecteur est pour l’API Coralogix

Exemple :

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\")}" 
}

Configurer NextPageToken ou PersistentToken

NextPageToken la pagination utilise un jeton (hachage ou curseur) qui représente l’état de la page active. Le jeton est inclus dans la réponse de l’API, et le client l’ajoute à la requête suivante pour extraire la page suivante. Cette méthode est souvent utilisée lorsque le serveur doit maintenir l’état exact entre les requêtes.

PersistentToken pagination utilise un jeton qui conserve le côté serveur. Le serveur mémorise le dernier jeton récupéré par le client et fournit le jeton suivant dans les requêtes suivantes. Le client continue là où il s’est arrêté même s’il effectue de nouvelles demandes ultérieurement.

Champ Requis Type Description
PageSize False Integer Nombre d’événements par page
PageSizeParameterName False string Nom du paramètre de requête pour la taille de page
NextPageTokenJsonPath False string Chemin JSON du jeton de page suivant dans le corps de la réponse.
NextPageTokenResponseHeader False string Si NextPageTokenJsonPath elle est vide, utilisez le jeton dans ce nom d’en-tête pour la page suivante.
NextPageParaName False string Détermine le nom de la page suivante dans la requête.
HasNextFlagJsonPath False string Définit le chemin d’accès à un attribut d’indicateur HasNextPage lors de la détermination si d’autres pages sont laissées dans la réponse.
NextPageRequestHeader False string Détermine le nom de l’en-tête de la page suivante dans la requête.

Exemples :

Paging: {
 "pagingType" : "NextPageToken", 
 "nextPageRequestHeader" : "ETag", 
 "nextPageTokenResponseHeader" : "ETag" 
}
Paging: {
 "pagingType" : "PersistentToken", 
    "nextPageParaName" : "gta", 
    "nextPageTokenJsonPath" : "$.alerts[-1:]._id" 
}

Configurer offset

Offset pagination spécifie le nombre de pages à ignorer et une limite du nombre d’événements à récupérer par page dans la demande. Les clients extraient une plage spécifique d’éléments à partir du jeu de données.

Champ Requis Type Description
PageSize False Integer Nombre d’événements par page
PageSizeParameterName False Chaîne Nom du paramètre de requête pour la taille de page
OffsetParaName False Chaîne Nom du paramètre de requête de requête suivant. Le CCP calcule la valeur de décalage pour chaque requête (tous les événements ingérés + 1)

Exemple :

Paging: {
   
       "pagingType": "Offset", 
        "offsetParaName": "offset" 
 }

Configuration DCR

Champ Requis Type Description
DataCollectionEndpoint True Chaîne DCE (point de terminaison de collecte de données) par exemple : https://example.ingest.monitor.azure.com.
DataCollectionRuleImmutableId True Chaîne ID immuable DCR. Recherchez-le en consultant la réponse de création de DCR ou à l’aide de l’API DCR
StreamName True string Cette valeur est définie streamDeclaration dans la DCR (le préfixe doit commencer par Custom-)

Exemple de connecteur de données CCP

Voici un exemple de tous les composants du connecteur de données CCP JSON ensemble.

{
   "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,
         "queryWindowInMin": 5,
         "httpMethod": "GET",
         "queryTimeFormat": "UnixTimestamp",
         "startTimeAttributeName": "t0",
         "endTimeAttributeName": "t1",
         "retryCount": 3,
         "timeoutInSeconds": 60,
         "headers": {
            "Accept": "application/json",
            "User-Agent": "Example-app-agent"
         } 
      },
      "paging": {
         "pagingType": "LinkHeader"
      },
      "response": {
         "eventsJsonPaths": ["$"]
      }
   }
}