Архитектура
Содержание
OverviewArchitecture DiagramАрхитектура слоёвUser LayerControl LayerExecution LayerStorage LayerScanning ResourcesОсновные компонентыScan ControllerReport ServiceПоток данныхПоследовательность выполнения сканированияOverview
Compliance Service — это инструмент для проверки соответствия требованиям безопасности в Kubernetes, разработанный для упрощения верификации безопасности в Kubernetes-средах. Проект вдохновлён дизайном OpenShift compliance-operator и поддерживает стандарты DISA STIG, а также настройку пользовательских правил.
Architecture Diagram
Архитектура слоёв
User Layer
Слой взаимодействия с пользователем предоставляет несколько интерфейсов для доступа к сервисам соответствия:
- CLI Tools: интерфейс командной строки для прямого взаимодействия с операциями соответствия
- Kubernetes API: стандартный API Kubernetes для интеграции с существующими рабочими процессами
Control Layer
Слой управления отвечает за оркестрацию и координацию операций соответствия:
- Manager Controller: центральный контроллер, координирующий общие операции Compliance Service
- Scan Controller: специализированный контроллер, управляющий процессами сканирования соответствия
- Report Service Controller: управляет процессами генерации и распространения отчётов
Execution Layer
Слой исполнения обрабатывает фактическое сканирование и обработку соответствия:
- Unified Scanner: интегрированный сканер, поддерживающий несколько фреймворков соответствия
- OpenSCAP Scanner: специализированный сканер для проверок на основе OpenSCAP
- Report Service: сервис, отвечающий за генерацию, хранение и предоставление отчётов по соответствию
Storage Layer
Слой хранения обеспечивает постоянное и временное хранение данных соответствия:
- CheckResults (ETCD): постоянное хранилище для агрегированных результатов проверок соответствия
- ConfigMaps: нативное Kubernetes-хранилище для конфигурационных данных и результатов сканирования
Scanning Resources
Динамические ресурсы, создаваемые для выполнения сканирования соответствия:
- Scanner Jobs: Kubernetes jobs, оркестрирующие задачи сканирования соответствия
- Scanner Pods: отдельные pods, выполняющие конкретные проверки соответствия
Основные компоненты
Scan Controller
Scan Controller отвечает за управление полным жизненным циклом задач сканирования соответствия:
- Инициализация и планирование задач сканирования: создаёт и планирует задачи сканирования на основе настроенных политик
- Отслеживание прогресса сканирования: контролирует статус выполнения текущих сканирований
- Сбор результатов: агрегирует и обрабатывает результаты сканирования из различных источников
Report Service
Report Service предоставляет комплексные возможности управления отчётами:
- Временное хранение: обеспечивает безопасное временное хранение отчётов сканирования OpenSCAP
- Скачивание отчётов: позволяет безопасно загружать и получать доступ к сгенерированным отчётам соответствия
- Генерация отчётов: преобразует необработанные данные соответствия в форматированные, удобные для анализа отчёты
Поток данных
Последовательность выполнения сканирования
Процесс сканирования соответствия следует чёткой последовательности, обеспечивающей правильное управление ресурсами и сбор результатов:
-
Создание ресурса: пользователь создаёт кастомный ресурс Scan через Kubernetes API, который определяет параметры сканирования, целевые узлы и профили соответствия.
-
Реконсиляция контроллера: ScanController обнаруживает новый ресурс Scan и начинает процесс реконсиляции для организации рабочего процесса сканирования.
-
Обработка конфигурации: контроллер парсит указанные профили и правила соответствия, затем применяет NodeScopeStrategy для определения узлов, подлежащих сканированию, согласно заданной области.
-
Оркестрация задач: контроллер создаёт Scanner Jobs для каждого целевого узла, которые будут выполнять фактические проверки соответствия.
-
Выполнение Pod: каждый Scanner Job создаёт Pod, запускающий инструменты сканирования соответствия (например, OpenSCAP) на целевом узле.
-
Оценка соответствия: Scanner Pod выполняет проверки соответствия узла, оценивая его по заданным профилям и правилам безопасности.
-
Сбор результатов: Scanner Pod создаёт ресурсы CheckResult в Kubernetes API для хранения результатов проверок.
-
Генерация отчётов: для сканирований на основе OpenSCAP Scanner Pod загружает подробные отчёты в ReportService для дальнейшего анализа и хранения.
-
Управление статусом: ScanController непрерывно отслеживает прогресс сканирования и обновляет статус ресурса Scan, отражая текущее состояние операции.
-
Очистка ресурсов: после завершения сканирования контроллер очищает Scanner Jobs и Pods для освобождения ресурсов кластера.
Такая архитектура обеспечивает распределённое, масштабируемое сканирование соответствия с чётким разделением ответственности между компонентами оркестрации и исполнения.