Отправить билет Мои билеты
Добро пожаловать
Вход в систему  Зарегистрироваться

PowerDMARC и Splunk — руководство по интеграции

Руководство по интеграции PowerDMARC и Splunk

PowerDMARC → Главная страница решения → Интеграции → SIEM

Благодаря интеграции PowerDMARC с Splunk вы можете импортировать и отслеживать данные об аутентификации электронной почты и безопасности доменов непосредственно в среде Splunk. Используя API PowerDMARC, организации могут реализовать оптимизированную интеграцию с SIEM без сложных настроек — просто подключитесь, запустите систему и получите централизованный обзор состояния безопасности электронной почты по всем доменам.

В данном руководстве основное внимание уделяется настройке и импорту данных. Панели инструментов Splunk и расширенные средства визуализации не входят в сферу его охвата.

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

  • Документация Swagger: https://app.powerdmarc.com/swagger-ui/index.html

  • Альтернативная документация: https://api.powerdmarc.com/

Примечание: Правила именования (имена индексов, типы источников, пути к файлам) являются рекомендациями, а не обязательными требованиями. Адаптируйте их в соответствии со стандартами вашей среды.

Какие данные собирает скрипт

Скрипт интеграции извлекает два набора данных из API PowerDMARC:

Набор данных

Конечная точка API

Тип источника

Журналы аудита

/api/v1/audit-logs

dmarc:audit

Сводные отчеты DMARC (по источникам отправки)

/api/v1/reports/aggregate/по-источнику-отправки

dmarc:агрегировать


Сводные отчеты формируются для каждого домена в вашей учетной записи с учетом соответствующих требованиямнепрошедшихи перенаправленные . Домены перечисляются автоматически через /api/v1/domains.

Обзор архитектуры

PowerDMARC API

      ↓

Скрипт на Python (запуск по расписанию с помощью cron / таймера systemd / Планировщика заданий)

      ↓

Splunk HTTP Event Collector (HEC)

      ↓

Splunk (поиск, информационные панели, оповещения, корреляция)

Splunk получает данные через конечную точку HTTP Event Collector (HEC), которая обеспечивает безопасный прием данных из внешних источников.

Скрипт также поддерживает запись файлов JSON, разделённых символами новой строки, вместо HEC или в дополнение к нему — для сред, в которых исходящий HTTPS-трафик на порт Splunk HEC запрещён. См. Альтернатива: импорт данных с помощью File Monitor.

Предпосылки

  • Splunk Enterprise или Splunk Cloud с правами администратора

  • Права на создание токенов HEC, создание индексов и настройку источников данных

  • Python 3.7 или более поздней версии на системе, на которой запускается скрипт

  • Токен носителя API PowerDMARC с правом доступа к журналам аудита и сводным отчетам

  • Сетевое подключение с хоста, на котором запущен скрипт, к:

    • API PowerDMARC — https://app.powerdmarc.com (TCP 443)

    • Ваш конечный узел Splunk HEC (TCP 8088 для Splunk Enterprise, TCP 443 для Splunk Cloud)


Конфигурация Splunk


Шаг 1: Создайте специальный индекс

  1. Перейдите в Настройки → Индексы

  2. Нажмите Новый индекс

  3. Настройка:

    • Название индекса: powerdmarc

    • Тип данных индекса: События

    • Приложение: поиск (или ваше любимое приложение)

    • Оставьте остальные настройки по умолчанию или измените их в соответствии с вашими требованиями к срокам хранения данных

  4. Нажмите Сохранить

Шаг 2. Включение HTTP Event Collector (HEC)

  1. Перейдите в Настройки → Ввод данных

  2. Нажмите Сборщик событий HTTP

  3. Нажмите Глобальные настройки

  4. Настройка:

    • Все токены: Включено

    • Включить SSL: Включено (рекомендуется)

    • Номер HTTP-порта: 8088 (по умолчанию)

  5. Нажмите Сохранить

Клиенты Splunk Cloud: функция HEC включена по умолчанию и работает на порту 443. Вам не нужно изменять глобальные настройки, однако для включения HEC на некоторых типах стеков может потребоваться отправить запрос в службу поддержки.

