Yandex Cloud
Поиск
Связаться с намиПодключиться
  • Документация
  • Блог
  • Все сервисы
  • Статус работы сервисов
    • Популярные
    • Инфраструктура и сеть
    • Платформа данных
    • Контейнеры
    • Инструменты разработчика
    • Бессерверные вычисления
    • Безопасность
    • Мониторинг и управление ресурсами
    • Машинное обучение
    • Бизнес-инструменты
  • Все решения
    • По отраслям
    • По типу задач
    • Экономика платформы
    • Безопасность
    • Техническая поддержка
    • Каталог партнёров
    • Обучение и сертификация
    • Облако для стартапов
    • Облако для крупного бизнеса
    • Центр технологий для общества
    • Облако для интеграторов
    • Поддержка IT-бизнеса
    • Облако для фрилансеров
    • Обучение и сертификация
    • Блог
    • Документация
    • Контент-программа
    • Мероприятия и вебинары
    • Контакты, чаты и сообщества
    • Идеи
    • Истории успеха
    • Тарифы Yandex Cloud
    • Промоакции и free tier
    • Правила тарификации
  • Документация
  • Блог
Проект Яндекса
© 2025 ООО «Яндекс.Облако»
Практические руководства
    • Все руководства
    • Разграничение прав доступа для групп пользователей
    • Создание L7-балансировщика с профилем безопасности Smart Web Security через Ingress-контроллер Application Load Balancer
    • Централизованная публикация в интернете и защита приложений от DDoS
    • Передача логов с виртуальной машины в Cloud Logging
    • Запись логов балансировщика в PostgreSQL
    • Безопасное хранение паролей для GitLab CI в виде секретов Yandex Lockbox
    • Сервисный аккаунт с профилем OS Login для управления ВМ с помощью Ansible
      • Обзор
      • Консоль управления, CLI, API
      • Terraform
    • Передача логов с Container Optimized Image в Cloud Logging
    • Добавление HTML-страницы для работы SmartCaptcha
    • Создание L7-балансировщика с профилем безопасности
    • Настройка алертов в Monitoring
    • Загрузка аудитных логов в MaxPatrol SIEM
    • Загрузка аудитных логов в SIEM Splunk
    • Загрузка аудитных логов в SIEM ArcSight
    • Шифрование для бакета Object Storage на стороне сервера
    • Шифрование секретов в HashiCorp Terraform
    • Управление ключами KMS с HashiCorp Terraform
    • Auto Unseal в HashiCorp Vault
    • Передача логов кластера Managed Service for Greenplum® в Yandex Cloud Logging

В этой статье:

  • Подготовьте облако к работе
  • Необходимые платные ресурсы
  • Создайте инфраструктуру
  • Смонтируйте бакет на сервере
  • Настройте коллектор KUMA
  • Как удалить созданные ресурсы
  1. Безопасность
  2. Загрузка аудитных логов в SIEM KUMA
  3. Terraform

Загрузка аудитных логов Yandex Audit Trails в SIEM KUMA с помощью Terraform

Статья создана
Yandex Cloud
Улучшена
kvendingoldo
Обновлена 10 января 2025 г.
  • Подготовьте облако к работе
    • Необходимые платные ресурсы
  • Создайте инфраструктуру
  • Смонтируйте бакет на сервере
  • Настройте коллектор KUMA
  • Как удалить созданные ресурсы

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

  1. Подготовьте облако к работе.
  2. Создайте инфраструктуру.
  3. Смонтируйте бакет на сервере.
  4. Настройте коллектор KUMA.

Если созданные ресурсы вам больше не нужны, удалите их.

Подготовьте облако к работеПодготовьте облако к работе

Зарегистрируйтесь в Yandex Cloud и создайте платежный аккаунт:

  1. Перейдите в консоль управления, затем войдите в Yandex Cloud или зарегистрируйтесь.
  2. На странице Yandex Cloud Billing убедитесь, что у вас подключен платежный аккаунт, и он находится в статусе ACTIVE или TRIAL_ACTIVE. Если платежного аккаунта нет, создайте его и привяжите к нему облако.

Если у вас есть активный платежный аккаунт, вы можете создать или выбрать каталог, в котором будет работать ваша инфраструктура, на странице облака.

