Scanning et assets: Sigstore Verifiers avec cosign keyless et vault transit
coolibra109 vues
4. Scanning et assets
-
Sigstore Verifiers
Sigstore Verifiers
Mécanismes de vérification qui valident l’authenticité et la provenance des images signées (via Sigstore/cosign), garantissant qu’elles proviennent de sources de confiance avant exécution.
- Signer les images de notre registry interne
- Mode keyless avec vault
- Il faut deployer vault server
- Avoir un vault server et activer le kv transit
- Mode keyless avec vault
export TRANSIT_SECRET_ENGINE_PATH=transit-cosign
export VAULT_ADDR=http://10.10.10.249:8200
export VAULT_TOKEN=hvs.CAESIFcOjw_96jIcdYcGHmSnA_hF_kI5YK0tn708lOh
# Sans la varibale TRANSIT_SECRET_ENGINE_PATH,
# on peut directment utliser cette commande: vault secrets enable -path="someotherpath" transit
vault secrets enable -path="transit-cosign" transit
-
- Activer la clé dans kv transit et sauvegarder le clé publique cosign.pub generée dans le repertoire courant
cosign generate-key-pair --kms hashivault://cosign-key
-
- Signer une image
docker login harbor.techledger.io
IMAGE_DIGEST=harbor.techledger.io/techledger-prod/front/web-app@sha256:caa5ccf9b2c8e7f0a120ff15f3e6f8d9a52f80ae32a1368cdf4a0b02c285d791
cosign sign --yes --tlog-upload=false --key hashivault://cosign-key $IMAGE_DIGEST

- Ajouter Sigstore Verifiers dans neuvector
- Clic sur Assets > Sigstore Verifiers > Add

-
- Clic sur le sigstore vault-transit et ajouter un Verifier en ajoutant le clé publique cosign.pub generée et sauvegardée précédemment.


-
- On relance le scan des images de harbor dans Assets > registries et lancer le scan de des images harbor
- Après le scan clic sur une image, on doit voir à droite l'état de sigstore virifier.
- On relance le scan des images de harbor dans Assets > registries et lancer le scan de des images harbor

- On peut appliquer une Admission Control pour autoriser uniquement le déploiement des images signées dans le namespace prod


-
- Test avec une app nginx dans le namespace prod
- Créer le namespace prod
- Test avec une app nginx dans le namespace prod
kubectl create ns prod
-
- app-nginx.yaml
apiVersion: v1
kind: Pod
metadata:
name: my-pod
labels:
app: my-app
spec:
containers:
- name: my-container
env:
- name: password
value: "iaHohnu7Bephi0quisha"
image: nginx # harbor.techledger.io/techledger-prod/front/web-app:1.0 nginx
resources:
requests:
memory: "50Mi"
cpu: "50m"
limits:
memory: "100Mi"
cpu: "50m"
kubectl apply -f app-nginx.yaml
-
- L'Admission Control a bloqué le déploiement car l'image nginx n'est pas signée.

-
- En plus de bloquer, neuvector lève une alerte Critical dans les notifications.

-
- app-prod.yaml
- Ajouter l'image signée harbor.techledger.io/techledger-prod/front/web-app:1.0
- app-prod.yaml
apiVersion: v1
kind: Pod
metadata:
name: my-pod
labels:
app: my-app
spec:
containers:
- name: my-container
env:
- name: password
value: "iaHohnu7Bephi0quisha"
image: harbor.techledger.io/techledger-prod/front/web-app:1.0
resources:
requests:
memory: "50Mi"
cpu: "50m"
limits:
memory: "100Mi"
cpu: "50m"
kubectl apply -f app-prod.yaml
-
- Le deploiement est passé donc l'image utilisée est signée et conforme.

Commentaires
Connectez-vous pour rejoindre la discussion.
Aucun commentaire pour le moment.