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-build-provenance
-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:
- Den Sigstore-Richtliniencontroller bereitstellen.
- GitHub
TrustRoot
und einenClusterImagePolicy
zu Ihrem Cluster hinzufügen. - Die Richtlinie in Ihrem Namespace aktivieren.
Den Sigstore-Richtliniencontroller bereitstellen.
Wir haben den Sigstore-Richtliniencontroler als über GitHub verteiltes Helm-Diagramm verpackt. Stellen Sie sicher, dass die folgenden Voraussetzungen erfüllt sind, bevor Sie beginnen:
Installieren Sie zunächst das Helm-Diagramm, das den Sigstore-Richtliniencontroller bereitstellt:
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
Dadurch wird der Richtliniencontroller im artifact-attestations
-Namespace installiert. Zu diesem Zeitpunkt wurden keine Richtlinien konfiguriert, und es werden keine Nachweise erwzungen.
Hinzufügen des 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.
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
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 der 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 die Bezeichnung hinzugefügt wurde, wird die GitHub-Artefaktnachweisrichtlinie im Namespace durchgesetzt.
Alternativ können Sie Folgendes ausführen:
kubectl label namespace MY-NAMESPACE policy.sigstore.dev/include=true
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 Globmustern 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:
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/**"]'
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 Domäne und der Doppelstern-Glob angeben, um allen Bildversionen zu finden: index.docker.io/library/busybox**
.
Beachten Sie, dass Images, die Sie zulassen möchten, ein passendes Globmuster in der Liste policy.images
aufweisen müssen. 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:
gh api meta --jq .domains.artifact_attestations.trust_domain
gh api meta --jq .domains.artifact_attestations.trust_domain
Dieser Wert muss beim Installieren des trust-policies
-Diagramms wie folgt hinzugefügt werden:
--set-json 'policy.trust.githubTrustDomain="YOUR-GHEC-TRUST-DOMAIN"'
--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:
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
Für Vertrauensrichtlinienoptionen:
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
Weitere Informationen zum Sigstore-Richtliniencontroller finden Sie in der Dokumentation zum Sigstore-Richtliniencontroller.