Подробнее об облаках и каталогах.

Необходимые платные ресурсыНеобходимые платные ресурсы

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

  • плата за хранение данных, операции с данными, а также исходящий трафик (см. тарифы Yandex Object Storage);
  • плата за использование симметричного ключа шифрования и выполнение криптографических операций (см. тарифы Yandex Key Management Service);
  • (опционально) плата за постоянно запущенную виртуальную машину (см. тарифы Yandex Compute Cloud);
  • (опционально) плата за использование динамического или статического внешнего IP-адреса (см. тарифы Yandex Virtual Private Cloud).

Кроме этого, для прохождения руководства вы должны иметь лицензию на использование KUMA (не поставляется Yandex Cloud).

Создайте инфраструктуруСоздайте инфраструктуру

Terraform позволяет быстро создать облачную инфраструктуру в Yandex Cloud и управлять ею с помощью файлов конфигураций. В файлах конфигураций хранится описание инфраструктуры на языке HCL (HashiCorp Configuration Language). При изменении файлов конфигураций Terraform автоматически определяет, какая часть вашей конфигурации уже развернута, что следует добавить или удалить.

Terraform распространяется под лицензией Business Source License, а провайдер Yandex Cloud для Terraform — под лицензией MPL-2.0.

Подробную информацию о ресурсах провайдера смотрите в документации на сайте Terraform или в зеркале.

