Skip to main content

Применение аттестаций артефактов с помощью контроллера допуска Kubernetes

Используйте контроллер допуска для принудительного применения аттестаций артефактов в кластере Kubernetes.

О контроллере допуска Kubernetes

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

Контроллеры допуска Kubernetes — это подключаемые модули, которые управляют поведением сервера API Kubernetes. Они обычно используются для применения политик безопасности и рекомендаций в кластере Kubernetes.

С помощью проекта контроллера политики Sigstore открытый код можно добавить контроллер допуска в кластер Kubernetes, который может применять аттестации артефактов. Таким образом, можно обеспечить развертывание только артефактов с допустимыми аттестациями.

Чтобы установить контроллер, мы предлагаем две диаграммы Helm: один для развертывания контроллера политики Sigstore, а другой для загрузки корневого каталога доверия GitHub и политики по умолчанию.

Сведения о корнях доверия и политиках

Контроллер политики Sigstore в основном настраивается с корнем доверия и политиками, представленными пользовательскими ресурсами TrustRoot и ClusterImagePolicy. A TrustRoot представляет доверенный канал распространения для материала открытого ключа, используемого для проверки аттестаций. Представляет ClusterImagePolicy политику для применения аттестаций на изображениях.

Также TrustRoot может содержать корневой каталог репозитория TUF , что позволяет кластеру непрерывно и безопасно получать обновления для его доверенного материала открытого ключа. Если не указано, по умолчанию используется ClusterImagePolicy ключевой материал открытый код Sigstore Public Good Instance. При проверке аттестаций, созданных для частных репозиториев, ClusterImagePolicy необходимо ссылаться на GitHub TrustRoot.

Начало работы с контроллером допуска Kubernetes

Чтобы настроить контроллер допуска для применения аттестаций артефактов GitHub, необходимо:

  1. Разверните контроллер политики Sigstore.
  2. Добавьте GitHub TrustRoot и кластерClusterImagePolicy.
  3. Включите политику в пространстве имен.

Развертывание контроллера политики Sigstore

Мы упаковали контроллер политики Sigstore в виде распределенной диаграммы Helm GitHub. Перед началом работы убедитесь, что у вас есть следующие предварительные требования:

  • Кластер Kubernetes с версией 1.27 или более поздней
  • Helm 3.0 или более поздней версии
  • kubectl

Сначала установите диаграмму Helm, которая развертывает контроллер политики Sigstore:

Bash
helm install policy-controller --atomic \
  --create-namespace --namespace artifact-attestations \
  oci://ghcr.io/github/artifact-attestations-helm-charts/policy-controller \
  --version v0.9.0-github3

При этом контроллер политики устанавливается в artifact-attestations пространство имен. На этом этапе политики не были настроены, и она не будет применять какие-либо аттестации.

Добавление GitHub TrustRoot и a ClusterImagePolicy

После развертывания контроллера политики необходимо добавить GitHub TrustRoot и кластер ClusterImagePolicy . Используйте диаграмму Helm, предоставляемую для этого. Обязательно замените MY-ORGANIZATION имя организации GitHub (например, github или octocat-inc).

Bash
helm install trust-policies --atomic \
 --namespace artifact-attestations \
 oci://ghcr.io/github/artifact-attestations-helm-charts/trust-policies \
 --version v0.4.0 \
 --set policy.enabled=true \
 --set policy.organization=MY-ORGANIZATION

Теперь вы установили корневой каталог доверия GitHub и политику аттестации артефактов в кластере. Эта политика отклонит артефакты, которые не были получены из вашей организации GitHub.

Включение политики в пространстве имен

Warning

Эта политика не будет применяться, пока не укажите, к каким пространствам имен он должен применяться.

Каждое пространство имен в кластере может независимо применять политики. Чтобы включить принудительное применение в пространстве имен, можно добавить в пространство имен следующую заметку:

metadata:
  annotations:
    policy.sigstore.dev/include: true

После добавления заметки политика аттестации артефактов GitHub будет применяться в пространстве имен.

Кроме того, можно выполнить следующие действия:

Bash
kubectl label namespace MY-NAMESPACE policy.sigstore.dev/include=true

Расширенное использование

Чтобы просмотреть полный набор параметров, которые можно настроить с помощью диаграммы Helm, можно выполнить любую из следующих команд. Для параметров контроллера политики:

Bash
helm show values oci://ghcr.io/github/artifact-attestations-helm-charts/policy-controller --version v0.9.0-github3

Для параметров политики доверия:

Bash
helm show values oci://ghcr.io/github/artifact-attestations-helm-charts/trust-policies --version v0.4.0

Дополнительные сведения о контроллере политики Sigstore см. в документации по контроллеру политики Sigstore.