• Русский
  • Основные концепции

    Безопасность цепочки поставок

    Безопасность цепочки поставок означает защиту целостности, безопасности и надежности жизненного цикла разработки программного обеспечения от этапа разработки до развертывания. 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 предусмотрено несколько уровней гарантий. Эти уровни содержат признанные в отрасли лучшие практики, формирующие четыре уровня с возрастающей степенью уверенности.

    Уровни безопасности

    Трек/УровеньТребованияФокус
    Build L0(отсутствуют)(не применимо)
    Build L1Происхождение, показывающее, как был собран пакетОшибки, документация
    Build L2Подписанное происхождение, созданное на хостинговой платформе сборкиПодделка после сборки
    Build L3Усиленная платформа сборкиПодделка во время сборки

    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.