Чтобы создайть инфраструктуру с помощью Terraform:

  1. Установите Terraform, получите данные для аутентификации и укажите источник для установки провайдера Yandex Cloud (раздел Настройте провайдер, шаг 1).

  2. Подготовьте файл с описанием инфраструктуры:

    Готовая конфигурация
    Вручную
    1. Склонируйте репозиторий с конфигурационными файлами:

      git clone https://github.com/yandex-cloud-examples/yc-audit-trails-kuma-integration
      
    2. Перейдите в директорию с репозиторием. В ней должны появиться файлы:

      • at-events-to-kuma.tf — конфигурация создаваемой инфраструктуры.
      • at-events-to-kuma.auto.tfvars — пользовательские данные.
    1. Создайте папку для файла с описанием инфраструктуры.

    2. Создайте в папке конфигурационный файл at-events-to-kuma.tf:

      at-events-to-kuma.tf
      # Настройка провайдера
      
      terraform {
        required_providers {
          yandex    = {
            source  = "yandex-cloud/yandex"
            version = ">= 0.47.0"
          }
        }
      }
      
      provider "yandex" {
        folder_id = var.folder_id
      }
      
      # Объявление переменных для пользовательских параметров
      
      variable "folder_id" {
        type = string
      }
      
      variable "vm_user" {
        type = string
      }
      
      variable "ssh_key_path" {
        type = string
      }
      
      variable "bucket_name" {
        type = string
      }
      
      variable "object_prefix" {
        type = string
      }
      
      # Добавление прочих переменных
      
      locals {
        sa_bucket_name = "kuma-bucket-sa"
        sa_trail_name  = "kuma-trail-sa"
        sym_key_name   = "kuma-key"
        trail_name     = "kuma-trail"
        zone           = "ru-central1-b"
        network_name   = "kuma-network"
        subnet_name    = "kuma-network-ru-central1-b"
        vm_name        = "kuma-server"
        image_id       = "fd8ulbhv5dpakf3io1mf"
      }
      
      # Создание сервисных аккаунтов
      
      resource "yandex_iam_service_account" "sa-bucket" {
        name        = local.sa_bucket_name
        folder_id   = "${var.folder_id}"
      }
      
      resource "yandex_iam_service_account" "sa-trail" {
        name        = local.sa_trail_name
        folder_id   = "${var.folder_id}"
      }
      
      # Создание статического ключа доступа
      
      resource "yandex_iam_service_account_static_access_key" "sa-bucket-static-key" {
        service_account_id = yandex_iam_service_account.sa-bucket.id
      }
      
      output "access_key" {
        value = yandex_iam_service_account_static_access_key.sa-bucket-static-key.access_key
        sensitive = true
      }
      
      output "secret_key" {
        value = yandex_iam_service_account_static_access_key.sa-bucket-static-key.secret_key
        sensitive = true
      }
      
      # Создание симметричного ключа шифрования
      
      resource "yandex_kms_symmetric_key" "sym_key" {
        name              = local.sym_key_name
        default_algorithm = "AES_256"
      }
      
      # Назначение ролей сервисным аккаунтам
      
      resource "yandex_resourcemanager_folder_iam_member" "sa-bucket-storage-viewer" {
        folder_id   = "${var.folder_id}"
        role        = "storage.admin"
        member      = "serviceAccount:${yandex_iam_service_account.sa-bucket.id}"
      }
      
      resource "yandex_resourcemanager_folder_iam_member" "sa-trail-storage-uploader" {
        folder_id   = "${var.folder_id}"
        role        = "storage.uploader"
        member      = "serviceAccount:${yandex_iam_service_account.sa-trail.id}"
      }
      
      resource "yandex_resourcemanager_folder_iam_member" "sa-trail-at-viewer" {
        folder_id   = "${var.folder_id}"
        role        = "audit-trails.admin"
        member      = "serviceAccount:${yandex_iam_service_account.sa-trail.id}"
      }
      
      resource "yandex_kms_symmetric_key_iam_binding" "encrypter-decrypter" {
        symmetric_key_id = "${yandex_kms_symmetric_key.sym_key.id}"
        role             = "kms.keys.encrypterDecrypter"
        members          = [
          "serviceAccount:${yandex_iam_service_account.sa-bucket.id}","serviceAccount:${yandex_iam_service_account.sa-trail.id}"
        ]
      }
      
      # Создание бакета
      
      resource "yandex_storage_bucket" "kuma-bucket" {
        folder_id = "${var.folder_id}"
        bucket                = "${var.bucket_name}"
        default_storage_class = "standard"
        anonymous_access_flags {
          read        = false
          list        = false
          config_read = false
        }
      
        server_side_encryption_configuration {
          rule {
            apply_server_side_encryption_by_default {
              kms_master_key_id = "${yandex_kms_symmetric_key.sym_key.id}"
              sse_algorithm     = "aws:kms"
            }
          }
        }
      }
      
      # Создание трейла
      
      resource "yandex_audit_trails_trail" "kuma-trail" {
        depends_on         = [yandex_storage_bucket.kuma-bucket, yandex_resourcemanager_folder_iam_member.sa-trail-at-viewer, yandex_resourcemanager_folder_iam_member.sa-trail-storage-uploader]
        name               = local.trail_name
        folder_id          = "${var.folder_id}"
        service_account_id = "${yandex_iam_service_account.sa-trail.id}"
        storage_destination {
          bucket_name   = "${var.bucket_name}"
          object_prefix = "${var.object_prefix}"
        }
        filtering_policy {
          management_events_filter {
            resource_scope {
              resource_id   = "${var.folder_id}"
              resource_type = "resource-manager.folder"
            }
          }
        }
      }
      
      # Создание облачной сети и подсети
      
      resource "yandex_vpc_network" "kuma-network" {
        name = local.network_name
      }
      
      resource "yandex_vpc_subnet" "kuma-network-subnet-b" {
        name           = local.subnet_name
        zone           = local.zone
        v4_cidr_blocks = ["10.1.0.0/24"]
        network_id     = yandex_vpc_network.kuma-network.id
      }
      
      # Создание ВМ
      
      resource "yandex_compute_disk" "boot-disk" {
        name     = "bootvmdisk"
        type     = "network-hdd"
        zone     = local.zone
        size     = "20"
        image_id = local.image_id
      }
      
      resource "yandex_compute_instance" "kuma-vm" {
        name               = local.vm_name
        platform_id        = "standard-v3"
        zone               = local.zone
      
        resources {
          cores         = 2
          memory        = 2
          core_fraction = 20
        }
      
        boot_disk {
          disk_id = yandex_compute_disk.boot-disk.id
        }
      
        network_interface {
          subnet_id          = yandex_vpc_subnet.kuma-network-subnet-b.id
          nat                = true
        }
      
        metadata = {
          user-data = "#cloud-config\nusers:\n  - name: ${var.vm_user}\n    groups: sudo\n    shell: /bin/bash\n    sudo: 'ALL=(ALL) NOPASSWD:ALL'\n    ssh_authorized_keys:\n      - ${file("${var.ssh_key_path}")}"
        }
      }
      
    3. Создайте в папке файл с пользовательскими данными at-events-to-kuma.auto.tfvars:

      at-events-to-kuma.auto.tfvars
      folder_id          = "<идентификатор_каталога>"
      vm_user            = "<имя_пользователя_ВМ>"
      ssh_key_path       = "<путь_к_публичному_SSH-ключу>"
      bucket_name        = "<имя_бакета>"
      object_prefix      = "<префикс>"
      

    Более подробную информацию о параметрах используемых ресурсов в Terraform см. в документации провайдера:

    • Сервисный аккаунт — yandex_iam_service_account
    • Статический ключ доступа — yandex_iam_service_account_static_access_key
    • Симметричный ключ шифрования — yandex_kms_symmetric_key
    • Роль — yandex_resourcemanager_folder_iam_member
    • Бакет — yandex_storage_bucket
    • Трейл — yandex_audit_trails_trail
    • Сеть — yandex_vpc_network
    • Подсеть — yandex_vpc_subnet
    • Диск — yandex_compute_disk
    • Виртуальная машина — yandex_compute_instance
  3. В файле at-events-to-kuma.auto.tfvars задайте пользовательские параметры:

    • folder_id — идентификатор каталога.

    • vm_user — имя пользователя, который будет создан на ВМ, например yc-user.

      Внимание

      Не используйте логин root или другие имена, зарезервированные операционной системой. Для выполнения операций, требующих прав суперпользователя, используйте команду sudo.

    • ssh_key_path — путь к файлу с открытым SSH-ключом и его имя, например: ~/.ssh/id_ed25519.pub. Пару SSH-ключей для подключения к ВМ по SSH необходимо создать самостоятельно.

    • bucket_name — имя бакета, в который будут загружаться аудитные логи. Например my-audit-logs-for-kuma.

      Примечание

      Имя бакета должно быть уникальным для всего Object Storage. Нельзя создать два бакета с одинаковыми именами даже в разных каталогах разных облаков.

    • object_prefix — префикс, который будет добавлен к именам объектов с аудитными логами в бакете. Например: /. Префикс участвует в полном имени файла аудитного лога.

  4. Создайте ресурсы:

    1. В терминале перейдите в папку, где вы отредактировали конфигурационный файл.

    2. Проверьте корректность конфигурационного файла с помощью команды:

      terraform validate
      

      Если конфигурация является корректной, появится сообщение:

      Success! The configuration is valid.
      
    3. Выполните команду:

      terraform plan
      

      В терминале будет выведен список ресурсов с параметрами. На этом этапе изменения не будут внесены. Если в конфигурации есть ошибки, Terraform на них укажет.

    4. Примените изменения конфигурации:

      terraform apply
      
    5. Подтвердите изменения: введите в терминале слово yes и нажмите Enter.

  5. Получите идентификатор ключа и секретный ключ, которые понадобятся позднее при монтировании бакета на сервере:

    terraform output access_key
    terraform output secret_key
    

    Результат:

    "YCAJE0tO1Q4zO7bW4********"
    "YCNpH34y9fzL6xEap3wkuxYfkc1PTNvr********"
    

