Yandex Cloud
  • Сервисы
  • Решения
  • Почему Yandex Cloud
  • Сообщество
  • Тарифы
  • Документация
  • Связаться с нами
Подключиться
Language / Region
Проект Яндекса
© 2023 ООО «Яндекс.Облако»
Yandex Audit Trails
  • Начало работы
  • Пошаговые инструкции
    • Все инструкции
    • Загрузка аудитных логов в Cloud Logging
      • Организация
      • Облако
      • Каталог
    • Загрузка аудитных логов в Data Streams
      • Организация
      • Облако
      • Каталог
    • Загрузка аудитных логов в Object Storage
      • Организация
      • Облако
      • Каталог
  • Практические руководства
    • Поиск событий Yandex Cloud в Yandex Query
    • Поиск событий Yandex Cloud в Object Storage
    • Поиск событий Yandex Cloud в Cloud Logging
    • Настройка алертов в Yandex Monitoring
    • Настройка реагирования в Cloud Functions
    • Загрузка аудитных логов в Yandex Managed Service for ClickHouse и визуализация данных в Yandex DataLens
    • Экспорт аудитных логов в SIEM
      • Загрузка аудитных логов в Yandex Managed Service for Elasticsearch
      • Загрузка аудитных логов в MaxPatrol SIEM
      • Загрузка аудитных логов в SIEM Splunk
      • Загрузка аудитных логов в SIEM ArcSight
  • Концепции
    • Обзор
    • Трейл
    • Аудитный лог событий
    • Справочник событий
    • Экспорт в SIEM
    • Квоты и лимиты
    • Метрики
  • Управление доступом
  • Правила тарификации
  1. Практические руководства
  2. Загрузка аудитных логов в Yandex Managed Service for ClickHouse и визуализация данных в Yandex DataLens

Загрузка аудитных логов в Yandex Managed Service for ClickHouse и визуализация данных в Yandex DataLens

Статья создана
Yandex Cloud
  • Перед началом работы
    • Необходимые платные ресурсы
  • Подготовьте окружение
    • Создайте сервисный аккаунт и назначьте ему роли
    • Создайте кластер ClickHouse
    • Создайте поток данных
  • Создайте трейл
  • Создайте эндпоинт-источник для потока данных Data Streams
  • Создайте эндпоинт-приемник для БД ClickHouse
  • Создайте трансфер
  • Визуализируйте данные в Yandex DataLens
    • Создайте подключение
    • Создайте датасет
    • Создайте линейчатую диаграмму
    • Создайте круговую диаграмму
    • Создайте дашборд и добавьте на него чарты
  • Как удалить созданные ресурсы

Загрузите аудитные логи каталога в Yandex Managed Service for ClickHouse и проанализируйте использование ресурсов в Yandex DataLens.

  1. Подготовьте облако к работе.
  2. Подготовьте окружение.
  3. Создайте трейл.
  4. Создайте эндпоинт-источник для потока данных Data Streams.
  5. Создайте эндпоинт-приемник для БД ClickHouse.
  6. Создайте трансфер.
  7. Визуализируйте данные в Yandex DataLens.

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

Перед началом работы

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

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

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

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

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

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

  • плата за использование потока данных (см. тарифы Data Streams);
  • плата за постоянно запущенный кластер Managed Service for ClickHouse (см. тарифы Managed Service for ClickHouse).

Подготовьте окружение

Создайте сервисный аккаунт и назначьте ему роли

Консоль управления
CLI
Terraform
API
  1. В консоли управления выберите каталог, в котором хотите создать сервисный аккаунт.
  2. Выберите вкладку Сервисные аккаунты.
  3. Нажмите кнопку Создать сервисный аккаунт.
  4. Введите имя сервисного аккаунта: sa-trail-logs.
  5. Нажмите Добавить роль и выберите роли audit-trails.viewer и yds.editor.
  6. Нажмите кнопку Создать.

Если у вас еще нет интерфейса командной строки Yandex Cloud, установите и инициализируйте его.

