• Русский
  • Архитектура

    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
    • Скачивание отчётов: позволяет безопасно загружать и получать доступ к сгенерированным отчётам соответствия
    • Генерация отчётов: преобразует необработанные данные соответствия в форматированные, удобные для анализа отчёты

    Поток данных

    Последовательность выполнения сканирования

    Процесс сканирования соответствия следует чёткой последовательности, обеспечивающей правильное управление ресурсами и сбор результатов:

    1. Создание ресурса: пользователь создаёт кастомный ресурс Scan через Kubernetes API, который определяет параметры сканирования, целевые узлы и профили соответствия.

    2. Реконсиляция контроллера: ScanController обнаруживает новый ресурс Scan и начинает процесс реконсиляции для организации рабочего процесса сканирования.

    3. Обработка конфигурации: контроллер парсит указанные профили и правила соответствия, затем применяет NodeScopeStrategy для определения узлов, подлежащих сканированию, согласно заданной области.

    4. Оркестрация задач: контроллер создаёт Scanner Jobs для каждого целевого узла, которые будут выполнять фактические проверки соответствия.

    5. Выполнение Pod: каждый Scanner Job создаёт Pod, запускающий инструменты сканирования соответствия (например, OpenSCAP) на целевом узле.

    6. Оценка соответствия: Scanner Pod выполняет проверки соответствия узла, оценивая его по заданным профилям и правилам безопасности.

    7. Сбор результатов: Scanner Pod создаёт ресурсы CheckResult в Kubernetes API для хранения результатов проверок.

    8. Генерация отчётов: для сканирований на основе OpenSCAP Scanner Pod загружает подробные отчёты в ReportService для дальнейшего анализа и хранения.

    9. Управление статусом: ScanController непрерывно отслеживает прогресс сканирования и обновляет статус ресурса Scan, отражая текущее состояние операции.

    10. Очистка ресурсов: после завершения сканирования контроллер очищает Scanner Jobs и Pods для освобождения ресурсов кластера.

    Такая архитектура обеспечивает распределённое, масштабируемое сканирование соответствия с чётким разделением ответственности между компонентами оркестрации и исполнения.