Was ist eine Kubernetes-Zugangssteuerung?
Mit Artefaktbescheinigungen können Sie fälschungssichere Herkunfts- und Integritätsgarantien für die von Ihnen entwickelte Software erstellen. Personen, die Ihre Software nutzen, können wiederum überprüfen, wo und wie Ihre Software erstellt wurde.
Kubernetes-Zugangssteuerungen sind Plug-Ins, die das Verhalten des Kubernetes-API-Servers steuern. Sie werden häufig verwendet, um Sicherheitsrichtlinien und bewährte Methoden in einem Kubernetes-Cluster zu erzwingen.
Mit dem Open Source-Projekt des Sigstore-Richtliniencontrollers können Sie Ihrem Kubernetes-Cluster eine Zugangssteuerung hinzufügen, die Artefaktbescheinigungen erzwingen kann. Auf diese Weise können Sie sicherstellen, dass nur Artefakte mit gültigen Nachweisen bereitgestellt werden können.
Zum Installieren des Controllers bieten wir zwei Helm-Diagramme an: eines zum Bereitstellen des Sigstore-Richtliniencontrollers und eines zum Laden des GitHub-Vertrauensstamms und einer Standardrichtlinie.
Informationen zu Vertrauenswurzeln und -richtlinien
Der Sigstore-Richtliniencontroller ist in erster Linie mit Vertrauenswurzeln und Richtlinien konfiguriert, dargestellt durch die benutzerdefinierten Ressourcen TrustRoot
und ClusterImagePolicy
. TrustRoot
stellt einen vertrauenswürdigen Verteilungskanal für das öffentliche Schlüsselmaterial dar, das zum Überprüfen von Nachweisen verwendet wird. ClusterImagePolicy
stellt eine Richtlinie zum Erzwingen von Nachweisen für Bilder dar.
TrustRoot
kann auch einen TUF-Repositorystamm enthalten, sodass Ihr Cluster kontinuierlich und sicher Aktualisierungen seines vertrauenswürdigen öffentlichen Schlüsselmaterials empfängt. Wenn nicht angegeben, verwendet ClusterImagePolicy
standardmäßig das Schlüsselmaterial der Schlüsselmaterial der Open Source Sigstore Public Good Instance. Bei der Überprüfung der für private Repositorys generierten Nachweise muss ClusterImagePolicy
auf GitHub TrustRoot
verweisen.
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.10.0-github8
helm upgrade policy-controller --install --atomic \
--create-namespace --namespace artifact-attestations \
oci://ghcr.io/github/artifact-attestations-helm-charts/policy-controller \
--version v0.10.0-github8
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.1 \ --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.1 \
--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
Warning
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.1 \ --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.1 \
--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.
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.10.0-github8
helm show values oci://ghcr.io/github/artifact-attestations-helm-charts/policy-controller --version v0.10.0-github8
Für Vertrauensrichtlinienoptionen:
helm show values oci://ghcr.io/github/artifact-attestations-helm-charts/trust-policies --version v0.6.1
helm show values oci://ghcr.io/github/artifact-attestations-helm-charts/trust-policies --version v0.6.1
Weitere Informationen zum Sigstore-Richtliniencontroller finden Sie in der Dokumentation zum Sigstore-Richtliniencontroller.