Шаг 3: Создание токена HEC

  1. По-прежнему в «Настройки» → «Источники данных» → «Сборщик событий HTTP», нажмите «Новый токен»

  2. Настройте параметры токена:

    • Имя: PowerDMARC_Integration

    • Переопределение имени источника: powerdmarc:api

    • Описание: Токен для импорта журнала аудита и сводных отчетов PowerDMARC

  3. Нажмите Далее

  4. Настройки ввода:

    • Тип источника: Выбрать Автоматический

    • Допустимые индексы: include powerdmarc

    • Индекс по умолчанию: powerdmarc

  5. Нажмите «Просмотр», а затем «Отправить»

Важно: Сразу же скопируйте и сохраните значение токена — позже его восстановить не удастся.

Почему «Автоматический» имеет значение: скрипт устанавливает тип источника для каждого события (dmarc:audit или dmarc:aggregate) в поле данных HEC. Выбор фиксированного типа источника для токена приведет к переопределению этих значений и объединению обоих наборов данных в один тип источника.


Настройка скрипта интеграции


Шаг 4: Подготовка среды Python

У скрипта есть одна зависимость от стороннего компонента: requests.

Вариант A — Установка через Интернет (рекомендуется)

pip3 install requests


Вариант B — Установка в автономном режиме

На компьютере с доступом в Интернет:

pip3 download requests -d ./packages

Перенесите пакеты в целевую систему, затем: 

pip3 install --no-index --find-links=./packages requests

Проверьте установку:

python3 -c "import requests; print(requests.__version__)"

Подойдет любая достаточно актуальная версия (2.25 или более поздняя).

Шаг 5: Развертывание скрипта

Создайте специальную служебную учетную запись и структуру каталогов вместо запуска интеграции с правами пользователя root:

sudo useradd -r -s /usr/sbin/nologin dmarc

sudo mkdir -p /opt/dmarc /etc/dmarc /var/lib/dmarc /var/log/dmarc

sudo chown dmarc:dmarc /var/lib/dmarc /var/log/dmarc

sudo chmod 750 /var/lib/dmarc /var/log/dmarc

Копировать dmarc_to_splunk.py в нужное место:

sudo install -o dmarc -g dmarc -m 750 dmarc_to_splunk.py /opt/dmarc/


Шаг 6: Настройте скрипт

Каждый параметр можно задать, отредактировав файл конфигурационного в main() , либо путём установки переменной среды. Настоятельно рекомендуется использовать переменные окружения , чтобы учетные данные никогда не хранились непосредственно в файле скрипта.

Переменная среды

Ключ конфигурации

По умолчанию

Цель

DMARC_API_KEY

dmarc_api_key

(нет — обязательно)

Токен носителя API PowerDMARC

DMARC_DAYS_TO_FETCH

количество_дней_для_извлечения

7

Период обратного обзора в днях

DMARC_OUTPUT_MODE

режим_вывода

hec

hecфайлили и то, и другое

SPLUNK_HEC_URL

splunk_hec_url

(заполнитель)

Полный URL-адрес конечной точки мероприятия HEC

SPLUNK_HEC_TOKEN

splunk_hec_token

(нет — требуется для HEC)

Токен HEC из шага 3

SPLUNK_INDEX

splunk_index

powerdmarc

Целевой индекс

SPLUNK_SOURCE

splunk_source

powerdmarc:api

Значение для события источник поле

SPLUNK_VERIFY_SSL

splunk_verify_ssl

true

Проверка сертификата TLS

SPLUNK_BATCH_SIZE

splunk_batch_size

500

События по версии HEC POST

DMARC_OUTPUT_DIR

output_dir

/var/log/dmarc

Каталог вывода JSON (файл/оба режимы)

DMARC_STATE_FILE

файл_состояния

/var/lib/dmarc/state.json

Состояние дедупликации


Форматы URL-адресов конечных точек HEC:

  • Splunk Enterprise / локальная установка: https://your-splunk-instance:8088/services/collector/event

  • Splunk Cloud: https://http-inputs-<your-stack>.splunkcloud.com/services/collector/event

Splunk Cloud hostnames vary by stack age and type — some use http-inputs-<stack>.splunkcloud.com on port 443, others use a .splunkcloud.com:8088 form. Confirm yours under Settings → Data inputs → HTTP Event Collector in your Splunk Cloud console rather than assuming.

