Основные концепции
Содержание
Безопасность цепочки поставокФреймворк SLSAПодписьАттестация образовПроисхождение SLSASBOM (Software bill of materials)Результаты сканирования уязвимостейПользовательские метаданныеПроверка аттестацииАртефактыПодсказки типовХранилищаКонтроллерБезопасность цепочки поставок
Безопасность цепочки поставок означает защиту целостности, безопасности и надежности жизненного цикла разработки программного обеспечения от этапа разработки до развертывания. Tekton Chains разработан для решения задач безопасности цепочки поставок, предоставляя механизмы проверки того, что артефакты, созданные CI/CD пайплайнами, не были изменены и им можно доверять.
Фреймворк SLSA
SLSA (Supply-chain Levels for Software Artifacts) — это фреймворк безопасности, который предоставляет список стандартов и контролей для предотвращения подделок, повышения целостности и защиты пакетов и инфраструктуры. Tekton Chains поддерживает несколько форматов происхождения SLSA:
- SLSA v0.2: поддерживается через форматтеры
slsa/v1илиin-toto - SLSA v1.0: поддерживается через форматтеры
slsa/v2alpha3иslsa/v2alpha4
В рамках фреймворка SLSA предусмотрено несколько уровней гарантий. Эти уровни содержат признанные в отрасли лучшие практики, формирующие четыре уровня с возрастающей степенью уверенности.
Tekton может соответствовать требованиям SLSA уровня 2. Для получения дополнительной информации смотрите Getting To SLSA Level 2 with Tekton and Tekton Chains
Подпись
Подпись — это процесс криптографической подписи происхождения для обеспечения его целостности и подлинности. Tekton Chains поддерживает несколько методов подписи:
- x509: использует стандартный сертификат x509 и приватный ключ
- Cosign: использует инструмент Cosign от Sigstore для подписи
- KMS: использует сервисы управления ключами облачных провайдеров
- Keyless: использует эфемерные ключи с центром сертификации Fulcio
Аттестация образов
Аттестация образов используется для хранения и проверки метаданных, связанных с образами. Она предоставляет более подробную информацию о безопасности цепочки поставок, такую как:
Происхождение SLSA
Происхождение SLSA — это метаданные, содержащие проверяемую информацию о программных артефактах, описывающую, как они были собраны, какие исходники использовались и кто их собрал. В Tekton Chains происхождение криптографически подписывается для обеспечения его целостности и подлинности.
В Tekton Chains существуют два типа происхождения:
- Происхождение на уровне Task: фиксирует детали конкретного выполнения TaskRun
- Происхождение на уровне Pipeline: фиксирует выполнение всего PipelineRun, включая все дочерние TaskRun
SBOM (Software bill of materials)
SBOM — это вложенный инвентарь программного обеспечения, список компонентов, из которых состоит ПО, включая:
- Компоненты программного обеспечения
- Версии компонентов
- Лицензионную информацию
- Зависимости между компонентами
SBOM может быть в различных форматах, таких как:
Результаты сканирования уязвимостей
Результаты сканирования уязвимостей Cosign фиксируют оценку безопасности процесса сборки ПО, включая:
- Информацию о сканере (название, версия)
- Информацию о базе данных уязвимостей
- Список обнаруженных уязвимостей и их степень серьезности
- Рекомендации по устранению
Пользовательские метаданные
Пользовательские метаданные могут добавляться по мере необходимости для поддержки специфических требований безопасности.
Например, grype может генерировать результаты сканирования уязвимостей, и эти результаты могут быть загружены в реестр образов как пользовательский тип.
Проверка аттестации
Механизм проверки очень гибкий и может быть настроен для валидации любых метаданных, присутствующих в аттестации. Это означает, что любая информация, хранящаяся в аттестации, может использоваться в качестве критерия проверки, позволяя организациям реализовывать точные меры безопасности, основанные на их конкретных требованиях.
Гибкость проверки аттестации демонстрируется через различные методы валидации:
-
Валидация Kyverno с использованием JMESPath
- Использует синтаксис JMESPath для запросов и проверки JSON
-
Валидация политик с помощью Rego
- Использует Open Policy Agent (OPA) для сложного применения политик
- Поддерживает декларативные правила и пользовательскую логику проверки
- Пример: проверка информации о сборщике и среде сборки
-
Валидация с помощью CUE
- Предоставляет систему типов и ограничений для проверки
- Позволяет проверять схемы и согласованность данных
- Поддерживает проверку сложных структур данных
Артефакты
Артефакты в Tekton Chains — это входные и выходные данные процесса сборки:
- Входные артефакты: ресурсы, влияющие на процесс сборки, такие как репозитории исходного кода и зависимости
- Выходные артефакты: ресурсы, созданные в процессе сборки, например, контейнерные образы
Подсказки типов
Подсказки типов — это механизм, используемый Tekton Chains для понимания входных и выходных артефактов TaskRun или PipelineRun. Подсказки типов — это специально именованные параметры или результаты, которые следуют определённым форматам:
- Для Git-входов:
CHAINS-GIT_URLиCHAINS-GIT_COMMIT - Для общих входов: параметры или результаты с суффиксом
ARTIFACT_INPUTS - Для выходов образов:
IMAGESили параметры/результаты с суффиксамиIMAGE_URLиIMAGE_DIGEST - Для общих выходов: параметры или результаты с суффиксом
ARTIFACT_OUTPUTS
Хранилища
Хранилища — это места, где Tekton Chains сохраняет сгенерированное происхождение и подписи. Поддерживаемые хранилища включают:
- Tekton: хранение в виде аннотаций на TaskRun/PipelineRun
- OCI: хранение в OCI-реестре рядом с контейнерными образами
- GCS: хранение в Google Cloud Storage
- DocDB: хранение в документной базе данных
- Grafeas: хранение в Grafeas/Container Analysis
Контроллер
Контроллер Tekton Chains — это основной компонент, который отслеживает выполнение TaskRun и PipelineRun, собирает релевантную информацию, генерирует, подписывает и сохраняет происхождение. Он запускается как деплоймент Kubernetes в пространстве имён tekton-pipelines.