|
Dieses Dokument wurde mithilfe automatisierter maschineller Übersetzungstechnologie übersetzt. Wir bemühen uns um korrekte Übersetzungen, übernehmen jedoch keine Gewähr für die Vollständigkeit, Richtigkeit oder Zuverlässigkeit der übersetzten Inhalte. Im Falle von Abweichungen ist die englische Originalversion maßgebend und stellt den verbindlichen Text dar. |
|
Dies ist eine unveröffentlichte Dokumentation für Admission Controller 1.34-dev. |
Überprüfen Sie die Bilder der Rancher-Anwendungssammlung
Dieser Abschnitt beschreibt, wie man Anwendungen und Bilder aus der Rancher-Anwendungssammlung mit SUSE Security Admission Controller überprüft.
Sie führen die Bildüberprüfung durch, indem Sie die Bildsignaturen überprüfen-Richtlinie bereitstellen und die PolicyServer so konfigurieren, dass sie die Signaturschichten der Bilder aus der Anwendungssammlung abrufen.
|
Sie benötigen ein Zugriffstoken oder eine Dienstkonto-Authentifizierung für die Anwendungssammlung. |
Authentifizierung bei der Rancher-Anwendungssammlung
Befolgen Sie die Dokumentation zur Anwendungssammlung, erstellen Sie ein Zugriffstoken und konfigurieren Sie den Cluster, um aus dem Registry der Anwendungssammlung mit einem Docker Config Secret abzurufen:
$ kubectl create secret docker-registry application-collection \
--docker-server=dp.apps.rancher.io \
--docker-username=<mymail> \
--docker-password=<mytoken>
Erstellen Sie ein Secret für den PolicyServer, damit er aus der Rancher-Anwendungssammlung abrufen kann
Der verwendete PolicyServer benötigt eine Konfiguration, damit er die Bildschichten abrufen kann, die die Signaturen enthalten.
Befolgen Sie die private Registries Anleitung für Policy-Server, um ein Docker Config Secret im PolicyServer-Namespace zu erstellen. Sie tun dies, indem Sie ein Secret mit denselben Inhalten wie das vorherige application-collection instanziieren.
Für den PolicyServer default, installiert mit dem kubewarden-defaults Helm-Chart unter dem kubewarden Namespace, wäre es:
$ kubectl create secret docker-registry application-collection-kw -n kubewarden \
--docker-server=dp.apps.rancher.io \
--docker-username=<mymail> \
--docker-password=<mytoken>
Konfigurieren Sie die PolicyServer, um das neue Secret zu verwenden
Wenn Sie den PolicyServer default aus dem kubewarden-defaults Helm-Chart verwenden, konfigurieren Sie ihn mit dem imagePullSecret application-collection-kw. Dies im selben Namespace und erfolgt durch Setzen der folgenden Werte für das Chart:
$ helm upgrade -i --wait --namespace kubewarden \
--create-namespace kubewarden-defaults kubewarden/kubewarden-defaults \
--reuse-values \
--set policyServer.imagePullSecret=application-collection-kw
Wenn Sie andere PolicyServer verwenden, setzen Sie deren spec.imagePullSecret. Das Secret muss im selben Namespace wie der PolicyServer sein.
Wenden Sie die Richtlinie an.
Sie können eine ClusterAdmissionPolicy anwenden, indem Sie die Bildsignaturen überprüfen Richtlinie nutzen. Diese Richtlinie überprüft alle Containerbilder von dp.apps.rancher.io/containers/*. Die Richtlinie unterstützt OCI-Registries und Artefakte.
Sie können die Richtlinieneinstellungen mit dem öffentlichen Schlüssel aus der Anwendungssammlung (zum Zeitpunkt des Schreibens) im pubKeys Array konfigurieren.
$ kubectl apply -f - <<EOF
apiVersion: policies.kubewarden.io/v1
kind: ClusterAdmissionPolicy
metadata:
annotations:
artifacthub/pkg: verify-image-signatures/verify-image-signatures/0.2.9
name: check-appcollection-signatures
spec:
backgroundAudit: true
mode: protect
module: ghcr.io/kubewarden/policies/verify-image-signatures:v0.2.9
mutating: true
policyServer: default
# On first policy call, the policy-server downloads the image layers to
# verify the signatures. Later on it's cached. It may be useful to increase
# this timeout:
timeoutSeconds: 30 # default 10 seconds.
rules:
- apiGroups: [""]
apiVersions: ["v1"]
resources: ["pods"]
operations: ["CREATE", "UPDATE"]
- apiGroups: [""]
apiVersions: ["v1"]
resources: ["replicationcontrollers"]
operations: ["CREATE", "UPDATE"]
- apiGroups: ["apps"]
apiVersions: ["v1"]
resources: ["deployments", "replicasets", "statefulsets", "daemonsets"]
operations: ["CREATE", "UPDATE"]
- apiGroups: ["batch"]
apiVersions: ["v1"]
resources: ["jobs", "cronjobs"]
operations: ["CREATE", "UPDATE"]
settings:
modifyImagesWithDigest: true
rule: PublicKey
signatures:
- image: dp.apps.rancher.io/containers/*
pubKeys:
# Note: this array constitutes an AND in validation, not an OR.
- |-
-----BEGIN PUBLIC KEY-----
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA02FtEt5gBywiyxbmkVsb
CujcBg5lur0kpEbfDk10gCcs9shVEqEO3ZsOXHursgoaDAWqdPtsYhsgczGeJz9w
Aw+r6BuRV8YOkE37A8s/7IOQUW0tlqtnt11OKhIiZ9+e5l3ed2H1ymKQO3dgreSy
rShqYdA3hrItswyp41ApF6zhjSPlR6lAmq3X4wMYLAPptmzfxigTnR4hxB5UNPhs
i2qA4vLrUM/i+NohECuLr1EAymvupH26HLEdM+eZnlQn+WbhIP5Grc4ba7XrBv7K
kywgTC7CxkiJZR0mUcUD2wTX/Je8Ewj6oPSalx09e2jtzvmU5Kr9XUyMF7Zsj5CA
IwIDAQAB
-----END PUBLIC KEY-----
EOF
$ kubectl apply -f mypolicy.yml
$ kubectl get admissionpolicies -n default # wait for status active
Um es zu testen, stellen Sie ein Pod mit einem signierten Bild aus der Anwendungssammlung bereit:
$ kubectl run nginx --image [dp.apps.rancher.io/containers/nginx:1.24.0](http://dp.apps.rancher.io/containers/nginx:1.24.0) --overrides='{"spec": {"imagePullSecrets":[{"name": "application-collection"}]}}'
pod/nginx created
Sie können die Protokolle Ihres PolicyServer-Pods einsehen, um zu sehen, dass die Überprüfung stattgefunden hat.