Создайте файл учетных данных:

sudo tee /etc/dmarc/splunk.env >/dev/null <<'EOF'

DMARC_API_KEY=ваш_токен_powerdmarc_bearer

SPLUNK_HEC_URL=https://your-splunk-instance:8088/services/collector/event

SPLUNK_HEC_TOKEN=ваш_токен_hec

SPLUNK_INDEX=powerdmarc

DMARC_DAYS_TO_FETCH=7

Конец файла


sudo chown root:dmarc /etc/dmarc/splunk.env

sudo chmod 640 /etc/dmarc/splunk.env

Шаг 7: Проверка подключения

Скрипт принимает --test , который отправляет одно тестовое событие в HEC и завершает работу. Это позволяет проверить токен, URL, цепочку TLS и путь через брандмауэр, не дожидаясь завершения полного цикла сбора данных:

sudo -u dmarc bash -c 'set -a; . /etc/dmarc/splunk.env; set +a; python3 /opt/dmarc/dmarc_to_splunk.py --test'

Ожидаемый результат:

============================================================

Интеграция PowerDMARC с Splunk

Режим вывода: hec

============================================================

Проверка подключения к Splunk HEC...

Отправлена партия из 1 события dmarc:audit (1/1)

Сводка HEC для dmarc:audit — отправлено: 1, сбоев: 0, всего: 1

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

index=powerdmarc action="integration_connectivity_test"

Шаг 8: Запустить полный сбор данных

sudo -u dmarc bash -c 'set -a; . /etc/dmarc/splunk.env; set +a; python3 /opt/dmarc/dmarc_to_splunk.py'

Ожидаемый результат (в сокращённом виде):

============================================================

Интеграция PowerDMARC с Splunk

Режим вывода: hec

============================================================

Обработка сводных отчетов DMARC...

Загрузка сводных отчетов за период с 30.01.2026 по 06.02.2026

Загрузка всех доменов...

Загружена страница 1: 24 домена (всего на данный момент: 24)

Всего получено 24 домена

Ход выполнения: 1,4 % (1/72) | Домен 1/24: example.com | Ожидаемое время завершения: осталось 4,7 мин

...

Обработано 318 уникальных событий сводного отчета

Отправлена партия из 318 событий dmarc:aggregate (318/318)

Сводная информация HEC для dmarc:aggregate — отправлено: 318, сбоев: 0, всего: 318

Обработка журналов аудита...

Извлечение журналов аудита за период с 30.01.2026 по 06.02.2026

Всего получено 15 записей журнала аудита

Обработано 15 уникальных событий журнала аудита за последние 7 дней

Сводка HEC для dmarc:audit — отправлено: 15, с ошибками: 0, всего: 15

============================================================

Интеграция завершена успешно

============================================================

Первый прогон будет самым длительным, поскольку в ходе него собирается полное окно обратного просмотра. В последующих прогонах пропускаются все уже обработанные данные (см. Дедупликация).


Расписание автоматического выполнения

Linux/Unix (cron)

sudo crontab -u dmarc -e

Почасовая оплата:

0 * * * * set -a; . /etc/dmarc/splunk.env; set +a; /usr/bin/python3 /opt/dmarc/dmarc_to_splunk.py >> /var/log/dmarc/run.log 2>&1

Скрипт выводит информацию в стандартный вывод, поэтому приведенное выше перенаправление позволяет сохранить журнал выполнения. Добавьте правило правило для /var/log/dmarc/run.log в производственной среде.

Определение длительности интервала. Скрипт выдерживает интервал примерно в 2 секунды между вызовами API, чтобы не превышать ограничение по частоте запросов PowerDMARC, и отправляет в общей сложности три запроса на каждый домен. Приблизительная оценка общего времени сбора данных составляет количество доменов × 3 × 4 секунды — около 5 минут для 25 доменов, но почти 2 часа для 500. Если в вашей учетной записи более ~100 доменов, ежечасный график будет перекрываться. В этом случае:

  • Разделите график — запускайте сбор журналов аудита каждый час, а агрегированный сбор — один раз в сутки, или

  • Добавить файл блокировки (flock), чтобы перекрывающиеся запуски завершались корректно:

