DEV Community

Uhltak Therestismysecret
Uhltak Therestismysecret

Posted on

Cosign: Wie sich Container-Signierung in der Pipeline implementieren lässt

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
Enter fullscreen mode Exit fullscreen mode

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 
Enter fullscreen mode Exit fullscreen mode

Top comments (0)