По умолчанию используется каталог, указанный в профиле CLI. Вы можете указать другой каталог с помощью параметра --folder-name или --folder-id.

  1. Создайте сервисный аккаунт с именем sa-trail-logs:

    yc iam service-account create --name sa-trail-logs
    

    Результат:

    id: aje6o61*****h6g9a33s
    folder_id: b1gvmob*****aplct532
    created_at: "2022-07-25T18:01:25Z"
    name: sa-trail-logs
    

    Подробнее о команде yc iam service-account create см. в справочнике CLI.

  2. Назначьте сервисному аккаунту роль audit-trails.viewer:

    yc resource-manager folder add-access-binding <имя_каталога> \
      --role audit-trails.viewer \
      --subject serviceAccount:<идентификатор_сервисного_аккаунта_sa-trail-logs>
    

    Подробнее о команде yc resource-manager folder add-access-binding см. в справочнике CLI.

  3. Назначьте сервисному аккаунту роль yds.editor:

    yc resource-manager folder add-access-binding <имя_каталога> \
      --role yds.editor \
      --subject serviceAccount:<идентификатор_сервисного_аккаунта_sa-trail-logs>
    

Если у вас ещё нет Terraform, установите его и настройте провайдер Yandex Cloud.

  1. Опишите в конфигурационном файле параметры сервисного аккаунта:

    resource "yandex_iam_service_account" "sa" {
      name = "sa-trail-logs"
    }
    
    resource "yandex_resourcemanager_folder_iam_binding" "sa-role-audit-viewer" {
      folder_id   = "<идентификатор_каталога>"
      role        = "audit-trails.viewer"
      members     = [
        "serviceAccount:<идентификатор_сервисного_аккаунта_sa-trail-logs>",
      ]
    }
    
    resource "yandex_resourcemanager_folder_iam_binding" "sa-role-yds-editor" {
      folder_id   = "<идентификатор_каталога>"
      role        = "yds.editor"
      members     = [
        "serviceAccount:<идентификатор_сервисного_аккаунта_sa-trail-logs>",
      ]
    }
    

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

  2. Проверьте корректность конфигурационных файлов.

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

    2. Выполните проверку с помощью команды:

      terraform plan
      

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

  3. Разверните облачные ресурсы.

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

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

  1. Создайте сервисный аккаунт с помощью метода create для ресурса ServiceAccount.

  2. Узнайте идентификатор сервисного аккаунта:

    export FOLDER_ID=<идентификатор_каталога>
    export IAM_TOKEN=<iam_токен>
    curl -H "Authorization: Bearer ${IAM_TOKEN}" \
      "https://iam.api.cloud.yandex.net/iam/v1/serviceAccounts?folderId=${FOLDER_ID}"
    

    Результат:

    {
     "serviceAccounts": [
      {
       "id": "aje6o61*****h6g9a33s",
       "folderId": "b1gvmob*****aplct532",
       "createdAt": "2022-07-25T18:01:25Z",
       "name": "sa-trail-logs",
      }
     ]
    }
    
  3. Сформируйте тело запроса в файле body.json. В свойстве action укажите ADD, а в свойстве subject — тип serviceAccount и идентификатор сервисного аккаунта sa-trail-logs:

    body.json:

    {
     "accessBindingDeltas": [
      {
       "action": "ADD",
       "accessBinding": {
         "roleId": "audit-trails.viewer",
         "subject": {
           "id": "<идентификатор_сервисного_аккаунта_sa-trail-logs>",
           "type": "serviceAccount"
           }
         }
       }
       {
        "action": "ADD",
        "accessBinding": {
          "roleId": "yds.writer",
          "subject": {
            "id": "<идентификатор_сервисного_аккаунта_sa-trail-logs>",
            "type": "serviceAccount"
            }
          }
       }
     ]
    }
    
  4. Назначьте роли сервисному аккаунту:

    export FOLDER_ID=<идентификатор_каталога>
    export IAM_TOKEN=<iam_токен>
    curl -X POST \
      -H "Content-Type: application/json" \
      -H "Authorization: Bearer ${IAM_TOKEN}" \
      -d '@body.json' \
      "https://resource-manager.api.cloud.yandex.net/resource-manager/v1/folders/${FOLDER_ID}:updateAccessBindings"
    

Создайте кластер ClickHouse