0 * * * * /usr/bin/flock -n /tmp/dmarc-splunk.lock -c 'set -a; . /etc/dmarc/splunk.env; set +a; /usr/bin/python3 /opt/dmarc/dmarc_to_splunk.py' >> /var/log/dmarc/run.log 2>&1


Linux (таймер systemd)

Для данной задачи таймер systemd, как правило, предпочтительнее cron — он изначально поддерживает файл настроек, предотвращает наложение запусков и отправляет вывод в журнал.

/etc/systemd/system/dmarc-splunk.service:

[Единица измерения]

Описание=Импорт данных из PowerDMARC в Splunk

After=network-online.target


[Услуга]

Тип=oneshot

Пользователь=dmarc

Группа=dmarc

EnvironmentFile=/etc/dmarc/splunk.env

ExecStart=/usr/bin/python3 /opt/dmarc/dmarc_to_splunk.py

/etc/systemd/system/dmarc-splunk.timer:

[Единица измерения]

Описание=Ежечасно запускать импорт данных из PowerDMARC в Splunk


[Таймер]

OnCalendar=hourly

Persistent=true


[Установить]

WantedBy=timers.target

Включить эту функцию:

sudo systemctl daemon-reload

sudo systemctl enable --now dmarc-splunk.timer

sudo systemctl list-timers dmarc-splunk.timer

journalctl -u dmarc-splunk.service -f

Windows (Планировщик заданий)

  1. Открыть «Планировщик заданий» и нажмите «Создать задачу»

  2. Вкладка «Общие»:

    • Название: Интеграция PowerDMARC с Splunk

    • Параметры безопасности: Запускать независимо от того, вошел ли пользователь в систему

  3. Вкладка «Триггеры»: Новый → Начало: По расписанию → Ежедневно, повторять каждые 1 час

  4. Вкладка «Действия»: «Новое» → «Запустить программу»

    • Программа: python.exe

    • Аргументы: C:\dmarc\dmarc_to_splunk.py

  5. Нажмите ОК

В Windows задайте параметры конфигурации в файле словаре , либо определите переменные среды на уровне компьютера и измените output_dir / state_file на пути Windows, например C:\dmarc\logs и C:\dmarc\state\state.json.


Проверка ввода данных в Splunk

Журналы аудита

index=powerdmarc sourcetype=dmarc:audit

| сортировка — _time

| раздел 20

| таблица _time, user_name, action, ip_address, admin_username

Поля, которые должны отображаться:

  • user_name — пользователь, выполнивший действие

  • действие — описание выполненного действия

  • ip_address — IP-адрес пользователя

  • admin_username — учетная запись администратора, если применимо

  • метка времени — время исходного события PowerDMARC

Сводные отчеты

index=powerdmarc sourcetype=dmarc:aggregate

| stats sum(email_volume) as volume, avg(dmarc_pass_percentage) as avg_pass по domain_name

| сортировка — по громкости

В агрегированных событиях приводятся данные по количеству и доле для каждого домена и каждого источника отправки в рамках DMARC, SPF и DKIM, а также информация о фактически примененной политике.

Примеры структур событий

dmarc:audit

{

  «sourcetype»«dmarc:audit»,

  «timestamp»«2026-02-04 14:29:24»,

  «user_name»«Джон Доу»,

  «действие»«Обновлены присоединённые домены»,

  «ip_address»«12.111.67.123»,

  «admin_username»«N/A»,

  «other_info»«Н/Д»

}

dmarc:aggregate (сокращённое)

{

  «sourcetype»«dmarc:aggregate»,

  «timestamp»«2026-02-06»,

  "report_date_from""30.01.2026",

  "report_date_to""2026-02-06",

  «domain_id»1234,

  «domain_name»"example.com",

  «sending_source»«Google»,

  «статус»«соответствует»,

  «email_volume»4821,

  «dmarc_pass_count»4810,

  «dmarc_pass_percentage»99.77,

  «spf_align_percentage»99.77,

  «dkim_align_percentage»100.0

}

Временные метки событий

Скрипт задает HEC поле «время» по собственной временной метке каждого события, если он может её проанализировать, поэтому _time отражает момент возникновения события, а не момент его поступления в систему. Это важно при первом запуске: без этого семидневная загрузка данных за прошлый период полностью попадет в текущую минуту и будет отображаться некорректно на всех панелях временных рядов.


