Skip to main content

Erzwingen von Artefaktbescheinigungen mit einer Kubernetes-Zugangssteuerung

Verwenden Sie einen Admission Controller, um Artefaktbescheinigungen in Ihrem Kubernetes-Cluster zu erzwingen.

Hinweis

Stelle vor dem Fortfahren sicher, dass die Buildherkunft für Containerimages aktiviert ist, einschließlich des Festlegens des push-to-registry-Attributs bei der attest-Aktion. Dies ist unter Generieren von Buildherkunft für Containerimages dokumentiert. Dies ist erforderlich, damit der Richtliniencontroller den Nachweis überprüfen kann.

Erste Schritte mit der Kubernetes-Zugangssteuerung

Um eine Zugangssteuerung zum Erzwingen von GitHub-Artefaktbescheinigungen einzurichten, müssen Sie:

  1. Den Sigstore-Richtliniencontroller bereitstellen.
  2.        [GitHub `TrustRoot` und einen `ClusterImagePolicy` zu Ihrem Cluster hinzufügen](#add-the-github-trustroot-and-a-clusterimagepolicy).
    
  3.        [Die Richtlinie in Ihrem Namespace aktivieren](#enable-the-policy-in-your-namespace).
    

Den Sigstore-Richtliniencontroller bereitstellen.

Der Sigstore-Richtliniencontroller wurde gepackt und über ein Helm-Chartzur Verfügung gestellt. Stellen Sie sicher, dass die folgenden Voraussetzungen erfüllt sind, bevor Sie beginnen:

  • Ein Kubernetes-Cluster mit Version 1.27 oder höher
  •         [Helm](https://helm.sh/docs/intro/install/) 3.0 oder höher
    
  •         [kubectl](https://kubernetes.io/docs/tasks/tools/)
    

Installieren Sie zunächst das Helm-Diagramm, das den Sigstore-Richtliniencontroller bereitstellt:

Bash
helm upgrade policy-controller --install --atomic \
  --create-namespace --namespace artifact-attestations \
  oci://ghcr.io/sigstore/helm-charts/policy-controller \
  --version 0.10.5

Dadurch wird der Richtliniencontroller im artifact-attestations-Namespace installiert. Zu diesem Zeitpunkt wurden keine Richtlinien konfiguriert, und es werden keine Beglaubigungen erzwungen.

Hinzufügen von GitHub TrustRoot und ClusterImagePolicy

Nachdem der Richtliniencontroller bereitgestellt wurde, müssen Sie GitHub TrustRoot und ClusterImagePolicy zu Ihrem Cluster hinzufügen. Verwenden Sie dazu das Helm-Diagramm. Stellen Sie sicher, dass MY-ORGANIZATION durch den Namen Ihrer GitHub-Organisation (z. B. github oder octocat-inc) ersetzt wird.

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

Sie haben nun den GitHub-Vertrauensstamm und eine Artefaktnachweisrichtlinie in Ihrem Cluster installiert. Diese Richtlinie lehnt Artefakte ab, die nicht aus Ihrer GitHub-Organisation stammen.

Aktivieren Sie die Richtlinie in Ihrem Namespace

Warnung

Diese Richtlinie wird erst erzwungen, wenn Sie angeben, auf welche Namespaces sie angewendet werden soll.

Jeder Namespace in Ihrem Cluster kann unabhängig Richtlinien erzwingen. Um die Durchsetzung in einem Namespace zu aktivieren, können Sie dem Namespace die folgende Bezeichnung hinzufügen:

metadata:
  labels:
    policy.sigstore.dev/include: "true"

Nachdem das Label hinzugefügt wurde, wird die GitHub Artefakt-Nachweisrichtlinie im Namespace durchgesetzt werden.

Alternativ können Sie Folgendes ausführen:

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

Abgleichen von Images

Standardmäßig überprüft die mit dem Helm-Diagramm trust-policies installierte Richtlinie Nachweise für alle Images, bevor sie in den Cluster aufgenommen werden. Wenn Sie nur Nachweise für eine Teilmenge von Images durchsetzen möchten, können Sie mithilfe der Helm-Werte policy.images und policy.exemptImages eine Liste von Images angeben, mit denen ein Abgleich erfolgen soll. Diese Werte können auf eine Liste von Glob-Mustern festgelegt werden, die den Imagenamen entsprechen. Die Globbing-Syntax nutzt die filepath-Semantik von Go und zusätzlich **, um alle Zeichensequenzen einschließlich Schrägstrichen abzugleichen.

Um z. B. Nachweise für Images durchzusetzen, die dem Muster ghcr.io/MY-ORGANIZATION/* entsprechen und busybox ohne gültigen Nachweis zulassen, können Sie Folgendes ausführen:

Bash
helm upgrade trust-policies --install --atomic \
 --namespace artifact-attestations \
 oci://ghcr.io/github/artifact-attestations-helm-charts/trust-policies \
 --version v0.7.0 \
 --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/**"]'

Alle Muster müssen den vollqualifizierten Namen verwenden, auch wenn die Images von Docker Hub stammen. Wenn das Bild busybox in diesem Beispiel ausgenommen werden soll, müssen wir den vollständigen Namen einschließlich der Domain und dem Doppelstern-Glob verwenden, um alle Bildversionen abzugleichen: index.docker.io/library/busybox**.

Beachte, dass jedes Image, das du zulassen möchtest, ein passendes Glob-Muster in der _ Liste_ aufweistpolicy.images. Wenn ein Image keinem Muster entspricht, wird es abgelehnt. Wenn ein Bild mit policy.images und policy.exemptImages übereinstimmt, wird es außerdem abgelehnt.

Wenn dein GitHub Enterprise-Konto über eine Unterdomäne auf GHE.com verfügt, musst du für die vertrauenswürdige GitHub-Domäne einen Wert angeben. Dieser Wert wird verwendet, um die vertrauenswürdigen Materialien abzurufen, die mit der Datenresidenz-Region verknüpft sind, die Ihr GitHub Enterprise-Konto hosten. Dieser Wert kann gefunden werden, indem Sie sich mit dem gh-CLI-Tool bei Ihrem Enterprise-Konto anmelden und den folgenden Befehl ausführen:

Bash
gh api meta --jq .domains.artifact_attestations.trust_domain

Dieser Wert muss beim Installieren des trust-policies-Diagramms wie folgt hinzugefügt werden:

Bash
--set-json 'policy.trust.githubTrustDomain="YOUR-GHEC-TRUST-DOMAIN"'

Erweiterte Verwendung

Um den vollständigen Satz von Optionen anzuzeigen, die Sie mit dem Helm-Diagramm konfigurieren können, können Sie einen der folgenden Befehle ausführen. Für Richtliniencontrolleroptionen:

Bash
helm show values oci://ghcr.io/sigstore/helm-charts/policy-controller --version 0.10.5

Optionen für Vertrauensrichtlinien:

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

Weitere Informationen zum Sigstore-Richtliniencontroller finden Sie in der Dokumentation zum Sigstore-Richtliniencontroller.