Консоль управления
CLI
Terraform
API
  1. На странице каталога в консоли управления нажмите кнопку Создать ресурс и выберите пункт Кластер ClickHouse.

  2. Укажите настройки кластера ClickHouse:

    1. В блоке Базовые параметры укажите имя кластера trail-logs.

    2. В блоке Класс хоста выберите тип виртуальной машины burstable и тип хоста b2.nano.

    3. В блоке База данных укажите имя БД trail_data, имя пользователя user и пароль. Запомните имя БД.

    4. В блоке Хосты нажмите значок . Включите опцию Публичный доступ и нажмите кнопку Сохранить.

    5. В блоке Дополнительные настройки включите опции:

      • Доступ из DataLens.
      • Доступ из консоли управления.
      • Доступ из Data Transfer.
  3. После всех настроек нажмите кнопку Создать кластер.

  1. Проверьте, есть ли в каталоге подсети для хостов кластера:

    yc vpc subnet list
    

    Если ни одной подсети в каталоге нет, создайте нужные подсети в сервисе VPC.

  2. Укажите параметры кластера в команде создания:

    yc managed-clickhouse cluster create \
      --name trail-logs \
      --environment production \
      --network-name <имя_сети> \
      --host type=clickhouse,zone-id=<зона_доступности>,subnet-id=<идентификатор_подсети> \
      --clickhouse-resource-preset b2.nano \
      --clickhouse-disk-type network-hdd \
      --clickhouse-disk-size 10 \
      --user name=user,password=<пароль_пользователя> \
      --database name=trail_data \
      --datalens-access=true \
      --datatransfer-access=true \
      --websql-access=true
    

    Подробнее о команде yc managed-clickhouse cluster create см. в справочнике CLI.

  1. Добавьте в конфигурационный файл описание кластера и его хостов:

    resource "yandex_mdb_clickhouse_cluster" "trail-logs" {
      name                = "trail-logs"
      environment         = "PRODUCTION"
      network_id          = yandex_vpc_network.<имя_сети_в_Terraform>.id
    
      clickhouse {
        resources {
          resource_preset_id = "b2.nano"
          disk_type_id       = "network-hdd"
          disk_size          = 10
        }
      }
    
      database {
        name = "trail_data"
      }
    
      user {
        name     = "user"
        password = "<пароль>"
        permission {
          database_name = "trail_data"
        }
      }
    
      host {
        type      = "CLICKHOUSE"
        zone      = "<зона_доступности>"
        subnet_id = yandex_vpc_subnet.<имя_подсети_в_Terraform>.id
      }
    
      access {
        datalens     = true
        datatransfer = true
      }
    }
    

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

  2. Проверьте корректность конфигурационных файлов.

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

    2. Выполните проверку с помощью команды:

      terraform plan
      

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

  3. Разверните облачные ресурсы.

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

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

Используйте метод REST API create.

Создайте поток данных

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

Консоль управления
  1. На странице каталога в консоли управления нажмите кнопку Создать ресурс и выберите пункт Data Streams.
  2. В поле База данных нажмите Создать новую. Откроется страница создания новой базы данных YDB.
  3. Введите Имя базы данных: stream-db.
  4. В поле Тип базы данных выберите Serverless.
  5. Нажмите кнопку Сохранить базу данных.
  6. Вернитесь на страницу создания потока. Нажмите кнопку Обновить и выберите из списка созданную базу данных.
  7. Введите имя потока данных: trail-logs-stream.
  8. Нажмите кнопку Создать.

Дождитесь запуска потока данных. Когда поток станет готов к использованию, его статус изменится с CREATING на ACTIVE.

Создайте трейл

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

Консоль управления
  1. На странице каталога в консоли управления нажмите кнопку Создать ресурс и выберите пункт Audit trail.

  2. Введите имя создаваемого трейла: folder-trail.

  3. В блоке Фильтр задайте параметры области сбора аудитных логов:

    • Ресурс — выберите Каталог.
    • Каталог — не требует заполнения (содержит имя каталога, в котором будет находиться трейл).
  4. В блоке Назначение задайте параметры объекта назначения:

    • Назначение — Data Streams.
    • Поток данных — выберите поток данных trail-logs-stream.
  5. В блоке Сервисный аккаунт выберите сервисный аккаунт sa-trail-logs.

  6. Нажмите кнопку Создать.

Создайте эндпоинт-источник для потока данных Data Streams

Для создания трансфера нужно указать эндпоинт-источник, ведущий на поток Data Streams.

