Безопасность в Kubernetes: Container Runtime Security | OTUS
🔥 Успейте получить скидку!
Только до 27.01 можно приобрести курсы со скидкой 25%. Торопитесь!
Выбрать курс

Курсы

Программирование
Разработчик программных роботов (RPA) на базе UiPath и PIX
-25%
Разработчик C#
-25%
Алгоритмы и структуры данных
-25%
Backend-разработчик на PHP
-25%
JavaScript Developer. Professional
-25%
Team Lead
-25%
Golang Developer. Professional
-25%
Agile Project Manager
-25%
Flutter Mobile Developer
-25%
Android Developer. Professional
-11%
MS SQL Server Developer
-8%
C++ Developer. Professional Framework Laravel Cloud Solution Architecture Highload Architect Reverse-Engineering. Professional Kotlin Backend Developer React.js Developer VOIP инженер Нереляционные базы данных Scala-разработчик Супер-практикум по использованию и настройке GIT IoT-разработчик JavaScript Developer. Basic Advanced Fullstack JavaScript developer Unity Game Developer. Professional Супер-интенсив Azure
Инфраструктура
Супер-интенсив "Версионирование и командная работа с помощью Git"
-30%
Administrator Linux. Professional
-25%
Супер-интенсив «CI/CD или Непрерывная поставка с Docker и Kubernetes»
-30%
Разработчик программных роботов (RPA) на базе UiPath и PIX
-25%
Administrator Linux. Advanced
-25%
Infrastructure as a code in Ansible
-25%
Network engineer
-25%
MS SQL Server Developer
-8%
Cloud Solution Architecture Highload Architect Разработчик голосовых ассистентов и чат-ботов Мониторинг и логирование: Zabbix, Prometheus, ELK Супер-практикум по работе с протоколом BGP Супер - интенсив по паттернам проектирования Супер - интенсив по Kubernetes Архитектор сетей Супер-интенсив «IaC Ansible»
Специализации Курсы в разработке Подготовительные курсы
+7 499 938-92-02

Безопасность в Kubernetes: Container Runtime Security

Kuber_Deep_31.3-5020-f35387.png

Продолжаем обзор выступления Дмитрия Лазаренко, руководителя PaaS-направления в Mail.Ru Cloud Solutions. Тема сегодняшней статьи — Container Runtime Security.

Предыдущие статьи: 1. Безопасность в Kubernetes. Docker Image Security. 2. Безопасность в Kubernetes: Host Level Security.

Итак, вы настроили всё на хост-машине, проверили Docker Images, но всё равно есть вероятность, что появится какой-то эксплойт, о котором вы не знаете, то есть вас могут хакнуть. Невозможно гарантировать защиту только за счёт исключения известных уязвимостей — есть и неизвестные уязвимости, уязвимости нулевого дня.

Что следует делать: 1. Создать среду, в которой максимально всё ограничено. 2. Всё, что выходит за рамки дозволенного и не находится в white-листе, будет вызывать Alarm администратору либо блокировку.

Хорошая новость заключается в том, что всё это можно делать в Kubernetes. Для этого есть разные механизмы, например Pod Security Policies. Все контейнеры и поды, которые деплоятся, запускаются не под рутом, они не могут писать в файловую корневую систему — в общем, это всё настроить не проблема.

1-20219-9dab56.png

Есть и более параноидальные штуки, например, обязательный контроль доступа в SELinux (Mandatory aсcess control). Одна из его проблем — он очень сложный, низкоуровневый и настройка — это большая боль. Также тут стоит упомянуть AppArmor — это лайт-версия SELinux (он уже проще по настройке).

Существуют и техники Sandboxing’a с политиками (seccomp-bpf), но они тоже низкоуровневые, потому что приходится определять, какие системные вызовы вызывать можно, а какие нет. В итоге процесс, который попытается выполнить недозволенные действия, просто будет потушен.

Что делать, если мы хотим выполнять настройки на верхнем уровне?

Этот вопрос уже решается другими инструментами, не входящими в Kubernetes. Существует такая технология — Sysdig Falco — она позволяет реализовать умную безопасность, то есть безопасность на уровне информационных потоков, к слову, достаточно высокоуровневую.

Технология весьма хороша. По умолчанию она не запрещающая, но можно настроить нужный вам пайплайн. Вы настраиваете декларативно правила, создавая некий White-лист действий: — какие процессы/команды могут быть запущены в Docker-контейнере; — какие процессы могут устанавливать исходящие соединения или принимать входящие; — какие порты могут слушаться; — в какие файлы и папки можно писать; — какие вызовы ядра Linux могут выполняться.

Что можно таким образом отловить и как реагировать:

2-20219-a02c4d.png

Теперь давайте посмотрим, как это настраивается. В принципе, правила достаточно простые:

3-20219-501b8b.png

Но можно сделать ещё круче, организовав полностью автоматизированный пайплайн:

4-20219-51d5f7.png

Что здесь происходит? Если Falco обнаружит критическую активность, он может записать сообщение в шину данных или в Message queue типа NUTS (стандартный Message queue в Kubernetes), а на этот Message queue будет подписан какой-то процесс, например, kubeless, который удалит подозрительные поды. Вот так. И даже существует проектик, который позволяет это сделать, — держите ссылку на GitHub.

Что же, на этом всё, на очереди сетевая безопасность в Kubernetes, следите за новостями!

Не пропустите новые полезные статьи!

Спасибо за подписку!

Мы отправили вам письмо для подтверждения вашего email.
С уважением, OTUS!

Автор
0 комментариев
Для комментирования необходимо авторизоваться
Только до 27 января!
🔥 СКИДКА 25% на курсы OTUS!