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