Консоль управления
  1. Перейдите на страницу каталога и выберите сервис Data Transfer.

  2. На панели слева выберите Эндпоинты.

  3. Нажмите кнопку Создать эндпоинт.

  4. В поле Направление выберите Источник.

  5. Укажите имя эндпоинта: source-logs-stream.

  6. В поле Тип базы данных выберите Yandex Data Streams.

  7. Настройте параметры эндпоинта:

    • База данных — выберите базу данных, зарегистрированную для потока trail-logs-stream.
    • Поток — trail-logs-stream.
    • Сервисный аккаунт — sa-trail-logs.
  8. Настройте правила конвертации:

    • Формат данных — JSON.

    • Схема данных — Список полей.

      Укажите список полей как в таблице ниже:

      Name Type Key Required Path
      event_id STRING - - event_id
      event_source STRING - - event_source
      event_type STRING - - event_type
      event_time DATETIME - - event_time
      authenticated ANY - - authentication.authenticated
      subject_type STRING - - authentication.subject_type
      subject_id STRING - - authentication.subject_id
      subject_name STRING - - authentication.subject_name
      authorized ANY - - authorization.authorized
      resource_metadata ANY - - resource_metadata
      remote_address STRING - - request_metadata.remote_address
      user_agent STRING - - request_metadata.user_agent
      request_id STRING - - request_metadata.request_id
      event_status STRING - - event_status
      details ANY - - details
    • Включите опцию Добавить неразмеченные столбцы.

  9. Нажмите кнопку Создать.

Создайте эндпоинт-приемник для БД ClickHouse

Для создания трансфера нужно указать эндпоинт-приемник с настройками БД ClickHouse.

Консоль управления
  1. Перейдите на страницу каталога и выберите сервис Data Transfer.

  2. На панели слева выберите Эндпоинты.

  3. Нажмите кнопку Создать эндпоинт.

  4. В поле Направление выберите Приемник.

  5. Укажите имя эндпоинта: target-logs-ch.

  6. В поле Тип базы данных выберите ClickHouse.

  7. В блоке Параметры эндпоинта укажите:

    1. Тип подключения — Кластер MDB. Выберите кластер trail-logs.
    2. Пользователь — user.
    3. Пароль — укажите пароль пользователя БД.
    4. База данных — trail_data
  8. Нажмите кнопку Создать.

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

С помощью трансфера будет выполняться перенос данных между сервисом-источником (потоком данных) и сервисом-приемником (БД ClickHouse).

Консоль управления
CLI
Terraform
  1. Перейдите на страницу каталога и выберите сервис Yandex Data Transfer.
  2. На панели слева выберите Трансферы.
  3. Нажмите кнопку Создать трансфер.
  4. Укажите имя трансфера: logs-transfer.
  5. Выберите эндпоинт для источника: source-logs-stream.
  6. Выберите эндпоинт для приемника: target-logs-ch.
  7. Нажмите кнопку Создать.
  8. Нажмите значок рядом с именем трансфера и выберите пункт Активировать.
  9. Дождитесь, когда трансфер перейдет в статус Реплицируется.

Создайте трансфер с именем logs-transfer:

yc datatransfer transfer create --name logs-transfer
  --source-id <идентификатор_эндпоинта-источника_source-logs-stream>
  --target-id <идентификатор_эндпоинта-приемника_target-logs-ch>
  --type increment-only

Подробнее о команде yc datatransfer transfer create см. в справочнике CLI.

  1. Добавьте в конфигурационный файл описание трансфера.

    resource "yandex_datatransfer_transfer" "transfer" {
      folder_id   = "<идентификатор_каталога>"
      name        = "logs-transfer"
      source_id   = "<идентификатор_эндпоинта-источника_source-logs-stream>"
      target_id   = "<идентификатор_эндпоинта-приемника_target-logs-ch>"
      type        = "INCREMENT_ONLY"
    }
    

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

  2. Проверьте корректность конфигурационных файлов.

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

    2. Выполните проверку с помощью команды:

      terraform plan
      

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

  3. Разверните облачные ресурсы.

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

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

После активации трансфера перейдите в Managed Service for ClickHouse и убедитесь, что в БД trail_data появилась таблица trail_logs_stream с событиями Audit Trails.

Вы можете выполнять запросы к БД trail_data для поиска интересных событий с точки зрения безопасности.

Примеры запросов
  • Найти, кто удалил каталог:

    select * from trail_data.trail_logs_stream
    where event_type = 'yandex.cloud.audit.resourcemanager.DeleteFolder' and  JSONExtractString(details, 'folder_name') = '<название_каталога>'
    
  • Какие действия совершал конкретный пользователь за период времени (требуется указать Name ID пользователя и дату):

    select * from trail_data.trail_logs_stream 
    where subject_name = '<Name_ID_пользователя>' and  event_time >= 2022-06-26
    
  • Срабатывание при создании ключей для сервисных аккаунтов:

    select * from trail_data.trail_logs_stream
    where event_type = 'yandex.cloud.audit.iam.CreateAccessKey' or event_type = 'yandex.cloud.audit.iam.CreateKey' or event_type = 'yandex.cloud.audit.iam.CreateApiKey'
    

