Aller au contenu principal
Sommaire de la formation

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.

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 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
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
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.