Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Bu makaleyi veri bağlayıcıları belgeleri RestApiPoller ek olarak kullanarak Kodsuz Bağlayıcı Çerçevesi (CCF) ile bir veri bağlayıcısı oluşturabilirsiniz.
Her veri bağlayıcısı, Microsoft Sentinel veri bağlayıcısının belirli bir bağlantısını temsil eder. Bir veri bağlayıcısı, farklı uç noktalardan veri getiren birden çok bağlantıya sahip olabilir. Bu makaleyle oluşturduğunuz JSON yapılandırmasını kullanarak CCF veri bağlayıcısı için dağıtım şablonunu tamamlayabilirsiniz.
Daha fazla bilgi için bkz. Microsoft Sentinel için kodsuz bağlayıcı oluşturma.
Veri bağlayıcıları oluşturma veya güncelleştirme
REST API belgelerindeki veya işlemlerine başvurarak create en son kararlı veya update önizleme API sürümünü bulun. ve işlemleri arasındaki create fark, değerin gerekli update olmasıdırupdate.etag
PUT Yöntem:
https://management.azure.com/subscriptions/{{subscriptionId}}/resourceGroups/{{resourceGroupName}}/providers/Microsoft.OperationalInsights/workspaces/{{workspaceName}}/providers/Microsoft.SecurityInsights/dataConnectors/{{dataConnectorId}}?api-version={{apiVersion}}
URI parametreleri
En son API sürümü hakkında daha fazla bilgi için bkz . Veri bağlayıcıları: URI parametrelerini oluşturma veya güncelleştirme.
İstek gövdesi
CCF RestApiPoller veri bağlayıcısı için istek gövdesi aşağıdaki yapıya sahiptir:
{
"name": "{{dataConnectorId}}",
"kind": "RestApiPoller",
"etag": "",
"properties": {
"connectorDefinitionName": "",
"auth": {},
"request": {},
"response": {},
"paging": "",
"dcrConfig": ""
}
}
RestApiPoller
RestApiPoller veri kaynağınız için disk belleği, yetkilendirme ve istek/yanıt yüklerini özelleştirmek için kullanabileceğiniz bir API poller CCF veri bağlayıcısıdır.
| Name | Gerekli | Tür | Açıklama |
|---|---|---|---|
name |
True | Dize | URI parametresiyle eşleşen bağlantının benzersiz adı. |
kind |
True | Dize | Değer kind . Bu alan olarak RestApiPollerayarlanmalıdır. |
etag |
GUID | Değer etag . Yeni bağlayıcı oluşturma için bu alan boş bırakılmalıdır. Güncelleştirme işlemleri için mevcut etag bağlayıcıyla etag (GUID) eşleşmesi gerekir. |
|
properties.connectorDefinitionName |
Dize | Veri bağlayıcısının DataConnectorDefinition kullanıcı arabirimi yapılandırmasını tanımlayan kaynağın adı. Daha fazla bilgi için Veri bağlayıcısı tanımı'na gidin. |
|
properties.auth |
True | İç İçe JSON | Verileri yoklama için kimlik doğrulama özellikleri. Daha fazla bilgi için Kimlik doğrulama yapılandırması'na gidin. |
properties.request |
True | İç İçe JSON | API uç noktası gibi verilerin yoklanması için istek yükü. Daha fazla bilgi için Yapılandırma isteme bölümüne gidin. |
properties. response |
True | İç İçe JSON | Api' nin verileri yokladığında döndürdüğü yanıt nesnesi ve iç içe ileti. Daha fazla bilgi için Yanıt yapılandırması'na gidin. |
properties.paging |
İç İçe JSON | Verileri yoklarken sayfalandırma yükü. Daha fazla bilgi için Sayfalama yapılandırması'na gidin. | |
properties.dcrConfig |
İç İçe JSON | Veriler bir veri toplama kuralına (DCR) gönderildiğinde gerekli parametreler. Daha fazla bilgi için DCR yapılandırması'na gidin. |
Kimlik doğrulama yapılandırması
CCF aşağıdaki kimlik doğrulama türlerini destekler:
Not
CCF OAuth2 uygulaması istemci sertifikası kimlik bilgilerini desteklemez.
En iyi yöntem olarak, kimlik bilgilerini sabit kodlamak yerine kimlik doğrulama bölümündeki parametreleri kullanın. Daha fazla bilgi için bkz . Gizli girişin güvenliğini sağlama.
Parametreleri de kullanan dağıtım şablonunu oluşturmak için, ek bir başlangıç [ile bu bölümdeki parametrelerden kaçış yapmanız gerekir. Bu adım, parametrelerin bağlayıcıyla kullanıcı etkileşimini temel alan bir değer atamasına olanak tanır. Daha fazla bilgi için bkz . Şablon ifadeleri kaçış karakterleri.
Kimlik bilgilerinin kullanıcı arabiriminden girilebilmesini sağlamak için bölümünde connectorUIConfig istenen parametreleri instructionsgirmeniz gerekir. Daha fazla bilgi için bkz. Kodsuz Bağlayıcı Çerçevesi için veri bağlayıcısı tanımları başvurusu.
Temel kimlik doğrulaması
| Alan | Gerekli | Tür |
|---|---|---|
UserName |
True | Dize |
Password |
True | Dize |
aşağıda, içinde tanımlanan parametreleri kullanan temel kimlik doğrulaması örneği verilmiştir connectorUIconfig:
"auth": {
"type": "Basic",
"UserName": "[[parameters('username')]",
"Password": "[[parameters('password')]"
}
API anahtarı
| Alan | Gerekli | Tür | Açıklama | Varsayılan değer |
|---|---|---|---|---|
ApiKey |
True | Dize | Kullanıcı gizli anahtarı. | |
ApiKeyName |
Dize | Değeri içeren URI üst bilgisinin ApiKey adı. |
Authorization |
|
ApiKeyIdentifier |
Dize | Belirtecin başına eklemek için dize değeri. | token |
|
IsApiKeyInPostPayload |
Boole | Gizli anahtarın üst bilgi yerine gövdede POST gönderilip gönderilmeyeceğini belirleyen değer. |
false |
APIKey kimlik doğrulama örnekleri:
"auth": {
"type": "APIKey",
"ApiKey": "[[parameters('apikey')]",
"ApiKeyName": "X-MyApp-Auth-Header",
"ApiKeyIdentifier": "Bearer"
}
Bu örneğin sonucu, aşağıdaki üst bilgide gönderilen kullanıcı girişinden tanımlanan gizli dizidir: X-MyApp-Auth-Header. Bearer apikey
"auth": {
"type": "APIKey",
"ApiKey": "123123123",
}
Bu örnek, varsayılan değerleri kullanır ve şu üst bilgiyle sonuçlanır: Authorization: token 123123123.
"auth": {
"type": "APIKey",
"ApiKey": "123123123",
"ApiKeyName": ""
}
ApiKeyName açıkça olarak ""olarak ayarlandığından, sonuç şu üst bilgidir: Authorization: 123123123.
OAuth2
Kodsuz Bağlayıcı Çerçevesi, OAuth 2.0 yetkilendirme kodu verme ve istemci kimlik bilgilerini destekler. Yetkilendirme Kodu verme türü, gizli ve genel istemciler tarafından erişim belirteci için yetkilendirme kodu değişimi yapmak için kullanılır.
Kullanıcı yeniden yönlendirme URL'si aracılığıyla istemciye döndükten sonra, uygulama URL'den yetkilendirme kodunu alır ve erişim belirteci istemek için kullanır.
| Alan | Gerekli | Tür | Açıklama |
|---|---|---|---|
ClientId |
True. | Dize | İstemci kimliği. |
ClientSecret |
True. | Dize | İstemci gizli dizisi. |
AuthorizationCode |
Değer olduğunda grantType true değeridir authorization_code. |
Dize | Verme türü ise authorization_code, bu alan değeri kimlik doğrulama sunucusunun döndürdüğünü yetkilendirme kodudur. |
Scope |
Verme türü için authorization_code true.Verme türü için client_credentials isteğe bağlı. |
Dize | Kullanıcı onayı için boşlukla ayrılmış kapsam listesi. Daha fazla bilgi için bkz . OAuth2 kapsamları ve izinleri. |
RedirectUri |
Değer olduğunda grantType true değeridir authorization_code. |
Dize | Yeniden yönlendirme URL'si olmalıdır https://portal.azure.com/TokenAuthorize/ExtensionName/Microsoft_Azure_Security_Insights. |
GrantType |
True. | Dize | Verme türü. veya authorization_codeolabilirclient_credentials. |
TokenEndpoint |
True. | Dize | Vermede geçerli bir belirteçle kod değiştirme URL'si veya vermede authorization_code geçerli bir belirteç client_credentials içeren bir istemci kimliği ve gizli dizi. |
TokenEndpointHeaders |
Nesne | Belirteç sunucusuna özel üst bilgiler göndermek için isteğe bağlı bir anahtar/değer nesnesi. | |
TokenEndpointQueryParameters |
Nesne | Belirteç sunucusuna özel sorgu parametreleri göndermek için isteğe bağlı bir anahtar/değer nesnesi. | |
AuthorizationEndpoint |
True. | Dize | Akış için kullanıcı onayı URL'si authorization_code . |
AuthorizationEndpointHeaders |
Nesne | Kimlik doğrulama sunucusuna özel üst bilgiler göndermek için isteğe bağlı bir anahtar/değer nesnesi. | |
AuthorizationEndpointQueryParameters |
Nesne | OAuth2 yetkilendirme kodu akış isteğinde kullanılan isteğe bağlı anahtar/değer çifti. |
Kullanıcının izinleri adına veri getirmek için kimlik doğrulama kodu akışını kullanabilirsiniz. Uygulama izinlerine sahip verileri getirmek için istemci kimlik bilgilerini kullanabilirsiniz. Veri sunucusu uygulamaya erişim izni verir. İstemci kimlik bilgileri akışında kullanıcı olmadığından, yetkilendirme uç noktası gerekmez, yalnızca belirteç uç noktası gerekir.
İşte OAuth2 authorization_code verme türüne bir örnek:
"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"
}
İşte OAuth2 client_credentials verme türüne bir örnek:
"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 Belirteci (JWT) kimlik doğrulaması, belirteçlerin kullanıcı adı ve parola kimlik bilgileri aracılığıyla alınıp API istekleri için kullanılmasını destekler.
Temel örnek
"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"
}
POST gövdesindeki kimlik bilgileri (varsayılan)
"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"
}
Üst bilgilerdeki kimlik bilgileri (temel kimlik doğrulaması)
"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
}
Üst bilgilerdeki kimlik bilgileri (kullanıcı belirteci)
"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"
}
Şu kimlik doğrulama akışını izleyin:
JWT belirtecini almak için adresine kimlik bilgileri
TokenEndpointgönderin; veuserNamepasswordkullanılırkenIsCredentialsInHeaders, istekte kimlik bilgilerinin nereye yerleştirileceğini belirlemek için kullanılır.- if
IsCredentialsInHeaders: true: ileusername:passwordtemel bir kimlik doğrulama üst bilgisi gönderir. - If
IsCredentialsInHeaders: false: Kimlik bilgilerini birPOSTgövdeye gönderir.
- if
Yanıt üst bilgisinden veya kullanarak
JwtTokenJsonPathbelirteci ayıklayın.JWT belirteçleri için Yetkilendirme üst bilgisi bir sabittir ve her zaman "Yetkilendirme" olacaktır.
| Alan | Gerekli | Tür | Açıklama |
|---|---|---|---|
type |
True | Dize | Türü. Olmalıdır JwtToken |
userName |
True (kullanılmıyorsa userToken ) |
Nesne | Kimlik bilgisi için anahtar/değer çifti userName . Üst bilgi isteğinde ve gönderiliyorsauserName, özelliğini kullanıcı adıyla belirtinpassword.value Gövde isteğinde ve userName gönderiliyorsa password ve KeybelirtinValue. |
password |
True (kullanılmıyorsa userToken ) |
Nesne | Parola kimlik bilgileri için anahtar/değer çifti. ve üst bilgi isteğinde gönderilirseuserName, özelliğini ile passwordbelirtinvalue.userName Gövde isteğinde ve userName gönderiliyorsa password ve KeybelirtinValue. |
userToken |
True (kullanılmıyorsa userName ) |
Dize | Kimlik doğrulaması için sistem belirtecini almak için istemci tarafından oluşturulan kullanıcı belirteci. |
UserTokenPrepend |
False | Dize | Belirtecin önüne metin eklenip eklenmeyeceğini gösteren değer. Varsayılan: Bearer. |
NoAccessTokenPrepend |
False | Boole | Belirtecin hiçbir şey eklememesi gerektiğini gösteren erişim bayrağı. |
TokenEndpointHttpMethod |
False | Dize | Belirteç uç noktası için HTTP yöntemi. Veya GetolabilirPost. Varsayılan değerdir Post. |
TokenEndpoint |
True | Dize | JWT belirtecini almak için kullanılan URL uç noktası. |
IsCredentialsInHeaders |
Boole | Kimlik bilgilerinin temel kimlik doğrulama üst bilgisi () olarak mı (true) yoksa gövde POST (false olarak mı gönderildiğini) belirten değer kullanılırken userTokenyoksayılır. Varsayılan değerdir false. |
|
IsJsonRequest |
Boole | İsteğin JSON (üst bilgi) ile form kodlamalı (üst Content-Type = application/jsonbilgi Content-Type = application/x-www-form-urlencoded) içinde gönderilip gönderilmeydiğini gösteren değerdir. Varsayılan değerdir false. |
|
JwtTokenJsonPath |
Dize | Yanıtın belirtecini JSONPath ayıklamak için kullanılacak değeri gösteren değer. Örneğin: $.access_token. |
|
JwtTokenInResponseHeader |
Boole | Belirtecin yanıt üst bilgisinden gövdeye göre ayıklanıp ayıklanmayacağını gösteren değer. Varsayılan değerdir false. |
|
JwtTokenHeaderName. |
Dize | Belirteç yanıt üst bilgisinde olduğunda üst bilgi adını gösteren değer. Varsayılan değerdir Authorization. |
|
JwtTokenIdentifier |
Dize | Ön ekli belirteç dizesinden JWT'yi ayıklamak için kullanılan tanımlayıcı. | |
QueryParameters |
Nesne | İstek belirteç uç noktasına gönderilirken eklenecek özel sorgu parametreleri. | |
Headers |
Nesne | İstek belirteç uç noktasına gönderilirken eklenecek özel üst bilgiler. | |
RequestTimeoutInSeconds |
Tamsayı | saniyeler içinde istek zaman aşımı. Varsayılan değer, en yüksek değeri olan değeridir100300. |
Not
Sınırlamalar
- Belirteç alımı için kullanıcı adı ve parola kimlik doğrulaması gerektirir
- API anahtar tabanlı belirteç isteklerini desteklemez
- Özel üst bilgi kimlik doğrulamasını desteklemez (kullanıcı adı ve parola olmadan)
İstek yapılandırması
İstek bölümü, CCF veri bağlayıcısının veri kaynağınıza nasıl istek gönderdiğini tanımlar (örneğin, API uç noktası ve bu uç noktayı yoklama sıklıkları).
| Alan | Gerekli | Tür | Açıklama |
|---|---|---|---|
ApiEndpoint |
True. | Dize | Bu alan, uzak sunucunun URL'sini belirler ve verilerin çekildiği uç noktayı tanımlar. |
RateLimitQPS |
Tamsayı | Bu alan, ilk istek için saniye içinde izin verilen çağrı veya sorgu sayısını tanımlar. Sayfalandırılmış istekler için geçerli değildir. Sayfalandırmayı kısıtlamak için öğesini de ayarlayın PaginatedCallsPerSecond. |
|
PaginatedCallsPerSecond |
Çift (0...1000) | Bu alan, RESTful API'sine yönelik sayfalandırılmış istekler için saniye başına izin verilen çağrı sayısını tanımlar. Her sayfalandırılmış API çağrısı arasında milisaniyelik bir gecikmeye (1000 / paginatedCallsPerSecond) neden olur. Bu azaltma yalnızca sayfalandırma istekleri için geçerlidir ve ilk istek hızını denetleyen öğesinden RateLimitQPSayrıdır. Genellikle, bu değer RateLimitQPS tüm istekler genelinde veri kaynağının hız sınırına göre ayarlanır.
0 değer, sayfalandırma azaltma uygulanmadığını gösterir. |
|
RateLimitConfig |
Nesne | Bu alan, RESTful API'sinin hız sınırı yapılandırmasını tanımlar. Daha fazla bilgi için örnek bölümüne RateLimitConfiggidin. |
|
QueryWindowInMin |
Tamsayı | Bu alan, kullanılabilir sorgu penceresini dakika cinsinden tanımlar. En az 1 dakikadır. Varsayılan değer 5 dakikadır. | |
HttpMethod |
Dize | Bu alan API yöntemini tanımlar: GET(varsayılan) veya POST. |
|
QueryTimeFormat |
Dize | Bu alan, uç noktanın (uzak sunucu) beklediği tarih ve saat biçimini tanımlar. CCF, bu değişkenin kullanıldığı her yerde geçerli tarih ve saati kullanır. Olası değerler sabitlerdir: UnixTimestamp, UnixTimestampInMillsveya tarih ve saatin diğer geçerli gösterimleri. Örneğin: yyyy-MM-dd, MM/dd/yyyy HH:mm:ss.Varsayılan değerdir ISO 8601 UTC. |
|
RetryCount |
Tamsayı (1...6) | Bu alan, yeniden deneme değerlerinin 16 bir hatadan kurtarılmalarına izin verildiğini tanımlar. Varsayılan değer şeklindedir 3. |
|
TimeoutInSeconds |
Tamsayı (1...300) | Bu alan, istek zaman aşımını saniyeler içinde tanımlar. Varsayılan değer şeklindedir 20. |
|
IsPostPayloadJson |
Boole | Bu alan yükün POST JSON biçiminde olup olmadığını belirler. Varsayılan değer şeklindedir false. |
|
Headers |
Nesne | Bu alan, istek üst bilgilerini tanımlayan anahtar/değer çiftlerini içerir. | |
QueryParameters |
Nesne | Bu alan, istek sorgusu parametrelerini tanımlayan anahtar/değer çiftlerini içerir. | |
StartTimeAttributeName |
EndTimeAttributeName Değer ayarlandığında true. |
Dize | Bu alan, sorgu başlangıç saati için sorgu parametresi adını tanımlar. Daha fazla bilgi için örnek bölümüne StartTimeAttributeNamegidin. |
EndTimeAttributeName |
StartTimeAttributeName Ayarlandığında true. |
Dize | Bu alan, sorgu bitiş saati için sorgu parametresi adını tanımlar. |
QueryTimeIntervalAttributeName |
Dize | Bu alan, uç nokta bir zaman çerçevesindeki verileri sorgulamak için özelleştirilmiş bir biçim gerektiriyorsa kullanılır. ve parametreleriyle QueryTimeIntervalPrependQueryTimeIntervalDelimiter bu özelliği kullanın. Daha fazla bilgi için örnek bölümüne QueryTimeIntervalAttributeNamegidin. |
|
QueryTimeIntervalPrepend |
QueryTimeIntervalAttributeName Ayarlandığında true. |
Dize | Başvurusu QueryTimeIntervalAttributeName. |
QueryTimeIntervalDelimiter |
QueryTimeIntervalAttributeName Ayarlandığında true. |
Dize | Başvurusu QueryTimeIntervalAttributeName. |
QueryParametersTemplate |
Dize | Bu alan, gelişmiş senaryolarda parametreleri geçirirken kullanılacak sorgu şablonuna başvurur. Örneğin: "queryParametersTemplate": "{'cid': 1234567, 'cmd': 'reporting', 'format': 'siem', 'data': { 'from': '{_QueryWindowStartTime}', 'to': '{_QueryWindowEndTime}'}, '{_APIKeyName}': '{_APIKey}'}". |
|
InitialCheckpointTimeUtc |
DateTime (UTC) | Depolanmış bir denetim noktası olmadığında ilk yoklama için sorgu başlangıç zamanını belirtir. İlk başarılı yoklamadan sonra bir denetim noktası kalıcı hale geldikten sonra bu değer yoksayılır. Bu ayar yalnızca bağlayıcının istek yapılandırması karşılık gelen bir bitiş zamanı parametresi olmadan bir başlangıç zamanı sorgu parametresi (veya startTimeAttributeName değiştirme belirteci gibi{_QueryWindowStartTime}) tanımladığında geçerlilik kazanır. Yalnızca sayfalandırma imleçlerine veya belirteçlere dayanan bağlayıcılar üzerinde hiçbir etkisi yoktur. Biçim: ISO 8601 UTC datetime (örneğin, 2024-01-15T00:00:00Z). |
API karmaşık parametreler gerektirdiğinde veya queryParameterskullanınqueryParametersTemplate. Bu komutlar bazı yerleşik değişkenleri içerir.
| Yerleşik değişken | Kullanım için: queryParameters |
Kullanım için: queryParametersTemplate |
|---|---|---|
_QueryWindowStartTime |
Evet | Evet |
_QueryWindowEndTime |
Evet | Evet |
_APIKeyName |
Hayır | Evet |
_APIKey |
Hayır | Evet |
StartTimeAttributeName örneği
Şu örneği göz önünde bulundurun:
StartTimeAttributeName=fromEndTimeAttributeName=untilApiEndpoint=https://www.example.com
Uzak sunucuya gönderilen sorgu: https://www.example.com?from={QueryTimeFormat}&until={QueryTimeFormat + QueryWindowInMin}.
QueryTimeIntervalAttributeName örneği
Şu örneği göz önünde bulundurun:
QueryTimeIntervalAttributeName=intervalQueryTimeIntervalPrepend=time:QueryTimeIntervalDelimiter=..ApiEndpoint=https://www.example.com
Uzak sunucuya gönderilen sorgu: https://www.example.com?interval=time:{QueryTimeFormat}..{QueryTimeFormat + QueryWindowInMin}.
RateLimitConfig örneği
Şu örneği göz önünde bulundurun:
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
}
}
Yanıt hız sınırı üst bilgilerini içerdiğinde bağlayıcı, istek hızını ayarlamak için bu bilgileri kullanabilir.
Veri kaynağı API'si olarak Microsoft Graph kullanan istek örnekleri
Bu örnek, iletileri filtre sorgu parametresiyle sorgular. Daha fazla bilgi için bkz. Microsoft Graph API sorgu parametreleri.
"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 "
}
Önceki örnek adresine GETbir https://graph.microsoft.com/v1.0/me/messages?filter=receivedDateTime gt {time of request} and receivedDateTime lt 2019-09-01T17:00:00.0000000 istek gönderir. Zaman damgası her queryWindowInMin zaman için güncelleştirilir.
Bu örnekle aynı sonuçları elde edebilirsiniz:
"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}"
}
}
Veri kaynağının iki sorgu parametresi beklediği durumlar için başka bir seçenek vardır (biri başlangıç saati, biri bitiş saati için).
Örneğin:
"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",
}
Bu seçenek adresine GETbir https://graph.microsoft.com/me/calendarView?startDateTime=2019-09-01T09:00:00.0000000&endDateTime=2019-09-01T17:00:00.0000000 istek gönderir.
Karmaşık sorgular için kullanın QueryParametersTemplate. Bu örnek, gövdesindeki parametrelerle bir POST istek gönderir:
"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}))\"}"
}
Yanıt yapılandırması
Aşağıdaki parametreleri kullanarak veri bağlayıcınızın yanıtları nasıl işlediğini tanımlayın:
| Alan | Gerekli | Tür | Açıklama |
|---|---|---|---|
EventsJsonPaths |
True | Dizelerin listesi | Yanıt JSON'unda iletinin yolunu tanımlar. JSON yol ifadesi, JSON yapısında bir öğenin veya öğe kümesinin yolunu belirtir. |
SuccessStatusJsonPath |
Dize | Yanıt JSON'unda başarı iletisinin yolunu tanımlar. Bu parametre tanımlandığında parametresi de SuccessStatusValue tanımlanmalıdır. |
|
SuccessStatusValue |
Dize | Yanıt JSON'sindeki başarı iletisi değerinin yolunu tanımlar. | |
IsGzipCompressed |
Boole | Yanıtın bir GZIP dosyasında sıkıştırılıp sıkıştırılmayacağını belirler. | |
format |
True | Dize | Biçimin json, csvveya xmlolup olmadığını belirler. |
CompressionAlgo |
Dize | Veya multi-gzipsıkıştırma algoritmasını deflate tanımlar. GZIP sıkıştırma algoritması için, bu parametre için bir değer ayarlamak yerine olarak yapılandırın IsGzipCompressedTrue . |
|
CsvDelimiter |
Dize | Yanıt biçimi CSV ise ve varsayılan CSV sınırlayıcısını değiştirmek istiyorsanız başvurur ",". |
|
HasCsvBoundary |
Boole | CSV verilerinin bir sınırı olup olmadığını gösterir. | |
HasCsvHeader |
Boole | CSV verilerinin üst bilgisi olup olmadığını gösterir. Varsayılan değerdir True. |
|
CsvEscape |
Dize | Alan sınırı için bir kaçış karakteri tanımlar. Varsayılan değer şudur: "Örneğin, üst bilgileri olan bir CSV ve gibi boşluklar id,name,avg içeren bir veri satırı alan sınırı gerektirir1,"my name",5.5." |
|
ConvertChildPropertiesToArray |
Boole | Her özelliğin veri içerdiği olayların listesi yerine uzak sunucunun bir nesne döndürdüğü özel bir duruma başvurur. |
Not
CSV biçim türü belirtim tarafından RFC4180 ayrıştırılır.
Yanıt yapılandırma örnekleri
JSON biçiminde bir sunucu yanıtı beklenir. Yanıtta istenen veriler özellik değerinde yer alır. Yanıt özelliği durumu , verilerin yalnızca değeri successise alınamadığını gösterir.
"response": {
"EventsJsonPaths ": ["$.value"],
"format": "json",
"SuccessStatusJsonPath": "$.status",
"SuccessStatusValue": "success",
"IsGzipCompressed": true
}
Bu örnekte beklenen yanıt, üst bilgi içermeyen bir CSV için hazırlanır.
"response": {
"EventsJsonPaths ": ["$"],
"format": "csv",
"HasCsvHeader": false
}
Disk belleği yapılandırması
Veri kaynağı yanıt yükünün tamamını aynı anda gönderemiyorsa CCF veri bağlayıcısının yanıt sayfalarındaki verilerin bölümlerini nasıl alacağını bilmesi gerekir. Aralarından seçim yapabileceğiniz disk belleği türleri şunlardır:
| Disk belleği türü | Karar faktörü |
|---|---|
| API yanıtının sonraki ve önceki sayfalara bağlantıları var mı? | |
| API yanıtının sonraki ve önceki sayfalar için bir belirteci veya imleci var mı? | |
| API yanıtı, disk belleği sırasında atlanan nesne sayısı için bir parametreyi destekliyor mu? | |
| API yanıtı, döndürülecek nesne sayısı için bir parametreyi destekliyor mu? |
LinkHeader veya PersistentLinkHeader'ı yapılandırma
En yaygın disk belleği türü, bir sunucu veri kaynağı API'sinin sonraki ve önceki veri sayfalarına URL'ler sağlamasıdır.
Bağlantı Üst Bilgisi belirtimi hakkında daha fazla bilgi için bkzRFC 5988. .
LinkHeader disk belleği, API yanıtının şunları içerdiği anlamına gelir:
-
LinkHTTP yanıt üst bilgisi. - Yanıt gövdesinden bağlantıyı almak için bir JSON yolu.
PersistentLinkHeader-type disk belleği, bağlantı üst bilgisinin arka uç depolama alanında kalıcı olması dışında ile aynı özelliklere LinkHeadersahiptir. Bu seçenek, sorgu pencerelerinin disk belleği bağlantılarını etkinleştirir.
Örneğin, bazı API'ler sorgu başlangıç saatlerini veya bitiş saatlerini desteklemez. Bunun yerine, bir sunucu tarafı imlecini destekler. Sunucu tarafı imlecini hatırlamak için kalıcı sayfa türlerini kullanabilirsiniz. Daha fazla bilgi için bkz. İmleç nedir?.
Not
Sunucu tarafındaki PersistentLinkHeader yarış koşullarını önlemek için bağlayıcı için yalnızca bir sorgu ile çalıştırılabilir. Bu sorun gecikme süresini etkileyebilir.
| Alan | Gerekli | Tür | Açıklama |
|---|---|---|---|
LinkHeaderTokenJsonPath |
False | Dize | Yanıt gövdesindeki değerin nereden alınacağı belirtmek için bu özelliği kullanın. Örneğin, veri kaynağı aşağıdaki JSON değerini { nextPage: "foo", value: [{data}]}döndürürse, LinkHeaderTokenJsonPath değeri olur $.nextPage. |
PageSize |
False | Tamsayı | Sayfa başına olay sayısını belirlemek için bu özelliği kullanın. |
PageSizeParameterName |
False | Dize | Sayfa boyutunu belirtmek için bu sorgu parametresi adını kullanın. |
PagingInfoPlacement |
False | Dize | Disk belleği bilgilerinin nasıl dolduruldığını belirlemek için bu özelliği kullanın. veya QueryStringkabul ederRequestBody. |
PagingQueryParamOnly |
False | Boole | Sorgu parametrelerini belirtmek için bu özelliği kullanın. true olarak ayarlanırsa, disk belleği sorgu parametreleri dışında diğer tüm sorgu parametrelerini atlar. |
İşte birkaç örnek:
"paging": {
"pagingType": "LinkHeader",
"linkHeaderTokenJsonPath" : "$.metadata.links.next"
}
"paging": {
"pagingType" : "PersistentLinkHeader",
"pageSizeParameterName" : "limit",
"pageSize" : 500
}
NextPageUrl'i yapılandırma
NextPageUrl-type disk belleği, API yanıtının yanıt gövdesinde öğesine LinkHeaderbenzer karmaşık bir bağlantı içerdiği, ancak URL'nin üst bilgi yerine yanıt gövdesine dahil olduğu anlamına gelir.
| Alan | Gerekli | Tür | Açıklama |
|---|---|---|---|
PageSize |
False | Tamsayı | Sayfa başına olay sayısı. |
PageSizeParameterName |
False | Dize | Sayfa boyutu için sorgu parametresi adı. |
NextPageUrl |
False | Dize | Yalnızca bağlayıcı Coralogix API'sine yönelikse kullanılan alan. |
NextPageUrlQueryParameters |
False | Nesne | Sonraki sayfa için her isteğe özel sorgu parametresi ekleyen anahtar/değer çiftleri. |
NextPageParaName |
False | Dize | İstekteki sonraki sayfa adı. |
HasNextFlagJsonPath |
False | Dize | flag özniteliğinin HasNextPage yolu. |
NextPageRequestHeader |
False | Dize | İstekteki sonraki sayfa üst bilgisi adı. |
NextPageUrlQueryParametersTemplate |
False | Dize | Yalnızca bağlayıcı Coralogix API'sine yönelikse kullanılan alan. |
PagingInfoPlacement |
False | Dize | Disk belleği bilgilerinin nasıl doldurulduğunu belirleyen alan. veya QueryStringkabul ederRequestBody. |
PagingQueryParamOnly |
False | Boole | Sorgu parametrelerini belirleyen alan. true olarak ayarlanırsa, disk belleği sorgu parametreleri dışında diğer tüm sorgu parametrelerini atlar. |
Örneğin:
"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\")}"
}
NextPageToken veya PersistentToken'ı yapılandırma
NextPageToken-type sayfalandırma, geçerli sayfanın durumunu temsil eden bir belirteç (karma veya imleç) kullanır. Belirteç API yanıtına eklenir ve istemci sonraki sayfayı getirmek için bunu sonraki isteğe ekler. Bu yöntem genellikle sunucunun istekler arasındaki tam durumu koruması gerektiğinde kullanılır.
PersistentToken sayfalandırma, sunucu tarafını kalıcı hale getiren bir belirteç kullanır. Sunucu, istemcinin son alınan belirtecini hatırlar ve sonraki isteklerde sonraki belirteci sağlar. İstemci, daha sonra yeni isteklerde bulunsa bile kaldığı yerden devam eder.
| Alan | Gerekli | Tür | Açıklama |
|---|---|---|---|
PageSize |
False | Tamsayı | Sayfa başına olay sayısı. |
PageSizeParameterName |
False | Dize | Sayfa boyutu için sorgu parametresi adı. |
NextPageTokenJsonPath |
False | Dize | Yanıt gövdesindeki sonraki sayfa belirtecinin JSON yolu. |
NextPageTokenResponseHeader |
False | Dize | Boşsa NextPageTokenJsonPath , sonraki sayfa için bu üst bilgi adındaki belirteci kullanacağınızı belirten alan. |
NextPageParaName |
False | Dize | İstekteki sonraki sayfa adını belirleyen alan. |
HasNextFlagJsonPath |
False | Dize | Yanıtta daha fazla sayfa bırakılıp bırakılmadığını belirlerken bayrak HasNextPage özniteliğinin yolunu tanımlayan alan. |
NextPageRequestHeader |
False | Dize | İstekteki sonraki sayfa üst bilgisi adını belirleyen alan. |
PagingInfoPlacement |
False | Dize | Disk belleği bilgilerinin nasıl doldurulduğunu belirleyen alan. veya QueryStringkabul ederRequestBody. |
PagingQueryParamOnly |
False | Boole | Sorgu parametrelerini belirleyen alan. true olarak ayarlanırsa, disk belleği sorgu parametreleri dışında diğer tüm sorgu parametrelerini atlar. |
Örnekler:
"paging": {
"pagingType" : "NextPageToken",
"nextPageRequestHeader" : "ETag",
"nextPageTokenResponseHeader" : "ETag"
}
"paging": {
"pagingType" : "PersistentToken",
"nextPageParaName" : "gta",
"nextPageTokenJsonPath" : "$.alerts[-1:]._id"
}
Uzaklığı Yapılandır
Offset-type sayfalandırma, atlanması gereken sayfa sayısını ve istekteki sayfa başına alınacak olay sayısı sınırını belirtir. İstemciler veri kümesinden belirli bir öğe aralığını getirir.
| Alan | Gerekli | Tür | Açıklama |
|---|---|---|---|
PageSize |
False | Tamsayı | Sayfa başına olay sayısı. |
PageSizeParameterName |
False | Dize | Sayfa boyutu için sorgu parametresi adı. |
OffsetParaName |
False | Dize | Sonraki istek sorgusu parametre adı. CCF, her istek için uzaklık değerini hesaplar (alınan tüm olaylar + 1). |
PagingInfoPlacement |
False | Dize | Disk belleği bilgilerinin nasıl doldurulduğunu belirleyen alan. veya QueryStringkabul ederRequestBody. |
PagingQueryParamOnly |
False | Boole | Sorgu parametrelerini belirleyen alan. true olarak ayarlanırsa, disk belleği sorgu parametreleri dışında diğer tüm sorgu parametrelerini atlar. |
Örneğin:
"paging": {
"pagingType": "Offset",
"offsetParaName": "offset",
"pageSize": 50,
"pagingQueryParamOnly": true,
"pagingInfoPlacement": "QueryString"
}
CountBasedPaging'ı yapılandırma
CountBasedPaging-type sayfalandırma, istemcinin yanıtta döndürülecek öğe sayısını belirtmesine olanak tanır. Bu özellik, yanıt yükünün bir parçası olarak bir count parametresine dayalı olarak sayfalandırmayı destekleyen API'ler için kullanışlıdır.
| Alan | Gerekli | Tür | Açıklama |
|---|---|---|---|
pageNumberParaName |
True | Dize | HTTP isteğindeki sayfa numarasının parametre adı. |
PageSize |
False | Tamsayı | Sayfa başına olay sayısı. |
ZeroBasedIndexing |
False | Boole | Sayın sıfır tabanlı olduğunu belirten bayrak. |
HasNextFlagJsonPath |
False | Dize | HTTP yanıt yükündeki bayrağın JSON yolu, daha fazla sayfa olduğunu gösterir. |
TotalResultsJsonPath |
False | Dize | HTTP yanıt yükündeki toplam sonuç sayısının JSON yolu. |
PageNumberJsonPath |
False | Dize | HTTP yanıt yükündeki sayfa numarasının JSON yolu. Sağlanmışsa totalResultsJsonPath gereklidir. |
PageCountJsonPath |
False | Dize | HTTP yanıt yükündeki sayfa sayısının JSON yolu. Sağlanmışsa totalResultsJsonPath gereklidir. |
PagingInfoPlacement |
False | Dize | Disk belleği bilgilerinin nasıl doldurulduğunu belirleyen alan. veya QueryStringkabul ederRequestBody. |
PagingQueryParamOnly |
False | Boole | Sorgu parametrelerini belirleyen alan. true olarak ayarlanırsa, disk belleği sorgu parametreleri dışında diğer tüm sorgu parametrelerini atlar. |
Örneğin:
"paging": {
"pagingType" : "CountBasedPaging",
"pageNumberParaName" : "page",
"pageSize" : 10,
"zeroBasedIndexing" : true,
"hasNextFlagJsonPath" : "$.hasNext",
"totalResultsJsonPath" : "$.totalResults",
"pageNumberJsonPath" : "$.pageNumber",
"pageCountJsonPath" : "$.pageCount"
}
DCR yapılandırması
| Alan | Gerekli | Tür | Açıklama |
|---|---|---|---|
DataCollectionEndpoint |
True | Dize | Veri toplama uç noktası (DCE). Örneğin: https://example.ingest.monitor.azure.com. |
DataCollectionRuleImmutableId |
True | Dize | DCR sabit kimliği. DCR oluşturma yanıtını görüntüleyerek veya DCR API'sini kullanarak bu yanıtı bulun. |
StreamName |
True | Dize | Bu değer, DCR'de tanımlanan değerdir streamDeclaration . Ön ek ile Custom-başlamalıdır. |
Örnek CCF veri bağlayıcısı
CCF veri bağlayıcısı JSON'un tüm bileşenlerine bir örnek aşağıda verilmiştir:
{
"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": ["$"]
}
}
}