[Документация Yandex Cloud](../../index.md) > [Yandex Object Storage](../index.md) > [Практические руководства](index.md) > Загрузка аудитных логов в SIEM ArcSight

# Загрузка аудитных логов в SIEM ArcSight

Создайте трейл, который будет загружать аудитные логи уровня конфигурации ресурсов отдельного каталога в бакет Yandex Object Storage с включенным шифрованием. Затем настройте непрерывную доставку логов в SIEM ArcSight.

Для успешного прохождения руководства у вас должен быть установлен экземпляр ArcSight.

Решение, которое описано в руководстве, работает по следующей схеме:
1. [Трейл](../../audit-trails/concepts/trail.md) загружает логи в бакет Object Storage.
1. [Бакет](../concepts/bucket.md) монтируется через [FUSE](https://ru.wikipedia.org/wiki/FUSE_(модуль_ядра))-интерфейс к папке на промежуточной [ВМ](../../glossary/vm.md).
1. [SmartConnector](https://www.microfocus.com/documentation/arcsight/arcsight-smartconnectors/AS_SmartConn_getstart_HTML/) забирает логи из папки и передает их в ArcSight для анализа.

Подробнее о сценариях загрузки аудитных логов в ArcSight смотрите в [Yandex Cloud Security Solution Library](https://github.com/yandex-cloud-examples/yc-export-auditlogs-to-arcsight#two-log-shipping-scenarios).

{% note info %}

[Yandex Cloud Security Solution Library](https://github.com/yandex-cloud-examples/yc-security-solutions-library) — это набор примеров и рекомендаций по построению безопасной инфраструктуры в Yandex Cloud, собранных в публичном репозитории на GitHub.

{% endnote %}

Чтобы настроить доставку файлов аудитных логов в ArcSight:

1. [Подготовьте облако к работе](#before-begin).
1. [Подготовьте окружение](#prepare-environment).
1. [Назначьте роли сервисным аккаунтам](#add-roles).
1. [Создайте трейл](#create-trail).
1. [Смонтируйте бакет](#mount-bucket).
1. [Подключите ArcSight SmartConnector](#configure-arcsight).

Если созданные ресурсы вам больше не нужны, [удалите их](#clear-out).

## Перед началом работы {#before-begin}

Если у вас еще нет интерфейса командной строки Yandex Cloud (CLI), [установите и инициализируйте его](../../cli/quickstart.md#install).

По умолчанию используется каталог, указанный при [создании](../../cli/operations/profile/profile-create.md) профиля CLI. Чтобы изменить каталог по умолчанию, используйте команду `yc config set folder-id <идентификатор_каталога>`. Также для любой команды вы можете указать другой каталог с помощью параметров `--folder-name` или `--folder-id`. Если вы обращаетесь к ресурсу по имени, поиск будет выполнен в каталоге по умолчанию. Если вы обращаетесь к ресурсу по идентификатору, поиск будет выполнен глобально — во всех каталогах с учетом прав доступа.

Зарегистрируйтесь в Yandex Cloud и создайте [платежный аккаунт](../../billing/concepts/billing-account.md):
1. Перейдите в [консоль управления](https://kz.console.yandex.cloud), затем войдите в Yandex Cloud или зарегистрируйтесь.
1. На странице **[Yandex Cloud Billing](https://kz.console.yandex.cloud/billing)** убедитесь, что у вас подключен платежный аккаунт, и он находится в [статусе](../../billing/concepts/billing-account-statuses.md) `ACTIVE` или `TRIAL_ACTIVE`. Если платежного аккаунта нет, [создайте его](../../billing/quickstart/index.md) и [привяжите](../../billing/operations/pin-cloud.md) к нему облако.

Если у вас есть активный платежный аккаунт, вы можете создать или выбрать [каталог](../../resource-manager/concepts/resources-hierarchy.md#folder), в котором будет работать ваша инфраструктура, на [странице облака](https://kz.console.yandex.cloud/cloud).

[Подробнее об облаках и каталогах](../../resource-manager/concepts/resources-hierarchy.md).

### Необходимые платные ресурсы {#paid-resources}

В стоимость поддержки инфраструктуры входит:

* использование виртуальных машин ([тарифы Compute Cloud](../../compute/pricing.md));
* плата за хранение данных в бакете ([тарифы Object Storage](../pricing.md#prices-storage));
* плата за операции с данными ([тарифы Object Storage](../pricing.md#prices-operations));
* плата за использование ключей KMS ([тарифы Key Management Service](../../kms/pricing.md#prices)).

## Подготовьте окружение {#prepare-environment}

### Подготовьте промежуточную ВМ {#setup-vm}

Вы можете использовать готовую ВМ, у которой есть доступ к экземпляру ArcSight, или создать новую:

1. [Создайте ВМ](../../compute/operations/vm-create/create-linux-vm.md) из образа Linux с операционной системой [Ubuntu 20.04](https://yandex.cloud/ru-kz/marketplace/products/yc/ubuntu-20-04-lts).
1. [Подключитесь к ВМ](../../compute/operations/vm-connect/ssh.md#vm-connect) по [SSH](../../glossary/ssh-keygen.md).

### Создайте бакет для аудитных логов {#create-backet}

{% list tabs group=instructions %}

- Консоль управления {#console}

  1. В [консоли управления](https://kz.console.yandex.cloud) перейдите в каталог, в котором хотите создать бакет, например, `example-folder`.
  1. Перейдите в сервис **Object Storage**.
  1. Нажмите **Создать бакет**.
  1. На странице создания бакета:
      1. Введите имя бакета в соответствии с [правилами именования](../concepts/bucket.md#naming).
      1. При необходимости ограничьте максимальный размер бакета.

         Размер `0` означает отсутствие ограничений и аналогичен включенной опции **Без ограничения**.

      1. Выберите тип [доступа](../concepts/bucket.md#bucket-access) `С авторизацией`.
      1. Выберите [класс хранилища](../concepts/storage-class.md) по умолчанию.
      1. Нажмите **Создать бакет**.

{% endlist %}

### Создайте ключ шифрования в сервисе Key Management Service {#create-key}

{% list tabs group=instructions %}

- Консоль управления {#console}

  1. В [консоли управления](https://kz.console.yandex.cloud) перейдите в каталог `example-folder`.
  1. Перейдите в сервис **Key Management Service**.
  1. Нажмите **Создать ключ** и укажите:
     * **Имя** — `arcsight-kms`.
     * **Алгоритм шифрования** — `AES-256`.
     * Для остальных параметров оставьте значения по умолчанию.
  1. Нажмите **Создать**.

{% endlist %}

### Включите шифрование бакета {#backet-encoding}

{% list tabs group=instructions %}

- Консоль управления {#console}

  1. В [консоли управления](https://kz.console.yandex.cloud) перейдите в бакет, созданный ранее.
  1. На панели слева выберите **Безопасность**.
  1. Откройте вкладку **Шифрование**.
  1. В поле **Ключ KMS** выберите ключ `arcsight-kms`.
  1. Нажмите **Сохранить**.

{% endlist %}

### Создайте сервисные аккаунты {#create-sa}

Необходимо создать два аккаунта — отдельно для трейла и бакета.

Создайте сервисный аккаунт `sa-arcsight`:

{% list tabs group=instructions %}

- Консоль управления {#console}

  1. В [консоли управления](https://kz.console.yandex.cloud) перейдите в каталог `example-folder`.
  1. Перейдите в сервис **Identity and Access Management**.
  1. Нажмите кнопку **Создать сервисный аккаунт**.
  1. Введите имя сервисного аккаунта в соответствии с правилами именования:
  
       * длина — от 3 до 63 символов;
       * может содержать строчные буквы латинского алфавита, цифры и дефисы;
       * первый символ — буква, последний — не дефис.

       Например, `sa-arcsight`.
  
  1. Нажмите **Создать**.
  
{% endlist %}

Аналогично создайте сервисный аккаунт с именем `sa-arcsight-bucket`.

### Создайте статический ключ {#create-access-key}

Идентификатор ключа и секретный ключ понадобятся вам на этапе монтирования бакета.

{% list tabs group=instructions %}

- Консоль управления {#console}

  1. В [консоли управления](https://kz.console.yandex.cloud) перейдите в каталог `example-folder`.
  1. Перейдите в сервис **Identity and Access Management**.
  1. На панели слева выберите ![FaceRobot](../../_assets/console-icons/face-robot.svg) **Сервисные аккаунты**.
  1. В открывшемся списке выберите сервисный аккаунт `sa-arcsight-bucket`.
  1. Нажмите **Создать новый ключ** на верхней панели.
  1. Выберите **Создать статический ключ доступа**.
  1. Задайте описание ключа и нажмите **Создать**.
  1. Сохраните идентификатор и секретный ключ.

      {% note alert %}

      После закрытия диалога значение ключа будет недоступно.

      {% endnote %}

- CLI {#cli}

  1. Создайте ключ доступа для сервисного аккаунта `sa-arcsight-bucket`:

      ```bash
      yc iam access-key create --service-account-name sa-arcsight-bucket
      ```

      Результат:

      ```
      access_key:
        id: aje*******k2u
        service_account_id: aje*******usm
        created_at: "2022-09-22T14:37:51Z"
        key_id: 0n8*******0YQ
      secret: JyT*******zMP1
      ```

  1. Сохраните идентификатор `key_id` и секретный ключ `secret`. Получить значение ключа снова будет невозможно.

{% endlist %}

## Назначьте роли сервисным аккаунтам {#add-roles}

Назначьте сервисному аккаунту `sa-arcsight` роли `audit-trails.viewer`, `storage.uploader` и `kms.keys.encrypterDecrypter`:

{% list tabs group=instructions %}

- CLI {#cli}

  1. [Роль](../../audit-trails/security/index.md#roles) `audit-trails.viewer` на каталог:
     
      ```
      yc resource-manager folder add-access-binding \
      --role audit-trails.viewer \
      --id <идентификатор_каталога> \
      --service-account-id <идентификатор_сервисного_аккаунта>
      ```
      
      Где:
  
      * `--role` — назначаемая роль;
      * `--id` — идентификатор каталога `example-folder`;
      * `--service-account-id` — идентификатор сервисного аккаунта `sa-arcsight`.

      Подробнее о команде `yc resource-manager folder add-access-binding` смотрите в [справочнике CLI](../../cli/cli-ref/resource-manager/cli-ref/folder/add-access-binding.md).
  
  1. [Роль](../security/index.md#storage-uploader) `storage.uploader` на каталог с бакетом:
     
      ```
      yc resource-manager folder add-access-binding \
      --role storage.uploader \
      --id <идентификатор_каталога> \
      --service-account-id <идентификатор_сервисного_аккаунта>
      ```
  
      Где:
  
      * `--role` — назначаемая роль;
      * `--id` — идентификатор каталога `example-folder`;
      * `--service-account-id` — идентификатор сервисного аккаунта `sa-arcsight`.

  1. [Роль](../../kms/security/index.md#service) `kms.keys.encrypterDecrypter` на ключ шифрования `arcsight-kms`:
  
      ```
      yc kms symmetric-key add-access-binding \
      --role kms.keys.encrypterDecrypter \
      --id <идентификатор_ключа> \
      --service-account-id <идентификатор_сервисного_аккаунта>
      ```
  
      Где:
  
      * `--role` — назначаемая роль;
      * `--id` — идентификатор KMS-ключа `arcsight-kms`;
      * `--service-account-id` — идентификатор сервисного аккаунта `sa-arcsight`.

{% endlist %}

Назначьте сервисному аккаунту `sa-arcsight-bucket` роли `storage.viewer` и `kms.keys.encrypterDecrypter`:

{% list tabs group=instructions %}

- CLI {#cli}

  1. Роль `storage.viewer` на каталог:
     
      ```
      yc resource-manager folder add-access-binding \
      --id <идентификатор_каталога> \
      --role storage.viewer \
      --service-account-id <идентификатор_сервисного_аккаунта>
      ```

      Где:
  
      * `--id` — идентификатор каталога `example-folder`;
      * `--role` — назначаемая роль;
      * `--service-account-id` — идентификатор сервисного аккаунта `sa-arcsight-bucket`.
  
  1. Роль `kms.keys.encrypterDecrypter` на ключ шифрования `arcsight-kms`:
  
      ```
      yc kms symmetric-key add-access-binding \
      --role kms.keys.encrypterDecrypter \
      --id <идентификатор_ключа> \
      --service-account-id <идентификатор_сервисного_аккаунта>
      ```
  
      Где:
  
      * `--role` — назначаемая роль;
      * `--id` — идентификатор KMS-ключа `arcsight-kms`;
      * `--service-account-id` — идентификатор сервисного аккаунта `sa-arcsight-bucket`.
  
{% endlist %}

## Создайте трейл {#create-trail}

{% list tabs group=instructions %}

- Консоль управления {#console}

  1. В [консоли управления](https://kz.console.yandex.cloud) перейдите в каталог `example-folder`.
  1. Перейдите в сервис **Audit Trails**.
  1. Нажмите **Создать трейл** и укажите:

     * **Имя** — имя создаваемого трейла, например, `arcsight-trail`.
     * **Описание** — описание трейла, необязательный параметр.

  1. В блоке **Назначение** задайте параметры объекта назначения:

     * **Назначение** — `Object Storage`.
     * **Бакет** — имя бакета.
     * **Префикс объекта** — необязательный параметр, участвует в [полном имени](../../audit-trails/concepts/format.md#log-file-name) файла аудитного лога.
  
     {% note info %}
     
     Используйте [префикс](../concepts/object.md#key), если вы храните аудитные логи и сторонние данные в одном и том же бакете. Не используйте одинаковый префикс для логов и других объектов в бакете, так как в этом случае логи и сторонние объекты могут перезаписать друг друга.
     
     {% endnote %}

      * **Ключ шифрования** — укажите ключ шифрования `arcsight-kms`, которым [зашифрован](../concepts/encryption.md) бакет.
  
  1. В блоке **Сервисный аккаунт** выберите `sa-arcsight`.

  1. В блоке **Сбор событий c уровня конфигурации** задайте параметры сбора аудитных логов уровня конфигурации:

     * **Сбор событий** — выберите `Включено`.
     * **Ресурс** — выберите `Каталог`.
     * **Каталог** — не требует заполнения, содержит имя текущего каталога.

  1. В блоке **Сбор событий с уровня сервисов** в поле **Сбор событий** выберите `Выключено`.
  1. Нажмите **Создать**.

  {% note warning %}
  
  Решение будет удалять логи из бакета после экспорта в ArcSight. Если вам нужно хранить логи в бакете, создайте отдельные бакет и трейл.
  
  {% endnote %}

{% endlist %}

## Смонтируйте бакет {#mount-bucket}

Бакет монтируется на промежуточной ВМ, на нее же устанавливается ArcSight SmartConnector.
Чтобы смонтировать бакет, создайте файл со статическим ключом доступа сервисного аккаунта `sa-arcsight-bucket`.

1. На промежуточной ВМ создайте файл со статическим ключом доступа:

   ```bash
   echo <идентификатор_ключа_доступа>:<секретный_ключ_доступа> > ${HOME}/.passwd-s3fs
   chmod 600 ${HOME}/.passwd-s3fs
   ```

1. Установите [s3fs](https://github.com/s3fs-fuse/s3fs-fuse):

   ```bash
   sudo apt install s3fs
   ```

1. Создайте директорию, к которой будет монтироваться бакет, например, `mybucket` в домашней директории:

   ```bash
   sudo mkdir ${HOME}/mybucket
   ```

1. Смонтируйте бакет:

   ```bash
   s3fs <имя_бакета> ${HOME}/mybucket -o passwd_file=${HOME}/.passwd-s3fs -o url=https://storage.yandexcloud.kz -o use_path_request_style
   ```

1. Проверьте, что бакет смонтирован:

   ```bash
   ls ${HOME}/mybucket
   ```

## Установите и настройте ArcSight SmartConnector {#configure-arcsight}

{% note info %}

Для выполнения этого этапа руководства вам нужен дистрибутив ArcSight SmartConnector и доступ к экземпляру ArcSight.

{% endnote %}

1. На промежуточной ВМ [установите](https://www.microfocus.com/documentation/arcsight/arcsight-smartconnectors/AS_smartconn_install/) `ArcSight SmartConnector`:
    1. При установке выберите **ArcSight FlexConnector JSON Folder Follower** и укажите путь к папке `mybucket`.
    1. Укажите **JSON configuration filename prefix**: `yc`.
1. [Скачайте](https://github.com/yandex-cloud-examples/yc-export-auditlogs-to-arcsight/tree/main/arcsight_content) файлы `arcsight_content`.
1. Скопируйте файл `yc.jsonparser.properties` из папки `flex` в папку с адресом `<папка_установки_агента>/current/user/agent/flexagent`.
1. Скопируйте файл `map.0.properties` из папки `flex` в папку с адресом `<папка_установки_агента>/current/user/agent/map`.
1. Отредактируйте файл `<папка_установки_агента>/current/user/agent/agent.properties`:

    ```bash
    agents[0].mode=DeleteFile
    agents[0].proccessfoldersrecursively=true
    ```

1. Запустите коннектор и убедитесь, что события поступают в ArcSight:

   ![image](../../_assets/audit-trails/tutorials/arcsight-events.png)

## Как удалить созданные ресурсы {#clear-out}

Некоторые ресурсы платные. Чтобы за них не списывалась плата, удалите ресурсы, которые вы больше не будете использовать:

1. [Удалите](../operations/buckets/delete.md) бакет Object Storage.
1. [Удалите](../../kms/operations/key.md#delete) ключ Key Management Service.
1. [Удалите](../../compute/operations/vm-control/vm-delete.md) промежуточную ВМ, если вы создали ее в Compute Cloud.