Cosign: Container-Signierung in der Pipeline
Was ist Container-Signierung?
Container-Signierung ist ein wichtiger Aspekt von Supply Chain Security. Sie gewährleistet, dass die vertrauenswürdigen Images und ihren Inhalt erhalten bleiben, wenn sie von einem Repository zum anderen übertragen werden. Ohne Signierung können Angreifer leicht in der Pipeline manipulieren oder Image-Dateien ersetzen.
Cosign - Einführendes Beispiel
Cosign ist eine Werkzeug-Unterstützung zur Signierung und Vertrauensbewertung von Containern sowie deren Inhalte. Wir können es leicht in unsere Pipeline einbauen, um sicherzustellen, dass unsere Container Images ordnungsgemäß signiert sind.
Beispiel: Lassen Sie uns eine Beispiel Pipeline in GitLab verifizieren:
// .gitlab-ci.yml
image: docker:20
services:
- cosign
before_script:
- docker run --rm -v $(pwd):/context -w /context cosign cosign init --key /tmp/key.key
build:
stage: build
script:
- docker build -t $IMAGE_NAME .
- cosign sign --key /tmp/key.key $IMAGE_NAME
Wir haben hier ein docker:20 um eine Umgebung für Tests bereitzustellen. cosign init --key /tmp/key.key erstellt eine neue Signaturdatei, die für die Anmeldung benutzt wird. Schließlich signieren wir $IMAGE_NAME mit der cosign-Kommandozeile.
In unserer Pipeline sollten wir nur images akzeptieren, die von Cosign signiert sind. Wir können das erreichen, indem wir docker-Befehle erst nach erfolgreichem Szenario ausführen. Um das zu erreichen:
bash
// .gitlab-ci.yml
image: docker:20
...
build:
...
artifacts:
paths:
- results.json
when: on_success
expire_in: 1 week
image:verify:
stage: testing
script:
- docker inspect $IMAGE_NAME | grep
Top comments (0)