Проверка соответствия лицензий
В 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 pipeline
- Обеспечение соответствия лицензий в production-средах
- Реализация средств контроля безопасности supply chain для container images путём проверки лицензий их компонентов
Предварительные требования
- Base Image and SBOM Verification завершён.
Обзор процесса
Пошаговые инструкции
Шаг 1: Проверка сведений о лицензиях в образе
Шаг 1.1: Создайте политику Kyverno для проверки сведений об основном образе
Для этого шага требуются права администратора кластера.
Подробнее о Kyverno ClusterPolicy см. в Kyverno ClusterPolicy
Политика выглядит следующим образом:
Пояснение полей YAML
- Политика в целом соответствует политике из Image Signature Verification
spec.rules[0].verifyImages[].attestations[0].conditionstype: тип аттестации CycloneDX SBOM —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 для проверки соответствия лицензий
- Ваши container images автоматически включают информацию SBOM в своих аттестациях
- В указанном namespace можно развернуть только образы с допустимыми лицензиями
- Образы с несоответствующими лицензиями автоматически блокируются политиками Kyverno
- Вы реализовали базовый контроль безопасности supply chain, проверяя сведения о лицензиях компонентов в своих container images
Это руководство закладывает основу для реализации проверки соответствия лицензий в ваших CI/CD pipeline. В production-среде вам следует:
- Настроить корректную изоляцию namespace и контроль доступа
- Реализовать безопасное управление ключами для ключей подписи
- Настроить мониторинг и оповещения о нарушениях политик
- Регулярно обновлять политики безопасности в соответствии с вашими требованиями к лицензиям