Проверка соответствия лицензий
В 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: (Опционально) Проверка Image Check CVE-2022-42889Шаг 3: Очистка ресурсовОжидаемые результатыСсылкиОбзор функции
Этот метод аналогичен Base Image and SBOM Verification; изменяются только правила Kyverno для проверки соответствия лицензий.
- Настроить правила Kyverno для проверки SBOM.
- Использовать образ для создания Pod, чтобы проверить соответствие лицензий.
Сценарии использования
Следующие сценарии требуют обращения к инструкциям в этом документе:
- Реализация проверки соответствия лицензий в кластерах Kubernetes с использованием Kyverno
- Применение политик безопасности для блокировки образов, содержащих определенные лицензии (например, GPL)
- Настройка автоматической проверки лицензий в CI/CD pipeline
- Обеспечение соответствия лицензий в production-среде
- Реализация средств контроля безопасности цепочки поставок для container-образов путем проверки лицензий их компонентов
Предварительные требования
- Выполнена 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: Проверка политики
В пространстве имен policy, где определена политика, создайте Pod для проверки политики.
Используйте собранный образ для создания Pod.
Если в вашем образе содержатся лицензии GPL, Pod не будет создан.
Вы получите такой вывод:
Измените ограничение на лицензии в ClusterPolicy, чтобы разрешить лицензии GPL.
Затем создайте Pod для проверки политики.
Pod будет создан успешно.
Шаг 2: (Опционально) Проверка Image Check 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-образы будут автоматически включать информацию SBOM в своих аттестациях
- В указанном пространстве имен можно будет развертывать только образы с допустимыми лицензиями
- Образы с несоответствующими лицензиями будут автоматически блокироваться политиками Kyverno
- Вы реализуете базовый контроль безопасности цепочки поставок путем проверки информации о лицензиях компонентов в ваших container-образах
Это руководство служит основой для внедрения проверки соответствия лицензий в ваших CI/CD pipeline. В production-среде рекомендуется:
- Настроить правильную изоляцию пространств имен и контроль доступа
- Реализовать безопасное управление ключами для ключей подписи
- Настроить мониторинг и оповещения о нарушениях политики
- Регулярно обновлять политики безопасности с учетом ваших требований к лицензиям