После создания инфраструктуры cмонтируйте бакет на сервере и настройте коллектор KUMA.

Смонтируйте бакет на сервереСмонтируйте бакет на сервере

Это действие выполняется на сервере, на котором будет установлен коллектор KUMA. В качестве сервера вы можете использовать виртуальную машину в Compute Cloud или свое оборудование. В данном руководстве используется ВМ Compute Cloud, созданная ранее.

  1. Подключитесь к серверу по SSH.

  2. Создайте нового пользователя kuma:

    sudo useradd kuma
    
  3. Создайте домашнюю директорию пользователя kuma:

    sudo mkdir /home/kuma
    
  4. Создайте файл со статическим ключом доступа и выдайте пользователю kuma права на него:

    sudo bash -c 'echo <идентификатор_ключа_доступа>:<секретный_ключ_доступа> > /home/kuma/.passwd-s3fs'
    sudo chmod 600 /home/kuma/.passwd-s3fs
    sudo chown -R kuma:kuma /home/kuma
    

    Где <идентификатор_ключа_доступа> и <секретный_ключ_доступа> — сохраненные ранее значения статического ключа доступа сервисного аккаунта kuma-bucket-sa.

  5. Установите пакет s3fs:

    sudo apt install s3fs
    
  6. Создайте директорию, которая будет служить точкой монтирования для бакета, и выдайте пользователю kuma права на эту директорию:

    sudo mkdir /var/log/yandex-cloud/
    sudo chown kuma:kuma /var/log/yandex-cloud/
    
  7. Смонтируйте созданный ранее бакет, указав его имя:

    sudo s3fs <имя_бакета> /var/log/yandex-cloud \
      -o passwd_file=/home/kuma/.passwd-s3fs \
      -o url=https://storage.yandexcloud.net \
      -o use_path_request_style \
      -o uid=$(id -u kuma) \
      -o gid=$(id -g kuma)
    

    Вы можете настроить автоматическое монтирование бакета при запуске операционной системы, для этого откройте файл /etc/fstab (команда sudo nano /etc/fstab) и добавьте в него строку:

    s3fs#<имя_бакета> /var/log/yandex-cloud fuse _netdev,uid=<kuma_uid>,gid=<kuma_gid>,use_path_request_style,url=https://storage.yandexcloud.net,passwd_file=/home/kuma/.passwd-s3fs 0 0
    

    Где:

    • <имя_бакета> — имя созданного ранее бакета, например: my-audit-logs-for-kuma.

    • <kuma_uid> — идентификатор пользователя kuma в операционной системе ВМ.

    • <kuma_gid> — идентификатор группы пользователей kuma в операционной системе ВМ.

      Чтобы узнать значения <kuma_uid> и <kuma_gid>, в терминале выполните команду id kuma.

  8. Убедитесь, что бакет смонтирован:

    sudo ls /var/log/yandex-cloud/
    

    Если все настроено верно, команда вернет текущее содержимое бакета с аудитными событиями.

