• Русский
  • Архитектура

    Обзор архитектуры Tekton Chains

    Tekton Chains — это контроллер определения пользовательских ресурсов (CRD) Kubernetes, который включает функции безопасности цепочки поставок для потока Tekton. Архитектура Tekton Chains состоит из нескольких ключевых компонентов, работающих вместе для обеспечения безопасной подписи и проверки артефактов.

    Архитектура Tekton Chains

    Примечание: Диаграмма выше иллюстрирует высокоуровневую архитектуру Tekton Chains. Фактическая реализация может различаться в зависимости от конфигурации.

    Основные компоненты

    Контроллер Tekton Chains

    Контроллер Tekton Chains — это центральный компонент архитектуры. Он работает как контроллер Kubernetes, который:

    • Наблюдает за завершениями TaskRun и PipelineRun в кластере
    • Делает снимки завершенных TaskRun и PipelineRun
    • Обрабатывает эти снимки для генерации криптографических подписей и аттестаций
    • Хранит подписи и аттестации в настроенных хранилищах

    Контроллер работает как развертывание Kubernetes в пространстве имен tekton-pipelines и отвечает за всю основную функциональность Tekton Chains.

    Компоненты подписи

    Tekton Chains поддерживает несколько механизмов подписи для обеспечения гибкости в том, как защищаются артефакты:

    • Подписчик X509: Использует сертификаты X509 для подписи артефактов
    • Подписчик Cosign: Интегрируется с Cosign для подписи контейнерных образов
    • Подписчики KMS: Поддерживает различные системы управления ключами:
      • GCP KMS
      • AWS KMS
      • Azure KMS
      • HashiCorp Vault

    Эти компоненты подписи отвечают за криптографическую подпись артефактов и аттестаций, сгенерированных Tekton Chains.

    Компоненты хранения

    Tekton Chains может хранить подписи и аттестации в различных хранилищах:

    • Хранилище Tekton: Хранит подписи в виде аннотаций на объектах TaskRun или PipelineRun
    • OCI хранилище: Хранит подписи и аттестации вместе с контейнерными образами в OCI-совместимых реестрах
    • GCS хранилище: Хранит подписи и аттестации в бакетах Google Cloud Storage
    • DocDB хранилище: Хранит подписи и аттестации в документальных базах данных (например, MongoDB, Firestore)
    • Grafeas хранилище: Хранит подписи и аттестации на серверах Grafeas

    Поток данных

    Поток данных в Tekton Chains выполняет следующие шаги:

    1. Наблюдение: Контроллер Chains наблюдает за выполнением TaskRun и PipelineRun в кластере Kubernetes.

    2. Создание снимка: Когда TaskRun или PipelineRun завершается, контроллер создает снимок его состояния, включая входные данные, выходные данные и детали выполнения.

    3. Преобразование формата: Снимок преобразуется в один или несколько стандартных форматов полезной нагрузки (например, ин-тото аттестации, SLSA происхождение).

    4. Подпись: Форматированные полезные нагрузки подписываются с использованием настроенного механизма подписи (X509, Cosign, KMS).

    5. Хранение: Подписанные полезные нагрузки хранятся в настроенных хранилищах.

    6. Проверка: Внешние инструменты могут позже извлекать и проверять эти подписи, чтобы гарантировать целостность артефактов.

    Генерация SLSA происхождения

    Для SLSA (Уровни цепочки поставок для программных артефактов) происхождения Tekton Chains:

    1. Извлекает информацию об входных артефактах (исходный код, зависимости) из результатов TaskRun
    2. Фиксирует детали окружения и процесса сборки
    3. Регистрирует информацию об исходных артефактах (контейнерные образы, бинарные файлы)
    4. Генерирует стандартизированный документ происхождения SLSA
    5. Подписывает документ происхождения
    6. Хранит подписанное происхождение вместе с артефактами или в указанном месте

    Архитектура развертывания

    Tekton Chains разворачивается как контроллер Kubernetes внутри кластера:

    • Пространство имен: Контроллер работает в пространстве имен tekton-chains
    • Развертывание: Одно развертывание управляет подами контроллера
    • Служебная учетная запись: Контроллер использует выделенную служебную учетную запись с соответствующими правами
    • Конфигурация: Конфигурация управляется через ConfigMap под названием chains-config
    • Секреты: Ключи подписи и учетные данные хранятся как секреты Kubernetes

    Соображения по высокой доступности

    Контроллер Tekton Chains может масштабироваться горизонтально для обеспечения высокой доступности:

    • Можно развернуть несколько реплик для дублирования
    • Выбор лидера обеспечивает, чтобы только один экземпляр обрабатывал события в данный момент
    • Состояние поддерживается через ресурсы Kubernetes, что позволяет осуществлять безпроблемный переход при сбое

    Точки интеграции

    Tekton Chains интегрируется с несколькими внешними системами:

    • Tekton Pipelines: Наблюдает за TaskRuns и PipelineRuns из Tekton Pipelines
    • OCI Реестры: Хранит подписи и аттестации вместе с контейнерными образами
    • Системы управления ключами: Интегрируется с различными поставщиками KMS для безопасного управления ключами
    • Журналы прозрачности: Может публиковать аттестации в журналы прозрачности, такие как Rekor
    • Системы проверки: Обеспечивает подписи, которые могут быть проверены системами, такими как Kyverno, OPA или Cosign

    Эта архитектура позволяет Tekton Chains предоставлять комплексные функции безопасности цепочки поставок при сохранении гибкости в развертывании и конфигурации.