[Документация Yandex Cloud](../../index.md) > [Yandex Smart Web Security](../index.md) > [Пошаговые инструкции](index.md) > Настроить логи через Smart Web Security

# Настроить логирование через Smart Web Security

Для записи логов Smart Web Security используются сервисы [Cloud Logging](../../logging/index.md) и [Audit Trails](../../audit-trails/index.md). Они решают разные задачи:

* Cloud Logging — для анализа HTTP-запросов и сработавших правил в профилях безопасности, WAF и ARL.
* Audit Trails — для сбора аудитных событий Smart Web Security. Это не полноценные логи Smart Web Security, а записи о событиях безопасности и действиях с ресурсами.

## Логи аудита {#audit-events}

В Audit Trails есть два типа событий:

* [Уровня конфигурации](../at-ref.md#control-plane-events) — действия, связанные с конфигурированием ресурсов Yandex Cloud. Например, создание или удаление профиля безопасности.
* [Уровня сервисов](../at-ref.md#data-plane-events) — действия, которые происходят с ресурсами внутри сервисов Yandex Cloud. Например, срабатывание правила из профиля WAF.

Записывать события можно в бакет Object Storage, лог-группу Cloud Logging или поток данных Data Streams.

## Логи HTTP-запросов и применения правил {#requests-logging}

Для записи логов доступны два варианта: через Smart Web Security и через L7-балансировщик Application Load Balancer, к которому подключен профиль безопасности. Логирование через Smart Web Security предоставляет больше возможностей для анализа, чем логирование через Application Load Balancer. Логи записываются в лог-группу Cloud Logging.

Анализ логов позволяет настраивать и отслеживать работу Smart Web Security:

* Тестировать работу правил безопасности, WAF и ARL в режиме **Только логирование** (dry run). В этом режиме запросы пользователей не блокируются, но в логи записывается информация о срабатывании правил.
* Просматривать количество заблокированных и пропущенных запросов, оценивать и корректировать работу правил.
* Просматривать подробную информацию о запросе, выявлять ложноположительные срабатывания.

В некоторых случаях сервис может блокировать трафик при атаках. В логах для таких блокировок будет указана отметка [сервисного правила](../concepts/rules.md#service-rule): `sws_service_rule`.

## Работа с логами {#configure-logging}

Чтобы начать работать с логами Smart Web Security:

1. [Включите и настройте запись логов](#enable-logging).
1. [Посмотрите и отфильтруйте логи](#view-logs).

### Включить логирование {#enable-logging}

Включить логирование можно при [создании профиля безопасности](profile-create.md) или позднее, при его редактировании.

{% note info %}

Для управления [логированием](../concepts/logging.md) в профиле безопасности нужны роли:

- [smart-web-security.editor](../security/index.md#smart-web-security-editor) на [каталог](../../resource-manager/concepts/resources-hierarchy.md#folder), в котором находится профиль безопасности;
- [logging.writer](../../logging/security/index.md#logging-writer) на [лог-группу](../../logging/concepts/log-group.md), в которую передаются логи.

Для просмотра логов нужна роль [logging.viewer](../../logging/security/index.md#logging-viewer) на лог-группу.

{% endnote %}

{% list tabs group=instructions %}

- Cloud Logging {#logging}

  1. В [консоли управления](https://console.yandex.cloud) выберите каталог, в котором находится профиль Smart Web Security.
  1. Перейдите в сервис **Smart Web Security**.
  1. На панели слева выберите ![image](../../_assets/smartwebsecurity/profiles.svg) **Профили безопасности**.
  1. В строке с нужным профилем безопасности нажмите ![ellipsis](../../_assets/console-icons/ellipsis.svg) и выберите ![pencil](../../_assets/console-icons/pencil.svg) **Редактировать**.
  1. Включите **Запись логов**.
  1. В поле **Записывать логи в** выберите **Cloud Logging**.
  1. Выберите или создайте [лог-группу](../../logging/concepts/log-group.md) Cloud Logging, в которую будут записываться логи.
  1. Для записи в логи можно выбрать только те запросы, для которых сработали:
     * **Базовые правила**.
     * Правила **Smart Protection**.
     * Правила **Web Application Firewall**.
     * Правила **Advanced Rate Limiter**.
     * Все выбранные правила применили действие (вердикт) **DENY и CAPTCHA**.
     * Все выбранные правила применили действие **ALLOW** (легитимные запросы).

       В нормальной ситуации легитимных запросов гораздо больше, чем нелегитимных. Чтобы уменьшить объем логов, настройте параметр **Сколько не записывать логов с вердиктом ALLOW** — от 1 до 100 процентов. При первой настройке правил рекомендуется анализировать все легитимные запросы. Когда вы убедитесь, что правила работают корректно, можно изменить долю логов или отключить логирование запросов с вердиктом **ALLOW**. 
  
  1. Нажмите **Сохранить**.

- Audit Trails {#at}

  События Audit Trails можно записывать в бакет Object Storage, лог-группу Cloud Logging, поток данных Data Streams или шину EventRouter. В этой инструкции настроим запись аудитных событий в лог-группу.

  1. В [консоли управления](https://console.yandex.cloud) выберите каталог, в котором находится профиль Smart Web Security.
  1. Перейдите в сервис **Audit Trails**.
  1. Нажмите кнопку **Создать трейл**.
  1. Введите имя трейла, например `trail-sws`.
  1. В блоке **Назначение** выберите объект назначения — **Cloud Logging**.
  1. Выберите или создайте [лог-группу](../../logging/concepts/log-group.md) Cloud Logging, в которую будут записываться события Smart Web Security.
  1. В блоке **Сбор событий с уровня сервисов** включите сбор событий и выберите сервис **Smart Web Security**.

      Остальные настройки в этом блоке оставьте по умолчанию. Будут записываться все события Smart Web Security уровня сервисов в текущем каталоге. События уровня конфигурации записываться не будут.
  
  1. В блоке **Сервисный аккаунт** создайте или выберите аккаунт с ролью `logging.writer`.
  1. Нажмите **Создать**.

  Другие способы включения записи событий описаны в разделе [Создание трейла для загрузки аудитных логов](../../audit-trails/operations/create-trail.md).

  Чтобы Yandex Smart Web Security передавал события в Audit Trails:

  1. В [консоли управления](https://console.yandex.cloud) выберите каталог, в котором находится профиль Smart Web Security.
  1. Перейдите в сервис **Smart Web Security**.
  1. На панели слева выберите ![image](../../_assets/smartwebsecurity/profiles.svg) **Профили безопасности**.
  1. В строке с нужным профилем безопасности нажмите ![ellipsis](../../_assets/console-icons/ellipsis.svg) и выберите ![pencil](../../_assets/console-icons/pencil.svg) **Редактировать**.
  1. Включите **Запись логов**.
  1. В поле **Записывать логи в** выберите **Audit Trails**.
  1. (Опционально) Выберите, по каким правилам или вердиктам передавать события:
     * **Базовые правила**.
     * **Smart Protection**.
     * **Web Application Firewall**.
     * **Advanced Rate Limiter**.
     * **DENY и CAPTCHA**.
     * **ALLOW**.
  1. Нажмите **Создать**.

  Таким образом можно настроить передачу только событий из отдельных профилей безопасности или только по отдельным правилам и вердиктам.

{% endlist %}

### Просмотреть логи {#view-logs}

{% list tabs group=instructions %}

- Cloud Logging {#logging}

  1. В [консоли управления](https://console.yandex.cloud) выберите каталог, в котором находится профиль Smart Web Security.
  1. Перейдите в сервис **Smart Web Security**.
  1. Выберите раздел **Логи**.
  1. Выберите лог-группу, если их несколько.
  
  1. Выберите период показа логов одним из способов:
     
     * Нажмите кнопку с обозначением интервала, например **Последний час**, и выберите один из вариантов: **Последние 5 минут**, **Последние 30 минут**... **Последний день**.
        Также в полях **От** и **До** можно выбрать нужные даты в календаре и указать время.
     * Выберите предустановленный период: **Сейчас**, **5m**, **30m**, **1h**, **1d**, **2d** или укажите свой.
     * На временной шкале переместите индикаторы начала и конца периода.
  
  1. В строке **Запрос** укажите параметры выбора:
     
     * Выберите поля логов в выпадающем списке или начните вводить первые буквы названия поля.

       Поля для фильтрации описаны в разделе [Логирование](../concepts/logging.md).
  
     * Справа от строки запроса нажмите **</>** и введите запрос в текстовом режиме на [языке фильтрующих выражений](../../logging/concepts/filter.md).

       Примеры запросов приведены ниже.

     {% note info %}

     По умолчанию в строке запроса выбраны внутренние поля: `project`, `cluster`, `service` и `message = *SWS`. Не изменяйте эти значения.

     {% endnote %}

  1. Нажмите кнопку **Выполнить запрос**. Чтобы посмотреть содержимое лога, разверните его.

  ## Примеры готовых фильтров для логов {#filtration}

  Логи поставляются в формате JSON. Одна запись в логах соответствует одному запросу клиента, обработанному Smart Web Security.

  Запросы для фильтрации логов составляются, исходя из взаимосвязи профилей и правил [Smart Web Security](../concepts/profiles.md#profile-rules-schema). Вы можете посмотреть логи активных, работающих правил или правил в режиме **Только логирование** (dry run).

  ### Фильтры для активных правил {#active-rule-filters}

  * Показать запросы, заблокированные базовыми правилами с определенными [условиями](../concepts/conditions.md). Например, по списку или региону IP:
    ```
    module_type = "RULE_CONDITION", meta.matched_rule_verdict = "DENY"
    ```
  * Показать запросы, для которых сработали правила [Smart Protection](../concepts/rules.md##smart-protection-rules) с отправкой на капчу:
    ```
    module_type = "SMART_PROTECTION", meta.matched_rule_verdict = "CAPTCHA"
    ```
  * Показать запросы, заблокированные по профилю [WAF](../concepts/waf.md) — правилами WAF из профиля безопасности:
    ```
    module_type = "WAF", meta.matched_rule_verdict = "DENY"
    ```
  * Показать запросы, заблокированные правилами профиля [ARL](../concepts/arl.md):
    ```
    meta.arl_verdict = "DENY"
    ```

  * Показать запросы, для которых сработало конкретное правило ARL — `arl-rule-1`:
    ```
    meta.arl_verdict = "DENY", meta.arl_applied_quota_name = "arl-rule-1"
    ```

  ### Фильтры для правил в режиме логирования {#dry-run-filters}

  * Показать запросы, для которых сработали правила [Smart Protection](../concepts/rules.md#smart-protection-rules) с отправкой на капчу:
    ```
    module_type = "SMART_PROTECTION", meta.dry_run_matched_rule_verdict = "CAPTCHA"
    ```

  * Показать запросы, для которых было превышение по конкретному правилу ARL — `arl-rule-1`:
    ```
    meta.arl_verdict = "DENY", meta.arl_dry_run_exceeded_quota_names = "arl-rule-1"
    ```

  Таким же образом вы можете добавить в фильтры другие условия и изменять их с учетом особенностей вашего потока трафика.

- Audit Trails {#at}

  1. В [консоли управления](https://console.yandex.cloud) выберите каталог, в котором находится профиль Smart Web Security.
  1. Перейдите в сервис **Cloud Logging**.
  1. Выберите лог-группу, в которую передаются события Audit Trails.
  1. Выберите количество сообщений на одной странице и период: 1 час, 3 часа, 1 день, 1 неделя, 2 недели.
  1. В строке **Запрос** укажите запрос на [языке фильтрующих выражений](../../logging/concepts/filter.md) и нажмите кнопку **Выполнить**.

     События Audit Trails записываются в формате JSON. Чтобы найти определенное [событие](../at-ref.md#data-plane-events), укажите его имя в формате:

     ```
     yandex.cloud.audit.smartwebsecurity.<имя_события>
     ```

     Примеры составления запросов приведены в разделе [Примеры запросов для поиска событий в аудитных логах](../../audit-trails/tutorials/search-events-audit-logs/examples.md).

  1. Чтобы посмотреть содержимое лога, разверните его.

{% endlist %}