Настройка передачи событий Yandex Cloud завершена. События будут располагаться в следующих директориях в JSON-файлах:

/var/log/yandex-cloud/{audit_trail_id}/{year}/{month}/{day}/*.json

Настройте коллектор KUMAНастройте коллектор KUMA

На этом шаге вам понадобятся файлы дистрибутива и лицензии, входящие в комплект поставки KUMA. Используйте их, чтобы установить и настроить коллектор в сетевой инфраструктуре KUMA. Подробнее см. в инструкции.

После успешного завершения настройки аудитные события начнут поставляться в KUMA. Веб-интерфейс KUMA позволяет выполнять поиск связанных событий.

Как удалить созданные ресурсыКак удалить созданные ресурсы

Чтобы перестать платить за созданные ресурсы:

  1. Откройте конфигурационный файл at-events-to-kuma.tf и удалите описание создаваемой инфраструктуры из файла.

  2. Удалите все объекты из созданного ранее бакета. Если этого не сделать, бакет и часть инфраструктуры не будут удалены, а команда terraform apply завершится ошибкой.

  3. Примените изменения:

    1. В терминале перейдите в папку, где вы отредактировали конфигурационный файл.

    2. Проверьте корректность конфигурационного файла с помощью команды:

      terraform validate
      

      Если конфигурация является корректной, появится сообщение:

      Success! The configuration is valid.
      
    3. Выполните команду:

      terraform plan
      

      В терминале будет выведен список ресурсов с параметрами. На этом этапе изменения не будут внесены. Если в конфигурации есть ошибки, Terraform на них укажет.

    4. Примените изменения конфигурации:

      terraform apply
      
    5. Подтвердите изменения: введите в терминале слово yes и нажмите Enter.

См. такжеСм. также

  • Загрузка аудитных логов Yandex Audit Trails в SIEM KUMA с помощью консоли управления, CLI или API

Была ли статья полезна?

Предыдущая
Консоль управления, CLI, API
Следующая
Передача логов с Container Optimized Image в Cloud Logging
Проект Яндекса
© 2025 ООО «Яндекс.Облако»