Дедупликация

Скрипт ведёт файл состояния (по умолчанию /var/lib/dmarc/state.json), содержащий отпечатки SHA-256 всех уже доставленных событий. При каждом запуске события, совпадающие с сохраненным отпечатком, пропускаются. Отпечатки, которым более 14 дней, автоматически удаляются, чтобы файл не разрастался без ограничений.

Отпечатки пальцев сохраняются только после успешной доставки, поэтому неудачный вызов HEC POST оставляет эти события доступными для повторной попытки при следующем запуске, а не игнорирует их без уведомления.

Два практических следствия:

  • Файл состояния должен сохраняться между запусками и перезагрузками. Не размещайте его в /tmp или внутри слоя контейнера, который будет удалён.

  • Удаление файла состояния приводит к тому, что при следующем запуске система заново загрузит данные за весь период обратного просмотра. Это правильный способ принудительной дозагрузки данных, однако следует ожидать появления дубликатов в Splunk, если данные уже присутствуют в системе.


Альтернатива: импорт данных с помощью File Monitor

Если исходящий доступ к порту HEC недоступен, установите DMARC_OUTPUT_MODE=file (или и то, и другое). Скрипт записывает JSON-данные, разделенные символами новой строки, в каталог output_dir, по одному файлу на каждый запуск для каждого набора данных:

/var/log/dmarc/dmarc_aggregate_20260206_140312.json

/var/log/dmarc/audit_logs_20260206_140312.json

Настройте Splunk-форвардер для мониторинга этого каталога. В файле $SPLUNK_HOME/etc/system/local/inputs.conf:

