← Cloudflare Network Firewall / cloudflare-network-firewall / tutorials
GraphQL Analytics
Используйте GraphQL Analytics API, чтобы просмотреть данные о сетевом трафике Cloudflare Network Firewall (ранее Magic Firewall), связанном с правилами, которые совпадают с вашим трафиком. Сюда входят как правила, которые вы настроили в панели управления Network Firewall, так и правила, управляемые Cloudflare в рамках Network Firewall Managed rules и Network Firewall IDS функции.
Прежде чем начать, у вас должен быть API-токен. Дополнительную помощь по началу работы с GraphQL Analytics см. в GraphQL Analytics API.
Получение Cloudflare Account ID
Чтобы составить GraphQL-запрос Network Firewall для объекта, вам понадобится Cloudflare Account ID
Получите свой Cloudflare Account ID
- Войдите в Панель управления Cloudflare ↗, и выберите свою учётную запись.
- В адресной строке браузера должен отображаться URL-адрес
https://dash.cloudflare.com/с последующей шестнадцатеричной строкой. Эта шестнадцатеричная строка представляет собой ваш Cloudflare Account ID.
Получение идентификатора правила брандмауэра
Чтобы составить запросы для сбора аналитики по конкретному правилу, вам понадобится ID правила для каждого правила брандмауэра.
- На панели управления Cloudflare перейдите к разделу Политики межсетевого экрана ↗ страницу.
- В Пользовательские политики вкладке найдите в списке правило, ID которого вам нужен, и выберите три точки > Изменить.
- Найдите ID и нажмите кнопку копирования.
- Выберите Отмена и вернитесь к Политики межсетевого экрана страницу.
Изучите схему GraphQL на примере запроса Cloudflare Network Firewall
В этом разделе вы выполните тестовый запрос и получите количество всех настроенных правил 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
Получение аналитики для конкретного правила
Используйте приведённый ниже пример, чтобы отобразить общее количество пакетов и бит для десяти потоков трафика с наибольшей вероятностью вредоносности за последний час. После получения результатов вы можете отсортировать их по частоте пакетов со средним значением за пять минут.
Для каждого потока отображайте:
- IP-адреса источника и назначения
- Входящие дата-центры Cloudflare, которые его получили
- Общий объём трафика в битах и пакетах, полученных за час
- Действия, выполняемые правилом брандмауэра
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 основных потоков трафика, обнаруженных Network Firewall IDS за последний час.
Задав verdict к drop и outcome как pass, мы ищем трафик, помеченный как обнаружение (то есть verdict: drop), но фактически не заблокированный (например, outcome: pass). Это связано с тем, что в настоящее время Network Firewall IDS только обнаруживает вредоносный трафик, но не отбрасывает его.
Для каждого потока отображайте:
- IP-адреса источника и назначения.
- Входящие дата-центры Cloudflare, которые его получили.
- Общий объём трафика в битах и пакетах, полученных за час.
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
}
}
}
}
}