Примечание.
Прежде чем продолжить, убедитесь, что вы включили провананс сборки для образов контейнеров, включая настройку атрибута push-to-registry
в действии[, как описано в attest-build-provenance
разделе "Создание провананса сборки для образов](/actions/security-guides/using-artifact-attestations-to-establish-provenance-for-builds#generating-build-provenance-for-container-images) контейнеров". Это необходимо для проверки аттестации контроллера политики.
Начало работы с контроллером допуска Kubernetes
Чтобы настроить контроллер допуска для применения аттестаций артефактов GitHub, необходимо:
- Разверните контроллер политики Sigstore.
- Добавьте GitHub
TrustRoot
и кластерClusterImagePolicy
. - Включите политику в пространстве имен.
Развертывание контроллера политики Sigstore
Мы упаковали контроллер политики Sigstore в виде распределенной диаграммы Helm GitHub. Перед началом работы убедитесь, что у вас есть следующие предварительные требования:
Сначала установите диаграмму Helm, которая развертывает контроллер политики Sigstore:
helm upgrade policy-controller --install --atomic \ --create-namespace --namespace artifact-attestations \ oci://ghcr.io/github/artifact-attestations-helm-charts/policy-controller \ --version v0.12.0-github12
helm upgrade policy-controller --install --atomic \
--create-namespace --namespace artifact-attestations \
oci://ghcr.io/github/artifact-attestations-helm-charts/policy-controller \
--version v0.12.0-github12
При этом контроллер политики устанавливается в artifact-attestations
пространство имен. На этом этапе политики не были настроены, и она не будет применять какие-либо аттестации.
Добавление GitHub TrustRoot
и a ClusterImagePolicy
После развертывания контроллера политики необходимо добавить GitHub TrustRoot
и кластер ClusterImagePolicy
. Используйте диаграмму Helm, предоставляемую для этого. Обязательно замените MY-ORGANIZATION
имя организации GitHub (например, github
или octocat-inc
).
helm upgrade trust-policies --install --atomic \ --namespace artifact-attestations \ oci://ghcr.io/github/artifact-attestations-helm-charts/trust-policies \ --version v0.6.2 \ --set policy.enabled=true \ --set policy.organization=MY-ORGANIZATION
helm upgrade trust-policies --install --atomic \
--namespace artifact-attestations \
oci://ghcr.io/github/artifact-attestations-helm-charts/trust-policies \
--version v0.6.2 \
--set policy.enabled=true \
--set policy.organization=MY-ORGANIZATION
Теперь вы установили корневой каталог доверия GitHub и политику аттестации артефактов в кластере. Эта политика отклонит артефакты, которые не были получены из вашей организации GitHub.
Включение политики в пространстве имен
Предупреждение
Эта политика не будет применяться, пока не укажите, к каким пространствам имен он должен применяться.
Каждое пространство имен в кластере может независимо применять политики. Чтобы включить принудительное применение в пространстве имен, можно добавить в пространство имен следующую метку:
metadata:
labels:
policy.sigstore.dev/include: "true"
После добавления метки политика аттестации артефактов GitHub будет применяться в пространстве имен.
Кроме того, можно выполнить следующие действия:
kubectl label namespace MY-NAMESPACE policy.sigstore.dev/include=true
kubectl label namespace MY-NAMESPACE policy.sigstore.dev/include=true
Сопоставление изображений
По умолчанию политика, установленная с диаграммой trust-policies
Helm, проверяет аттестации для всех образов, прежде чем признать их в кластере. Если вы планируете применять аттестации только для подмножества изображений, можно использовать значения policy.images
Helm и policy.exemptImages
указать список изображений для сопоставления. Эти значения можно задать в списке шаблонов глобов, которые соответствуют именам изображений. Синтаксис globbing использует семантику filepath Go, а также дополнение **
к любой последовательности символов, включая косую черту.
Например, чтобы применить аттестацию для образов, которые соответствуют шаблону ghcr.io/MY-ORGANIZATION/*
и допускаются busybox
без допустимой аттестации, можно выполнить следующее:
helm upgrade trust-policies --install --atomic \ --namespace artifact-attestations \ oci://ghcr.io/github/artifact-attestations-helm-charts/trust-policies \ --version v0.6.2 \ --set policy.enabled=true \ --set policy.organization=MY-ORGANIZATION \ --set-json 'policy.exemptImages=["index.docker.io/library/busybox**"]' \ --set-json 'policy.images=["ghcr.io/MY-ORGANIZATION/**"]'
helm upgrade trust-policies --install --atomic \
--namespace artifact-attestations \
oci://ghcr.io/github/artifact-attestations-helm-charts/trust-policies \
--version v0.6.2 \
--set policy.enabled=true \
--set policy.organization=MY-ORGANIZATION \
--set-json 'policy.exemptImages=["index.docker.io/library/busybox**"]' \
--set-json 'policy.images=["ghcr.io/MY-ORGANIZATION/**"]'
Все шаблоны должны использовать полное имя, даже если изображения происходят из Docker Hub. В этом примере, если мы хотим исключить изображениеbusybox
, необходимо указать полное имя, включая домен и двойную звездочку, чтобы соответствовать всем версиям образа: index.docker.io/library/busybox**
Обратите внимание, что любой образ, который вы планируете признать , должен иметь соответствующий шаблон глобов в списке policy.images
. Если изображение не соответствует шаблону, оно будет отклонено. Кроме того, если изображение соответствует обоим policy.images
и policy.exemptImages
, оно будет отклонено.
Расширенное использование
Чтобы просмотреть полный набор параметров, которые можно настроить с помощью диаграммы Helm, можно выполнить любую из следующих команд. Для параметров контроллера политики:
helm show values oci://ghcr.io/github/artifact-attestations-helm-charts/policy-controller --version v0.12.0-github12
helm show values oci://ghcr.io/github/artifact-attestations-helm-charts/policy-controller --version v0.12.0-github12
Для параметров политики доверия:
helm show values oci://ghcr.io/github/artifact-attestations-helm-charts/trust-policies --version v0.6.2
helm show values oci://ghcr.io/github/artifact-attestations-helm-charts/trust-policies --version v0.6.2
Дополнительные сведения о контроллере политики Sigstore см. в документации по контроллеру политики Sigstore.