
Автоматизированный проверщик безопасности для кластеров Kubernetes с сервисной сетью Istio, обеспечивающий соблюдение лучших практик с помощью политик OPA и формирующий отчеты об исправлении ошибок конфигурации.
Повысьте безопасность вашей сервисной сетки Kubernetes!!
mesh-kridik — это инструмент с открытым исходным кодом для проверки безопасности, который выполняет различные проверки безопасности в кластере Kubernetes с сервисной сеткой Istio и формирует отчет о безопасности.
Проверки безопасности являются полной реализацией рекомендаций по безопасности Istio
Проверки безопасности выполняются в кластере Kubernetes с сервисной сеткой Istio и используют OPA (Open Policy Agent) для применения правил безопасности. Итоговый аудиторский отчет включает: корневую причину проблемы безопасности и предлагаемое исправление.

git clone https://github.com/chen-keinan/mesh-kridik
cd mesh-kridik
make build
Запуск Mesh-Kridik без флагов — выполнить все тесты
./mesh-kridik
Запуск mesh-kridik с флагами — выполнить тесты по требованию
Usage: mesh-kridik [--version] [--help] <command> [<args>]
Available commands are:
-r , --report : run security checks and generate remediation report
-i , --include: execute only specific security check, example -i=1.1
-e , --exclude: ignore specific security check, example -e=1.1,2.0
Запуск тестов и формирование отчета о проваленных тестах и их исправлениях
./mesh-kridik -r
Kube-kridik предоставляет точку расширения для пользовательских плагинов Пример :
go build -buildmode=plugin -o=~/<plugin folder>/<plugin>.so ~/<plugin folder>/<plugin>.go
cp ~/<plugin folder>/<plugin>.so ~/.kube-kridik/plugins/compile/<plugin>.so
Kube-kridik поддерживает следующие спецификации и может быть легко расширен:
Эти спецификации можно легко расширить, изменив файлы спецификаций в папке ~/.mesh-kridik/security/mesh/istio
| Название | Описание | Влияние |
|---|---|---|
| Mutual TLS | Прокси Istio Mutual TLS по умолчанию настроены в разрешающем режиме | прокси будут принимать как mutual TLS, так и обычный текст |
| Более безопасные шаблоны политик авторизации Istio | Используйте шаблоны ALLOW-with-positive-matching или DENY-with-negative-match | Эти шаблоны политик авторизации более безопасны, поскольку в случае несоответствия политики худшим результатом будет неожиданный отказ 403, а не обход политики авторизации. |
| Нормализация путей в политике авторизации | Точка применения политик авторизации — прокси Envoy, а не обычная точка доступа к ресурсам в серверном приложении | Несоответствие может привести к неожиданному отказу или обходу политики |
| Инициация TLS для исходящего трафика | Использование DestinationRule для службы ServiceEntry для исходящего трафика | Отсутствие инициации TLS для исходящего трафика к внешнему сервису приведет к отправке данных в открытом виде |
| Определение протокола | явно объявлять протокол службы | ошибка определения может привести к неожиданному поведению трафика |
| Поддержка CNI | прозрачный захват трафика Istio | не весь сетевой трафик будет захвачен |
| чрезмерно широкие хосты | избегайте чрезмерно широких настроек хостов в Gateway | может привести к потенциальному раскрытию неожиданных доменов |
| Ограничение прав на создание Gateway | ограничьте создание ресурсов Gateway доверенными администраторами кластера | может привести к созданию gateway недоверенными пользователями |
| Настройка ограничения на количество входящих соединений | Обновите параметр global_downstream_max_connections в config map в соответствии с количеством одновременных соединений, необходимых отдельным экземплярам gateway в вашем развертывании. После достижения лимита Envoy начнет отклонять TCP-соединения | отсутствие ограничения на количество входящих соединений может быть использовано злоумышленником |
| Настройка токенов сервисных аккаунтов третьей стороны | Рекомендуется настроить токены третьей стороны, так как свойства токенов первой стороны менее безопасны | свойства токенов первой стороны менее безопасны и могут привести к нарушению аутентификации |
| Плоскость управления | Istiod по умолчанию открывает несколько неаутентифицированных портов с обычным текстом для удобства | открывает порт сервиса XDS 15010 и отладочный порт 8080 по неаутентифицированному обычному тексту |
| Плоскость данных | Прокси открывает множество портов | Приложения, запущенные в том же pod, что и прокси, имеют доступ; между sidecar и приложением нет границы доверия |
| Понимание ограничений захвата трафика | Обеспечение безопасности исходящего трафика путем установки meshConfig.outboundTrafficPolicy.mode | доступ к внешним сервисам не будет контролироваться |