Signed Provenance
Это руководство помогает новым пользователям быстро настроить 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: -
Примените секрет к сервисному аккаунту:
Шаг 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
- Настроить автоматическую проверку в процессе развертывания
- Настроить правильные политики доступа и безопасности
- Регулярно менять ключи подписи и обновлять конфигурации безопасности