Проверка соответствия лицензий
В ACP (Alauda Container Platform) вы можете использовать задачи trivy или syft в Tekton Pipeline для генерации SBOM для образа.
SBOM содержит информацию о лицензиях для каждого компонента в образе.
Мы можем использовать политики Kyverno для отклонения образов, которые содержат определённые лицензии.
Поскольку SBOM уже был сгенерирован для образа в разделе Base Image and SBOM Verification, здесь мы не создаём pipeline, а напрямую используем существующий образ для проверки этой возможности.
Данная глава основана на Base Image and SBOM Verification и добавляет только логику для проверки информации о лицензиях образа.
Содержание
Обзор функцииСценарии использованияПредварительные требованияОбзор процессаПошаговая инструкцияШаг 1: Проверка информации о лицензиях образаШаг 1.1: Создание политики Kyverno для проверки информации базового образаШаг 1.2: Проверка политикиШаг 2: (Опционально) Проверка CVE-2022-42889 для образаШаг 3: Очистка ресурсовОжидаемые результатыСсылкиОбзор функции
Этот метод похож на Base Image and SBOM Verification, изменяются только правила Kyverno для проверки соответствия лицензий.
- Настроить правила Kyverno для проверки SBOM.
- Использовать образ для создания Pod и проверки соответствия лицензий.
Сценарии использования
Следующие сценарии требуют обращения к рекомендациям из данного документа:
- Реализация проверки соответствия лицензий в Kubernetes кластерах с помощью Kyverno
- Применение политик безопасности для блокировки образов с определёнными лицензиями (например, GPL)
- Настройка автоматической проверки лицензий в CI/CD пайплайнах
- Обеспечение соответствия лицензий в продуктивных средах
- Реализация контроля безопасности цепочки поставок контейнерных образов путём проверки лицензий компонентов
Предварительные требования
- Завершено выполнение Base Image and SBOM Verification.
Обзор процесса
Пошаговая инструкция
Шаг 1: Проверка информации о лицензиях образа
Шаг 1.1: Создание политики Kyverno для проверки информации базового образа
Для выполнения этого шага требуются права администратора кластера.
Подробнее о Kyverno ClusterPolicy см. в Kyverno ClusterPolicy
Политика выглядит следующим образом:
Объяснение полей YAML
- Политика в целом совпадает с той, что описана в Image Signature Verification
spec.rules[0].verifyImages[].attestations[0].conditionstype: тип аттестации SBOM в формате cyclonedx —https://cyclonedx.org/bomattestors: как описано вышеconditions: условия для проверкиany: должно выполняться любое из условийkey: "{{ components[].licenses[].license.id }}": образ содержит лицензии GPL, которые не разрешеныkey: "{{ components[].licenses[].license.name }}": образ содержит лицензию Expat, которая не разрешена
Сохраните политику в yaml-файл с именем kyverno.verify-component-licenses.yaml и примените её командой:
Шаг 1.2: Проверка политики
В namespace policy, где определена политика, создайте Pod для проверки политики.
Используйте собранный образ для создания Pod.
Если ваш образ содержит лицензии GPL, создание Pod завершится с ошибкой.
Вы получите вывод примерно такого вида:
Измените ограничение лицензий в ClusterPolicy, чтобы разрешить лицензии GPL.
Затем создайте Pod для проверки политики.
Pod будет успешно создан.
Шаг 2: (Опционально) Проверка CVE-2022-42889 для образа
- Если вы хотите добавить дополнительные условия в политику, можете продолжить чтение.
- Это простой пример, вы можете использовать тот же метод для проверки других уязвимостей.
CVE-2022-42889 — критическая уязвимость в библиотеке Apache Commons Text, которая может привести к выполнению произвольного кода и встречается в версиях с 1.5 по 1.9. Обнаружение уязвимого пакета можно выполнить в SBOM, идентифицируя пакет "commons-text" с одной из уязвимых версий. Эта политика проверяет аттестованные SBOM в формате CycloneDX для образа, указанного в imageReferences, и отклоняет его, если содержит версии 1.5-1.9 пакета commons-text.
Нам нужно лишь добавить условие в ClusterPolicy для проверки, что пакет commons-text отсутствует в образе.
Здесь это не демонстрируется, заинтересованные читатели могут попробовать самостоятельно.
Шаг 3: Очистка ресурсов
Удалите Pod, созданный на предыдущих шагах.
Удалите политику.
Ожидаемые результаты
После выполнения данного руководства:
- У вас настроена работа Kyverno для проверки соответствия лицензий
- Ваши контейнерные образы автоматически включают информацию SBOM в свои аттестации
- В указанном namespace разрешено развертывание только образов с допустимыми лицензиями
- Образы с несоответствующими лицензиями автоматически блокируются политиками Kyverno
- Вы реализовали базовый контроль безопасности цепочки поставок, проверяя информацию о лицензиях компонентов в контейнерных образах
Это руководство служит основой для реализации проверки соответствия лицензий в ваших CI/CD пайплайнах. В продуктивной среде рекомендуется:
- Настроить правильную изоляцию namespace и контроль доступа
- Реализовать безопасное управление ключами для подписывающих ключей
- Настроить мониторинг и оповещения о нарушениях политик
- Регулярно обновлять политики безопасности в соответствии с требованиями к лицензиям