Все интересные события собраны в решении.

Визуализируйте данные в Yandex DataLens

Чтобы построить визуализации, нужно подключиться к БД ClickHouse, в которую были перенесены логи, и создать датасет на основе ее данных.

Создайте подключение

  1. Перейдите на главную страницу сервиса Yandex DataLens.

  2. В открывшемся окне нажмите кнопку Создать подключение.

  3. Выберите подключение ClickHouse.

  4. Выберите тип подключения Выбрать в каталоге и заполните настройки подключения:

    1. В поле Кластер выберите trail-logs.
    2. В поле Имя хоста выберите хост ClickHouse из выпадающего списка.
    3. Введите имя пользователя БД и пароль.
  5. Нажмите Проверить подключение.

  6. После проверки подключения нажмите кнопку Создать подключение.

  7. Введите название подключения trail-logs-con и нажмите кнопку Создать.

  8. После сохранения подключения в правом верхнем углу нажмите кнопку Создать датасет.

Создайте датасет

  1. Перетащите таблицу trail_data.trail_logs_stream из блока Таблицы в левой части экрана на рабочую область.
  2. В правом верхнем углу нажмите кнопку Сохранить.
  3. Введите имя датасета trail-logs-dataset и нажмите Создать.
  4. После сохранения датасета в правом верхнем углу нажмите Создать чарт.

Создайте линейчатую диаграмму

Чтобы показать количество событий для каждого источника, создайте чарт — линейчатую диаграмму:

  1. Выберите тип визуализации Линейчатая диаграмма.
  2. Перетащите поле event_source из раздела Измерения в секцию Y.
  3. Перетащите поле event_id из раздела Измерения в секцию X.
  4. Перетащите поле event_source из раздела Измерения в секцию Цвета.
  5. В правом верхнем углу нажмите Сохранить.
  6. В открывшемся окне введите название чарта Trail logs: events и нажмите Сохранить.

Создайте круговую диаграмму

Чтобы показать соотношение количества событий по статусу, создайте чарт — круговую диаграмму:

  1. Скопируйте чарт, получившийся на предыдущем шаге:

    1. В правом верхнем углу нажмите значок галочки рядом с кнопкой Сохранить .
    2. Нажмите Сохранить как.
    3. В открывшемся окне введите название нового чарта Trail logs: statuses и нажмите кнопку Сохранить.
  2. Выберите тип визуализации Круговая диаграмма. Поля event_source и event_id автоматически попадут в секции Цвет и Показатели соответственно.

  3. Удалите поле event_source из секции Цвет и перетащите туда поле event_status.

  4. В правом верхнем углу нажмите Сохранить.

Создайте дашборд и добавьте на него чарты

Создайте дашборд, на котором будут размещены чарты:

  1. Перейдите на главную страницу сервиса Yandex DataLens.
  2. Нажмите кнопку Создать дашборд.
  3. Введите название дашборда Trail logs dashboard и нажмите кнопку Создать.
  4. В правом верхнем углу нажмите кнопку Добавить и выберите Чарт.
  5. В поле Чарт нажмите Выбрать и выберите из списка чарт Trail logs: events.
  6. Нажмите кнопку Добавить. Чарт появится на дашборде.
  7. Повторите предыдущие шаги для чарта Trail logs: statuses.
  8. В правом верхнем углу нажмите кнопку Сохранить.

Пример дашборда:

image

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

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

  • удалите кластер trail-logs;
  • удалите поток данных trail-logs-stream;
  • удалите эндпоинты источника и приемника;
  • удалите трансфер logs-transfer.

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

Language / Region
Проект Яндекса
© 2023 ООО «Яндекс.Облако»
В этой статье:
  • Перед началом работы
  • Необходимые платные ресурсы
  • Подготовьте окружение
  • Создайте сервисный аккаунт и назначьте ему роли
  • Создайте кластер ClickHouse
  • Создайте поток данных
  • Создайте трейл
  • Создайте эндпоинт-источник для потока данных Data Streams
  • Создайте эндпоинт-приемник для БД ClickHouse
  • Создайте трансфер
  • Визуализируйте данные в Yandex DataLens
  • Создайте подключение
  • Создайте датасет
  • Создайте линейчатую диаграмму
  • Создайте круговую диаграмму
  • Создайте дашборд и добавьте на него чарты
  • Как удалить созданные ресурсы