1 часть
Со временем мы стали добавлять новые фичи, и FAK превратился для нас в центральный инструмент наблюдения за безопасностью Kubernetes. Мы решили начать с ключевых аспектов ИБ Kubernetes, которые критически важны, но отнимают уйму времени при ручном анализе:
🔹Network Policy (то, с чего мы начинали)
🔹RBAC
🔹Манифесты подов и их Security Context
Большинство open-source решений обычно заточены под одну задачу. В то же время, платформенные продукты часто тяжелые, требуют привилегированного доступа в кластере и частично дублируют функционал наших текущих инструментов. Поэтому мы решили развивать свой инструмент.
Глубокий анализ RBAC
Если вы работали с Kubernetes, то знаете, что разбираться в RBAC без инструментов — это довольно трудоёмко. Роли создаются вручную, тянутся из helm-чартов, агрегируются... В итоге сложно понять, какие права есть у конкретного сервисного аккаунта или пользователя.
🔹 Здесь FAK действует как рентген:
🔹сканирует, какие права принадлежат каждому пользователю, группе или сервис аккаунту
🔹подсвечивает все опасные роли;
🔹позволяет отфильтровать всех cluster-admin, все опасные роли, посмотреть разницу с предыдущим сканом или отобразить в виде наглядного графика;
🔹показывает, какие поды используют сервис аккаунты с опасными правами;
🔹как и в случае с сетевыми политиками, за любыми изменениями можно следить через уведомления в Teams.
🔹 Мы также ведем и регулярно пополняем базу опасных RBAC на основе документации Kubernetes, ИБ стандартов и рекомендаций, исследований, CVE. В нашей базе уже более 20 правил.
Один из примеров опасной роли:
rules:
- apiGroups: [""]
resources: ["secrets"]
verbs: ["list"]
На первый взгляд безобидный глагол list. Кажется, что он просто перечисляет названия секретов? На деле он дает чтение всех секретов. Если такая роль используется не в рамках одного неймспейса, а всего кластера, то мы получаем возможность читать все секреты во всем кластере.
Но что, если у нас wildcard роль, со звездочкой (*) в verbs (любое действие) или в resources (любой ресурс в указанных apiGroups)?
rules:
- apiGroups: [""]
resources: ["*"]
verbs: ["list"]
или так
rules:
- apiGroups: [""]
resources: ["secrets"]
verbs: ["*"]
Такую роль еще сложнее найти, и помимо совпадений глаголов и ресурсов, мы должны учитывать еще и наличие «*».
Таким образом, FAK помогает нам найти не только опасные RBAC, но и список подов, которые используют сервис аккаунты с опасными правами. Это ещё на шаг приближает нас к полному пониманию всей картины безопасности Kubernetes кластеров.
В следующих частях мы подробнее поговорим о том, как контролировать Security Context подов, не давая из них сбежать на ноду, и как мы мониторим наши ИБ-инструменты, такие как Gatekeeper и Tetragon.
VK Security | Буст этому каналу!
#инфраструктура #Kubernetes
