Wskazówki dotyczące tworzenia ogólnych zapytań interfejsu API dla wykresów panelu kontrolnego
Wskazówki ułatwiające tworzenie ogólnych zapytań do interfejsu API i wykresów panelu kontrolnego w celu łatwiejszego pokrycia wymagań dotyczących danych dla konkretnych typów wykresów, odwzorowania wyników w przypadku, gdy zwracany obiekt JSON nie jest tablicą, a także tytuły dynamiczne.
Format danych
Wywoływane interfejsy API muszą zwracać dane w konkretnym formacie JSON, aby program QRadar ® Pulse mógł odczytać te dane. Funkcje API zwracają tablicę JSON (jeśli istnieje wiele wyników) lub obiekt JSON (gdy istnieje tylko jeden wynik). Zwrócone obiekty JSON są przekształcane w tablicę JSON zawierającą jeden element.
Większość funkcji API IBM® QRadar zwraca dane w formacie, który może być przetwarzany przez Puls QRadar . Inne interfejsy API, takie jak interfejsy API aplikacji, mogą wymagać użycia odwzorowania wyników QRadar Pulse w celu wyodrębnienia określonego klucza zwróconego obiektu JSON.
Wymagania dotyczące danych dla wykresów tabelarycznych
W przypadku wykresów tabelarycznych funkcje API muszą zwracać obiekt JSON (gdy istnieje tylko jeden wynik) lub tablicę JSON elementów reprezentujących dane tabelaryczne. Na przykład:
[{
"rowstring": "Thanksgiving eCard Emails Distributing Malware",
"category": "Threat Activity",
"relevance": "25%",
"href": "/app/href"
}, {
"title": "PyXie - RAT Written In Python",
"category": "Threat Activity",
"relevance": "25%",
"href": "/app/href"
}, ...
Wymagania dotyczące danych dla wykresów kołowych i wykresów słupkowych z pojedynczą serią
[{
"Country": "Europe",
"Count": 97
}, {
"Country": "Middle East",
"Count": 85
}, {
"Country": "North America",
"Count": 83
}, ...
Wymagania dotyczące danych dla wykresów szeregów czasowych
W przypadku wykresów szeregów czasowych interfejsy API muszą zwracać obiekt JSON (jeśli istnieje tylko jeden wynik) lub tablicę JSON, która zawiera co najmniej jeden pomiar oparty na czasie przy użyciu poprawnego formatu daty lub milisekundy, a także jeden lub wiele pomiarów liczbowych do wykreślenia na osi Y. Dane muszą być uporządkowane według czasu. Na przykład:
[{
"date": "2020-02-18",
"Phishing": 7.21,
"C2": 82.67,
"Malware": 272.05,
"EarlyWarning": 448.32
}, {
"date": "2020-02-19",
"Phishing": 7.47,
"C2": 94.14,
"Malware": 121.84,
"EarlyWarning": 665.33
}, {
"date": "2020-02-20",
"Phishing": 8.05,
"C2": 92.35,
"Malware": 120.71,
"EarlyWarning": 736.9
}, ...
Wymagania dotyczące danych dla wykresów rozrzutu
Wykresy rozrzutu geograficznego wymagają niezidentyfikowanego obiektu JSON (czyli obiektu, który jest przekształcany za pomocą funkcji JSON.stringify()
JavaScript ) zawierającego klucz geo_json
ze współrzędnymi oraz jedną metrykę liczbową. Na przykład:
[{
"sourceIP": "81.12.213.121",
"geoSource": "{\"geo_json\":{\"coordinates\":[44.4354,26.1033],\"type\":\"Point\"}}",
"geoDest": "{\"geo_json\":{\"coordinates\":[1.0,38.0],\"type\":\"Point\"}}",
"eventCount": 50
}, {
"sourceIP": "59.154.60.0",
"geoSource": "{\"geo_json\":{\"coordinates\":[-33.494,143.2104],\"type\":\"Point\"}}",
"geoDest": "{\"geo_json\":{\"coordinates\":[53.3472,-6.2439],\"type\":\"Point\"}}",
"eventCount": 60
}, { ...
Wymagania dotyczące danych dla kartografowych wykresów geograficznych
Kartograbowe wykresy geograficzne wymagają niezidentyfikowanego obiektu JSON (czyli obiektu, który jest przekształcany za pomocą funkcji JSON.stringify()
JavaScript ) zawierającego klucz country
z nazwą kraju/regionu lub kodem ISO-3 kraju/regionu oraz jedną metką numeryczną. Na przykład:
[{
"sourceIP": "81.12.213.121",
"geoCountry": "{\"country\":{\"confidence\":null,\"name\":\"Romania\",\"iso_code\":\"ROU\",\"geo_id\":798549}}",
"eventCount": 50
}, {
"sourceIP": "59.154.60.0",
"geoCountry": "{\"country\":{\"confidence\":null,\"name\":\"Australia\",\"iso_code\":\"AUS\",\"geo_id\":2077456}}",
"eventCount": 60
}, { ...
Odwzorowanie wyników
Jeśli obiekt główny w zwróconej JSON nie jest tablicą, która ma być rysowana, należy użyć pola Odwzorowanie wyników w celu zdefiniowania, który klucz zawiera odpowiednie dane, które mają zostać wykreślone.
Odwzorowanie wyników używa operatora JSON dot (.) do przeglądania dokumentu, począwszy od węzła głównego. Na przykład w następującym obiekcie JSON odpowiednie dane znajdują się pod kluczem items
, który znajduje się w węźle głównym produktu table
. Aby można było odczytać tablicę items
i zignorować wszystkie pozostałe klucze, wymagane jest odwzorowanie table.items
dla Puls QRadar :
{
"table": {
"title": "Top 5 most relevant threats",
"columns": [{
"title": "Threat",
"key": "title",
"subkey": "category",
"width": 75
}, {
"title": "X-Force Threat Score",
"key": "relevance",
"width": 0
}],
"items": [{
"title": "Thanksgiving eCard Emails Distributing Malware",
"category": "Threat Activity",
"relevance": "25%",
"href": "/app/href"
}, {
"title": "PyXie - RAT Written In Python",
"category": "Threat Activity",
"relevance": "25%",
"href": "/app/href"
}, { ...
Jeśli zwracany obiekt JSON jest tablicą, tak jak w przypadku większości domyślnych interfejsów API produktu QRadar , odwzorowanie nie jest konieczne. Jednak w przypadku aplikacji QRadar zwrócony kod JSON może mieć inny format.
Tytuł dynamiczny
Nazwę widoku można przesłonić, używając dynamicznego tytułu, który opisuje bieżący stan danych. Na przykład: wykres jest zatytułowany "Światowe działanie złośliwe: < nazwa_zagroże>", w którym nazwa zagrożenia zmienia się w czasie. Tytuły dynamiczne wymagają klucza title
z dynamiczną nazwą tytułu, tak jak przedstawiono to w poniższym przykładzie:
{
"title": "Worldwide Malicious Activity: emotet",
"items": [{
"sourceIP": "81.12.213.121",
"geoSource": "{\"geo_json\":{\"coordinates\":[44.4354,26.1033],\"type\":\"Point\"}}",
"geoDest": "{\"geo_json\":{\"coordinates\":[1.0,38.0],\"type\":\"Point\"}}",
"geoCountry": "{\"country\":{\"confidence\":null,\"name\":\"Romania\",\"iso_code\":\"ROU\",\"geo_id\":798549}}",
"eventCount": 50
}, { ...
Jeśli klucz title
znajduje się w węźle głównym, należy użyć pola Odwzorowanie tytułu . Odwzorowanie tytułu używa operatora JSON dot (.) do przeglądania dokumentu, począwszy od węzła głównego. Na przykład, jeśli klucz title
znajduje się w węźle głównym table
, należy określić odwzorowanie table.title
.