INTEGRITY Документация

GraphQL Analytics

Используйте GraphQL Analytics API, чтобы просмотреть данные о сетевом трафике Cloudflare Network Firewall, связанном с правилами, соответствующими вашему трафику. Сюда входят как правила, которые вы настроили в панели управления Cloudflare Network Firewall, так и правила, управляемые Cloudflare в рамках Управляемые правила Cloudflare Network Firewall и Cloudflare Network Firewall IDS функции.

Прежде чем начать, у вас должен быть API-токен. Дополнительную помощь по началу работы с GraphQL Analytics см. в GraphQL Analytics API.

Получение Cloudflare Account ID

Чтобы составить GraphQL-запрос Network Firewall для объекта, вам понадобится Cloudflare Account ID

Получите свой Cloudflare Account ID

  1. Войдите в Панель управления Cloudflare, и выберите свою учётную запись.
  2. В адресной строке браузера должен отображаться URL-адрес https://dash.cloudflare.com/ с последующей шестнадцатеричной строкой. Эта шестнадцатеричная строка представляет собой ваш Cloudflare Account ID.

Получение идентификатора правила брандмауэра

Чтобы составить запросы для сбора аналитики по конкретному правилу, вам понадобится ID правила для каждого правила брандмауэра.

  1. На панели управления Cloudflare перейдите к разделу Cloudflare Network Firewall страницу.

    Перейдите в Политики Firewall ↗
  2. В Custom rules вкладке найдите в списке правило, ID которого вам нужен, и выберите три точки > Изменить.

  3. Найдите ID правила и нажмите кнопку копирования.

  4. Выберите Отмена и вернитесь к Cloudflare Network Firewall страницу.

Изучите схему GraphQL на примере запроса Cloudflare Network Firewall

В этом разделе вы выполните тестовый запрос, чтобы получить за пятиминутные интервалы количество всех настроенных правил Cloudflare Network Firewall. Скопируйте код ниже и вставьте его в GraphiQL.

Дополнительную информацию о схеме Analytics см. в Изучите схему Analytics с помощью GraphiQL.

query MagicFirewallExample($accountTag: string!, $start: Time, $end: Time) {
	viewer {
		accounts(filter: { accountTag: $accountTag }) {
			magicFirewallSamplesAdaptiveGroups(
				filter: { datetime_geq: $start, datetime_leq: $end }
				limit: 2
				orderBy: [datetimeFiveMinute_DESC]
			) {
				sum {
					bits
					packets
				}
				dimensions {
					datetimeFiveMinute
					ruleId
				}
			}
		}
	}
}

Примеры запросов для Cloudflare Network Firewall

Получение аналитики для конкретного правила

Используйте приведённый ниже пример, чтобы отобразить общее количество пакетов и бит для десяти потоков трафика с наибольшей вероятностью вредоносности за последний час. После получения результатов вы можете отсортировать их по частоте пакетов со средним значением за пять минут.

Для каждого потока отображайте:

query MagicFirewallObtainRules(
	$accountId: string!
	$ruleId: string
	$start: Time
	$end: Time
) {
	viewer {
		accounts(filter: { accountTag: $accountId }) {
			magicFirewallNetworkAnalyticsAdaptiveGroups(
				filter: { ruleId: $ruleId, datetime_geq: $start, datetime_leq: $end }
				limit: 10
				orderBy: [avg_packetRateFiveMinutes_DESC]
			) {
				sum {
					bits
					packets
				}
				dimensions {
					coloCity
					ipDestinationAddress
					ipSourceAddress
					outcome
				}
			}
		}
	}
}

Получение аналитики IDS

Используйте приведённый ниже пример, чтобы отобразить общее количество пакетов и бит для 10 основных потоков трафика, обнаруженных Cloudflare Network Firewall IDS за последний час.

Задав verdict к drop и outcome как pass, мы ищем трафик, помеченный как обнаружение (то есть verdict: drop), но фактически не заблокированный (например, outcome: pass). Это связано с тем, что на данный момент Cloudflare Network Firewall IDS только обнаруживает вредоносный трафик, но не блокирует его.

Для каждого потока отображайте:

query MagicFirewallObtainIDS($accountTag: string!, $start: Time, $end: Time) {
	viewer {
		accounts(filter: { accountTag: $accountTag }) {
			magicIDPSNetworkAnalyticsAdaptiveGroups(
				filter: {
					datetime_geq: $start
					datetime_leq: $end
					verdict: drop
					outcome: pass
				}
				limit: 10
				orderBy: [avg_packetRateFiveMinutes_DESC]
			) {
				sum {
					bits
					packets
				}
				dimensions {
					coloCity
					ipDestinationAddress
					ipSourceAddress
				}
			}
		}
	}
}

Как вариант, чтобы просмотреть весь проанализированный трафик, сгруппированный на вредоносный и прочий, можно использовать пример ниже. Ответ будет содержать две записи для каждой пятиминутной временной метки. verdict будет установлено значение drop на наличие вредоносного трафика, а verdict будет установлено значение pass для трафика, который не соответствует ни одному из правил IDS.

query MagicFirewallTraffic($accountTag: string!, $start: Time, $end: Time) {
	viewer {
		accounts(filter: { accountTag: $accountTag }) {
			magicIDPSNetworkAnalyticsAdaptiveGroups(
				filter: { datetime_geq: $start, datetime_leq: $end }
				limit: 10
				orderBy: [avg_packetRateFiveMinutes_DESC]
			) {
				sum {
					bits
					packets
				}
				dimensions {
					coloCity
					ipDestinationAddress
					ipSourceAddress
					verdict
				}
			}
		}
	}
}