Оповещения и реагирование на события ИБ Audit trails с помощью Cloud Logging/Cloud Functions + Telegram
- Function_trigger на CloudLogging в terraform
- AuditTrails в terraform
Решение выполняет c помощью CloudFunctions и AuditTrails:
- Оповщение в telegram на следующие события AuditTrails (опционально):
- 1)"Create danger, ingress ACL in SG (0.0.0.0/0)"
- 2)"Change Bucket access to public"
- 3)"Assign rights to the secret (Lockbox) to some account"
- Будут добавляться по запросам желающих (из списка актуальных Use cases)
- (Опционально) Активное реагирование:
- Удаление опасного правила группы безопасности (для правила № 1)
- Удаление назначенных прав на секрет в Lockbox (для правила № 3)
- Оповещение в telegram на любое событие AuditTrails (на выбор)
- ✅ Созданная custom лог группа в CloudLogging (инструкция)
- ✅ Включенный сервис Audit Trails (с выводом логов в лог группу CloudLogging) (инструкция)
- ✅ Сервисный аккаунт (ему будут выданы необходимые права)
- ✅ Созданный бот в telegram (инструкция)
- ✅ ID чата с telegram ботом (для получения chat-id сначала пишем хотябы одно сообщение боту, далее используем https://api.telegram.org/bot/getUpdates для получения id чата)
- ✅ После выполнения Terraform скрипта, необходимо в UI включить trigger на CloudLogging (подробности ниже)
Модуль terraform:
- Принимает на вход:
// Вызов модуля
module "trails-function-detector" {
source = "../" // путь до модуля
//Общие:
folder_id = "XXXXXXX" // your_folder_id
service_account_id = "XXXXXXX" // yout service-account id, которому будут назначены права: serverless.functions.invoker
//Инфо для telegram уведомлений:
bot_token = "XXXXXX:XXXXXXXXXXXXXX" // токен telegram бота для отправки уведомлений (Для того, чтобы получить токен https://proglib.io/p/telegram-bot)
chat_id_var = "XXXXXXX" // для получения chat-id сначала пишем хоть одно сообщение боту, далее используем https://api.telegram.org/bot<token>/getUpdates для получения
//Включение Detection-rules:
rule_sg_on = "True" // Правило: "Create danger, ingress ACL in SG (0.0.0.0/0)" (если не требуется то выставить в False)
del_rule_on = "False" // Включение активного реагирования на правило rule_sg_on: удаляет опасное правило группы безопасности
rule_bucket_on = "True" // Правило: "Change Bucket access to public" (если не требуется то выставить в False)
rule_secret_on = "True" // Правило: "Assign rights to the secret (Lockbox) to some account" (если не требуется то выставить в False)
del_perm_secret_on = "False" // Включение активного реагирования на правило rule_secret_on: удаляет назначенные права на секрет в Lockbox
//Доп. события для получения уведомлений без деталей
any_event_dict = "yandex.cloud.audit.iam.CreateServiceAccount,event2" // оставить как есть, если не требуется alert на доп. события, либо "yandex.cloud.audit.iam.CreateServiceAccount,event2", нащвания событий, можно получить https://cloud.yandex.ru/docs/audit-trails/concepts/events
//TBD когда появится поддержка триггеров для cloudlogging в terraform
//loggroup_id = "af3o0pc24hi1qmpovcss" //id лог группы, в которую AuditTrails пишет события (можно посмотреть в CloudLogging, создавалась при создании трейла)
}
-
Выполняет:
- назначение прав serverless.functions.invoker на указанный сервисный аккаунт (в случае включения реагирования, назначает также права vpc.securityGroups.admin,lockbox.admin)
- создает функцию на основе python скрипта (функция выполняет описанную выше логику)
-
Действия после terraform (будет упаковано в terraform позже):
- необходимо через UI включить Function_trigger на CloudLogging со следующими параметрами:
- тип: CloudLogging
- лог группа: созданная в CloudLogging
- время ожидания: 10
- размер группы сообщений: 5
- функция: созданная с помощью terraform скрипта функция "function-for-trails"
- необходимо через UI включить Function_trigger на CloudLogging со следующими параметрами:
См. Пример вызова модулей в /example/main.tf