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

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

    Безопасность цепочки поставок означает защиту целостности, безопасности и надежности жизненного цикла разработки программного обеспечения от разработки до развертывания. 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 (список компонентов ПО)

    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.