Подписанное происхождение
Это руководство поможет новым пользователям быстро настроить Tekton Chains для защиты их CI/CD конвейеров путем генерации и проверки SLSA Provenance для Tekton PipelineRuns.
Содержание
ВведениеСценарии использованияОценочное время чтенияВажные замечанияТребованияОбзор процессаПошаговые инструкцииШаг 1: Генерация ключей подписиШаг 2: Настройка аутентификацииШаг 3: Настройка Tekton ChainsШаг 4: Создание примерного конвейераШаг 5: Запуск примерного конвейераШаг 6: Ожидание подписи PipelineRunШаг 7: Получение образа из PipelineRunШаг 8: Проверка образа и аттестацииОжидаемые результатыСсылкиВведение
Сценарии использования
Tekton Chains помогает защитить вашу цепочку поставок программного обеспечения, автоматически генерируя SLSA Provenance для ваших артефактов сборки. В этом руководстве показано, как настроить Tekton Chains, создать ключ для подписи, запустить пример конвейера и проверить его SLSA Provenance.
Оценочное время чтения
15-20 минут
Важные замечания
- Tekton Chains устанавливается по умолчанию в пространстве имен
tekton-pipelinesпри использовании Alauda Devops Pipelines Operator - Ключи для подписи должны храниться в безопасности; в производственных средах рекомендуется использовать систему управления ключами (KMS)
- В этом руководстве используется упрощенный рабочий процесс с генерацией Containerfile непосредственно в конвейере
- В производственных средах следует использовать правильное управление исходным кодом и систему контроля версий
Требования
- Kubernetes кластер с установленными Tekton Pipelines и Tekton Chains
- Реестр с разрешением на отправку образов
- Установленный и настроенный CLI
kubectlдля доступа к кластеру - Установленный CLI инструмент
cosign - Установленный CLI инструмент
jq
Обзор процесса
Пошаговые инструкции
Шаг 1: Генерация ключей подписи
Для подробностей смотрите Signing Key Configuration
Tekton Chains использует криптографические ключи для подписи артефактов. По умолчанию он ищет секрет с именем signing-secrets в пространстве имен Chains.
-
Установите cosign, если он еще не установлен
-
Сгенерируйте пару ключей и сохраните их как секрет Kubernetes:
TIPЭтот пароль будет сохранен в секрете Kubernetes с именем
signing-secretsв пространстве именtekton-pipelines. -
Проверьте, что секрет создан:
Шаг 2: Настройка аутентификации
Для подробностей смотрите Authentication for Chains
Настройте учетные данные реестра для отправки образов:
-
Создайте секрет с учетными данными:
-
Установите ключ
config.json: -
Измените service account для использования секрета:
Шаг 3: Настройка Tekton Chains
Для подробностей смотрите Chains Configuration
Настройте Tekton Chains для хранения артефактов в формате OCI:
Шаг 4: Создание примерного конвейера
Это ресурс Pipeline, который используется для сборки образа и генерации аттестации SLSA Provenance.
В производственных средах следует:
- Использовать задачу
git-cloneдля получения исходного кода из вашего репозитория - Строить образ, используя Containerfile, который находится в вашем исходном коде
- Такой подход обеспечивает правильное управление версиями и разделение кода и конфигурации конвейера
Объяснение полей YAML
params: Параметры конвейера.generate-containerfile: Скрипт для генерации Containerfile для сборки образа.image: Адрес целевого образа для сборки.
tasks: Задачи конвейера.generate-containerfile: Задача для генерации Containerfile.build-image: Задача для сборки и отправки образа в реестр.params.TLS_VERIFY: Проверять ли TLS-сертификат реестра.
results: Результаты конвейера.first_image_ARTIFACT_OUTPUTS: Результат первого артефакта образа.digest: Дайджест образа.uri: URI образа.
- Этот формат соответствует Tekton Chains, см. Tekton Chains Type Hinting для подробностей.
workspaces: Рабочие области конвейера.source: Рабочее пространство для исходного кода.registryconfig: Рабочее пространство для конфигурации реестра распространения.
Необходимо настроить конфигурацию
params:generate-containerfiledefault: Измените адрес исходного образа.
image:default: Адрес целевого образа для сборки.
Сохраните в файл с именем chains.demo-1.pipeline.yaml и примените командой:
Шаг 5: Запуск примерного конвейера
Это ресурс PipelineRun, который используется для запуска конвейера.
Объяснение полей YAML
pipelineRef: Конвейер для запуска.name: Имя конвейера.
taskRunTemplate: Шаблон запуска задачи.serviceAccountName: Сервисный аккаунт для конвейера.
workspaces: Рабочие области конвейера.registryconfig: Рабочее пространство для конфигурации реестра распространения.source: Рабочее пространство для исходного кода.
Необходимо настроить конфигурацию
taskRunTemplate:serviceAccountName: Сервисный аккаунт, подготовленный на предыдущем шаге ServiceAccount Configuration.
workspaces:registryconfig:secret.secretName: Секрет реестра, подготовленный на предыдущем шаге Creating Registry Credentials.
source:volumeClaimTemplate.spec.storageClassName: Имя класса хранения для шаблона запроса тома.
Сохраните в файл с именем chains.demo-1.pipelinerun.yaml и примените командой:
Дождитесь завершения PipelineRun.
Шаг 6: Ожидание подписи PipelineRun
Дождитесь, пока у PipelineRun появится аннотация chains.tekton.dev/signed: "true".
Когда у PipelineRun появится аннотация chains.tekton.dev/signed: "true", это означает, что образ подписан.
Шаг 7: Получение образа из PipelineRun
Этот образ будет использоваться для проверки подписи.
Шаг 8: Проверка образа и аттестации
-
Получите публичный ключ подписи
Если у вас нет прав, обратитесь к администратору за публичным ключом.
-
Проверьте подпись
Если успешно, вы увидите следующий вывод:
-
Проверьте аттестацию SLSA provenance
Если успешно, вы увидите следующий вывод:
-
Извлеките полезную нагрузку с помощью jq:
Полезная нагрузка аттестации
Ожидаемые результаты
После выполнения этого руководства:
- У вас настроен рабочий Tekton Chains с ключом подписи
- Ваши PipelineRuns автоматически подписываются после завершения, и образ содержит аттестацию SLSA Provenance
- Вы можете проверять подписи и аттестации для обеспечения целостности сборок
Это руководство предоставляет основу для реализации безопасности цепочки поставок в ваших CI/CD конвейерах. В производственной среде следует:
- Использовать правильное управление исходным кодом и систему контроля версий
- Реализовать безопасное управление ключами с использованием облачного KMS
- Настроить автоматическую проверку в процессе развертывания
- Настроить правильные политики доступа и безопасности
- Регулярно менять ключи подписи и обновлять настройки безопасности