• Русский
  • Быстрый старт

    Данное руководство поможет новым пользователям быстро настроить Tekton Chains для обеспечения безопасности своих CI/CD пайплайнов, создавая и проверяя криптографические подписи для Tekton TaskRuns.

    Введение

    Сценарии использования

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

    Оценочное время чтения

    10–15 минут

    Важные замечания

    • Tekton Chains устанавливается по умолчанию в пространстве имен tekton-pipelines при использовании оператора Alauda Devops Pipelines
    • Ключи подписи должны быть надежно защищены; в производственных средах стоит рассмотреть возможность использования системы управления ключами (KMS)
    • В этом руководстве используется наиболее простая конфигурация в демонстрационных целях

    Предварительные требования

    • Кластер Kubernetes с установленными Tekton Pipelines и Tekton Chains через оператор Alauda Devops Pipelines
    • Установленный и настроенный CLI kubectl для доступа к вашему кластеру
    • Установленный tkn (CLI Tekton)
    • Установленный CLI cosign (для генерации ключей и проверки подписей)

    Обзор процесса

    ШагОперацияОписание
    1Генерация ключей подписиСоздание пары ключей для подписи артефактов
    2Настройка Tekton ChainsНастройка Chains для использования хранилища Tekton
    3Запуск тестовой задачиСоздание и выполнение простого TaskRun
    4Проверка подписиИзвлечение и проверка подписи TaskRun

    Пошаговые инструкции

    Шаг 1: Генерация ключей подписи

    Tekton Chains использует криптографические ключи для подписи артефактов. По умолчанию он ищет секрет с именем signing-secrets в пространстве имен Chains.

    1. Установите cosign, если вы этого еще не сделали

    2. Сгенерируйте пару ключей и сохраните ее в виде секрета Kubernetes:

      cosign generate-key-pair k8s://tekton-pipelines/signing-secrets

      Вам будет предложено ввести пароль, который будет сохранен в секрете. Эта команда также сгенерирует публичный ключ cosign.pub в текущей папке, который будет использоваться позже при проверке.

    3. Проверьте, что секрет был создан:

      kubectl get secret signing-secrets -n tekton-pipelines

    Шаг 2: Настройка Tekton Chains

    По умолчанию Tekton Chains настроен для хранения подписей в OCI реестре. Для этого быстрого старта мы настроим его для хранения подписей в виде аннотаций на самом TaskRun.

    1. Настройте Chains для использования хранилища Tekton:

      kubectl patch configmap chains-config -n tekton-pipelines -p='{"data":{"artifacts.taskrun.storage": "tekton"}}'
    2. Установите формат в in-toto (SLSA v0.2):

      kubectl patch configmap chains-config -n tekton-pipelines -p='{"data":{"artifacts.taskrun.format": "in-toto"}}'
    3. Перезапустите контроллер Chains, чтобы применить изменения:

      kubectl delete pod -n tekton-pipelines -l app=tekton-chains-controller

    Шаг 3: Запуск тестовой задачи

    Теперь давайте создадим простой TaskRun, который Chains автоматически подпишет.

    1. Создайте простой Task и TaskRun:

      cat <<EOF | kubectl apply -f -
      apiVersion: tekton.dev/v1
      kind: Task
      metadata:
        name: hello-world
      spec:
        steps:
          - name: hello
            image: alpine
            script: |
              #!/bin/sh
              
              echo 'Hello, Tekton Chains!'
      ---
      apiVersion: tekton.dev/v1
      kind: TaskRun
      metadata:
        name: hello-world-run
      spec:
        taskRef:
          name: hello-world
      EOF
      TIP

      Если вы работаете в среде с ограниченным доступом к интернету, пожалуйста, измените образ на локальный, содержащий sh.

    2. Дождитесь завершения TaskRun:

      kubectl get taskrun hello-world-run -w

      Подождите, пока статус не станет Succeeded.

    Шаг 4: Проверка подписи

    После завершения TaskRun Tekton Chains автоматически подпишет его. Давайте проверим подпись.

    1. Получите UID TaskRun:

      export TASKRUN_UID=$(kubectl get taskrun hello-world-run -o jsonpath='{.metadata.uid}')
    2. Извлеките подпись:

      kubectl get taskrun hello-world-run -o jsonpath="{.metadata.annotations.chains\\.tekton\\.dev/signature-taskrun-$TASKRUN_UID}" | base64 -d > signature
    3. Проверьте подпись с помощью cosign:

      cosign verify-blob-attestation \
        --key cosign.pub \
        --signature signature \
        --type slsaprovenance \
        --check-claims=false \
        --insecure-ignore-tlog \
        /dev/null

      Если все прошло успешно, вы увидите сообщение Verified OK.

    4. Удалите созданные ресурсы:

      kubectl delete taskrun hello-world-run
      kubectl delete task hello-world

    Ожидаемые результаты

    После выполнения этого быстрого старта:

    • У вас есть работающая установка Tekton Chains с ключом подписи
    • Ваши TaskRuns автоматически подписываются по завершении
    • Вы можете проверять подписи, чтобы гарантировать целостность ваших сборок

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

    1. Настроили Chains для подписания контейнерных образов и хранения подписей в вашем реестре
    2. Настроили этап проверки в вашем процессе развертывания
    3. Возможно, использовали облачный KMS для более безопасного управления ключами

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