[monitor:///var/log/dmarc/dmarc_aggregate_*.json]

отключено = false

index = powerdmarc

sourcetype = dmarc:aggregate


[monitor:///var/log/dmarc/audit_logs_*.json]

отключено = false

index = powerdmarc

sourcetype = dmarc:audit

А в props.conf, чтобы события были разбиты по строкам и имели правильные временные метки:

[dmarc:aggregate]

INDEXED_EXTRACTIONS = json

KV_MODE = none

SHOULD_LINEMERGE = false

TIME_PREFIX = "report_date_to":\s*"

TIME_FORMAT = %Y-%m-%d


[dmarc:audit]

INDEXED_EXTRACTIONS = json

KV_MODE = none

SHOULD_LINEMERGE = false

TIME_PREFIX = "timestamp":\s*"

TIME_FORMAT = %Y-%m-%d %H:%M:%S

Пользователю Splunk требуется право на чтение в этом каталоге — добавьте его в файл группу dmarc , либо смягчите режим доступа к каталогу до 0755. Добавьте задание очистки (find /var/log/dmarc -name '*.json' -mtime +7 -delete), чтобы старые файлы вывода не накапливались.


Устранение неполадок

Данные не отображаются в Splunk

  • Запустить с --test , чтобы определить, связана ли проблема с HEC или с PowerDMARC

  • Убедитесь, что токен HEC указан правильно, и включен (Настройки → Источники данных → HTTP Event Collector)

  • Убедитесь, что в список разрешенных индексов токена входят powerdmarc

  • Убедитесь, что индекс существует и что ваша роль имеет права на поиск в нём

  • Убедитесь, что правила брандмауэра разрешают исходящий HTTPS-трафик с хоста, на котором находится скрипт, к конечной точке HEC

  • Просмотрите журнал выполнения для HEC вернула HTTP … — в тексте ошибки Splunk указана конкретная проблема

HTTP 403 «Неверный токен» от HEC

The token value is wrong, disabled, or belongs to a different Splunk stack. Note that the header format is Authorization: Splunk <token> — not Bearer.

HTTP 400 «Неверный индекс»

Токен не разрешает индекс, на который нацелен скрипт. Добавьте либо powerdmarc в список разрешённых индексов токена, либо измените SPLUNK_INDEX на индекс, который уже разрешен для данного токена.

Ошибки SSL-сертификата

Установите сертификат, которому доверяет хост скрипта — это правильное решение. В качестве временной меры исключительно в непроизводственных средах установите SPLUNK_VERIFY_SSL=false. Ни в коем случае не делайте этого в производственной среде; это отключает защиту, благодаря которой HEC через TLS имеет смысл.

Ошибки аутентификации в API PowerDMARC

  • Убедитесь, что токен API действителен и срок его действия не истек

  • Убедитесь, что у токена есть права доступа как к журналам аудита, так и к сводным отчетам

  • Убедитесь, что базовый URL-адрес API доступен с данного хоста

Скрипт запускается, но журналы не загружаются

  • Проверьте, действительно ли существуют журналы аудита за рассматриваемый период

  • Увеличить DMARC_DAYS_TO_FETCH временно

  • Помните, что при дедупликации ранее загруженные события исключаются — отчет о запуске «Обработано 0 уникальных событий журнала аудита» после успешного завершения предыдущего запуска является нормальным явлением, а не ошибкой

Отказ в доступе при запуске

Учетная запись службы не может создавать файлы или записывать данные в каталог /var/lib/dmarc или /var/log/dmarc. Заранее создайте оба каталога и выполните команду передайте их владельцем учетной записи, под которой запускается скрипт, как показано в шаге 5.

Выполнение занимает больше времени, чем предусмотрено расписанием

См. примечание о размерах в разделе «Планирование автоматического выполнения». Добавьте flock или разделите расписание сбора данных.


Следующие шаги

Благодаря потоку данных вы можете:

  • Создавайте настраиваемые информационные панели для отслеживания динамики соответствия стандарту DMARC по доменам и источникам отправки

  • Уведомления о событиях аудита, таких как изменения политик или входы в систему с неожиданных диапазонов IP-адресов

  • Оповещение о снижении уровня соответствия — источник отправки, у которого показатель dmarc_pass_percentage резко снижается по сравнению с предыдущей неделей

  • Сопоставить данные PowerDMARC с другими журналами безопасности (почтовый шлюз, системы аутентификации, EDR)

  • Создание отчетности по вопросам соблюдения нормативных требований и отчетности для руководства на основе сводных данных

Рекомендуемые усовершенствования

  • Дополнительные конечные точки API: расширьте скрипт для получения отчетов о криминалистической экспертизе или данных о конфигурации по доменам

  • Ротация журналов: добавьте файл правило logrotate для журнала выполнения скрипта в производственной среде

  • Уведомления об ошибках: оберните скрипт в вызов, который генерирует оповещение при ненулевом коде завершения, или настройте оповещение в Splunk при отсутствии ожидаемого почасового объема событий

  • Сборка в виде технологического дополнения Splunk (TA): объедините входы, свойства и конфигурацию на этапе индексирования в виде технологического дополнения для упрощения распространения

  • Управление секретами: замените файл настроек на менеджер секретов (Vault, AWS Secrets Manager, учетные данные systemd), если таковой доступен

Соображения безопасности

  • Сохраняйте учетные данные вне скрипта. Используйте файл среды (режим 640, владельцем которого является root:dmarc) или менеджер секретных данных. Ни в коем случае не заносите токены в систему контроля версий.

  • Оставьте проверку TLS включенной. SPLUNK_VERIFY_SSL по умолчанию установлено значение true не просто так.

  • Запускать под выделенной учетной записью без привилегий. Для интеграции не требуются права root.

  • Ограничить использование токена HEC. Ограничить его до powerdmarc .

  • Осуществляйте ротацию обоих токенов по расписанию — токен носителя PowerDMARC и токен Splunk HEC.

  • Мониторинг выполнения. Оповещение о сбоях при выполнении и о неожиданных пропусках при загрузке данных.

  • Проведите анализ средств контроля доступа в Splunk. Данные журнала аудита позволяют идентифицировать пользователей и IP-адреса источников; ограничьте доступ к индексу только теми ролями, которым он необходим.

Поддержка и ресурсы

  • Документация по API PowerDMARC: https://api.powerdmarc.com/

  • Документация по Splunk HEC: https://docs.splunk.com/Documentation/Splunk/latest/Data/UsetheHTTPEventCollector

  • Splunk Answers: https://community.splunk.com/



Нашли ли вы его полезным? Да Нет

Отправить отзыв
Извините, мы не смогли быть полезными. Помогите нам улучшить эту статью с помощью ваших отзывов.