Hoppa till innehåll

47-dagarscertifikat kommer. Är du redo?

Agera nu →

Moderna strategier för att signera och verifiera containeravbildningar med CodeSign Secure 

Moderna strategier för att signera och verifiera containeravbildningar med CodeSign Secure

Beskrivning 

Attacker i leveranskedjan för programvara är inte bara en teoretisk risk längre; de ​​händer, och de slår hårt. Incidenter som SolarWinds brott och Log4Shell-sårbarheten gjorde det smärtsamt tydligt att angripare inte längre bara riktar in sig på din kod; de jagar allt som rör den, inklusive verktyg, bibliotek och containrar du förlitar dig på. 

I den här verkligheten är det inte bra att signera och verifiera containeravbildningar; det är ett måste. Om du använder osignerade avbildningar eller hoppar över signaturkontroller under distributionen, lämnar du dörren vidöppen för angripare att smyga in skadlig kod utan att du ens märker det. 

Det är där vår CodeSign Secure kommer in i bilden. 

CodeSign Secure gör det enkelt att lägga till digitala signaturer till dina containeravbildningar och verifiera dem innan de ens når produktionsläget. Oavsett om du kör en snabb CI/CD-pipeline eller hanterar hundratals mikrotjänster, hjälper det dig att låsa upp din containerförsörjningskedja utan att sakta ner något. 

I de kommande avsnitten går vi igenom hur vår CodeSign Secure passar in i ditt arbetsflöde, hur den säkrar dina bilder med HSM-backade nycklar och hur du kan tillämpa signaturkontroller innan något distribueras. 

Kodsigneringens roll i DevSecOps 

DevOps handlar om hastighet, att skicka uppdateringar snabbt, automatisera allt och hålla saker igång. Men med den hastigheten kommer risker. Ju snabbare du levererar kod, desto större är risken att något otillförlitligt slinker igenom. Det är där DevSecOps kommer in, och bakar in säkerhet direkt i processen istället för att lägga till den i slutet. 

Ett av de bästa sätten att bygga upp det förtroendet är med kodsignering. När du signerar containeravbildningar stämplar du dem i princip med en sigill som säger "Detta kommer från oss, och det har inte förstörts". Det är en enkel kontroll som gör stor skillnad för att säkerställa att det du kör i produktion är exakt vad du tänkt dig att bygga. 

Vår plattform, CodeSign Secure, kopplas in i din CI/CD pipeline Så signering är inte en separat uppgift; det är bara en del av bygget. Varje avbildning som skapas och skickas kan signeras automatiskt. Och innan den distribueras kan den verifiera signaturen för att säkerställa att ingenting har manipulerats längs vägen. 

Det handlar om att sätta säkerheten på autopilot. Du ska inte behöva välja mellan att agera snabbt och att vara säker med vår plattform; du får båda. 

Signera containerbilder med CodeSign Secure

Innan du fortsätter med bildsignering måste Docker och CoSign (vårt CodeSign Secures CLI-verktyg) installeras på den maskinen. 

Följ stegen nedan för att installera Cosign 

Installera CoSign 

# binär 

wget “https://github.com/sigstore/cosign/releases/download/v2.0.0/cosign-linux-amd64” 

mv cosign-linux-amd64 /usr/local/bin/cosign 

chmod +x /usr/local/bin/cosign

# varv/min 

wget “https://github.com/sigstore/cosign/releases/download/v2.0.0/cosign-2.0.0.x86_64.rpm”

rpm -ivh cosign-2.0.0.x86_64.rpm

# dkpg 

wget “https://github.com/sigstore/cosign/releases/download/v2.0.0/cosign_2.0.0_amd64.deb”

dpkg -i cosign_2.0.0_amd64.deb

Installera och konfigurera Python och Docker 

sudo apt-get install docker.io

sudo apt-get install python-is-python3

sudo apt installera python3-pip

sudo apt-get install python3-docker

sudo apt-get -y installera python3-openssl

sudo apt-get install -y dbus-användarsession

sudo apt-get install -y docker-ce-rootless-extras

Om docker-ce-rootless-extras ger ett felmeddelande, följ stegen nedan: 

sudo apt-get update

sudo apt-get install ca-certificates curl gnupg lsb-release

sudo mkdir -p /etc/apt/nyckelringar

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg –dearmor -o /etc/apt/keyrings/docker.gpg echo “deb [arch=$(dpkg –print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable” | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

sudo apt-get update

sudo apt-get install docker-ce-rootless-extras

Nu behöver du logga in på ditt Docker Hub-konto genom att köra kommandot nedan

sudo docker inloggning 

Konfigurera containersignering 

  • Ladda ner verktygen för containersignering från CodeSign Secure-portalen.
  • Gå till mappen SignImage.
  • Öppna filen ”ec-signer.conf” och uppdatera URL:en för samdesign, sökvägen till ditt SSL-autentiseringscertifikat och lösenordet för certifikatet.
    containersignering

    OBS: SSL-autentiseringscertifikatet och lösenordet kan genereras från CodeSignSecure-portalen.

    containersignering
  • Öppet terminal
  • Utförande

    ./ec-signer –projektnamn= –bildnamn= –docker_användarnamn=

  • Du kommer att bli ombedd att ange Docker Hub-lösenordet och root-behörigheterna till den aktuella användaren.
    containersignering
  • Du kommer att kunna se en ny signaturbild på ditt Docker Hub-konto.
    containersignering

Verifierar containeravbildning 

Verifiering av containeravbildningar gör att du kan distribuera endast signerade Docker-avbildningar och avvisa osignerade. Kubernetes måste distribueras för att verifiera containeravbildningens signering. 

Installera Kubernetes 

Följ följande kommando för att installera Kubernetes. 

curl -sfL https://get.k3s.io | sh – 

Skapa Kubernetes-tjänster 

Innan vi kan verifiera en avbildning i en Kubernetes-miljö måste följande tjänster distribueras i Kubernetes-klustret 

  • Verifiera bildtjänst 
  • Bildvaliderings-webhook-tjänst 

För att skapa Verify Image-tjänsten, följ stegen nedan: 

  • Gå till katalogen ../VerifyImage/image-verifier.
  • Skapa en Docker-avbildning med namnet "verifyImage" med hjälp av Dockerfilen som finns i mappen

    Till exempel:

    sudo docker build -t aryan34/demo:verifieraBild

    där ”aryan34” är Docker-användarnamnet och ”demo” är Docker Hub-arkivets namn.

  • Skicka nu den här bilden till ditt Docker Hub-konto

    Till exempel:

    sudo docker image push aryan34/demo:verifyImage

    där ”aryan34” är Docker-användarnamnet och ”demo” är Docker Hub-arkivets namn.

  • Öppna nu filen validator-deploy.yaml och uppdatera följande inställningar
    1. cert_namn
    2. server_url
    3. pfx_file_path
    4. pfx_file_passwd
    5. DOCKER_ANVÄNDARNAMN
    6. DOCKER_LÖSENORD
    7. bild (OBS: Behåll bildnamnet som ”verifyImage”. Ändra endast Docker-användarnamnet och arkivnamnet.)
    containersignering
  • Distribuera bildverifieringstjänsten

    sudo kubectl apply -f validator-deploy.yaml

För att skapa bildvalideringstjänsten, följ stegen nedan: 

  • Gå till katalogen ../VerifyImage/validating-webhook.
  • Skapa en Docker-avbildning med namnet "image-validation-webhook" med hjälp av Dockerfilen som finns i mappen.

    Till exempel:

    sudo docker build -t aryan34/demo:image-validation-webhook

    Där ”aryan34” är Docker-användarnamnet och ”demo” är Docker Hub-arkivets namn.

  • Skicka nu den här bilden till ditt Docker Hub-konto

    Till exempel:

    sudo docker image push aryan34/demo:image-validation-webhook

    där ”aryan34” är Docker-användarnamnet och ”demo” är Docker Hub-arkivets namn.

  • Distribuera nu webhook-hemligheterna och yaml-konfigurationsfilerna.

    sudo kubectl apply -f webhook-secret.yaml

    sudo kubectl apply -f webhook-config.yaml

  • Öppna nu filen webhook-deploy.yaml och uppdatera följande inställningar
    1. bild (OBS: Behåll bildnamnet som "image-validation-webhook". Ändra endast Docker-användarnamnet och arkivnamnet.)
    containersignering
  • Distribuera bildvalideringswebbhooken

    sudo kubectl apply -f webhook-deploy.

  • Om tjänsterna har distribuerats korrekt, när vi kör följande kommando –

    sudo kubectl hämta pods -alla-namnrymder

Vi borde få följande utdata – 

containersignering

Testning 

Om vi ​​försöker distribuera en containeravbildning som inte är signerad kommer distributionen att misslyckas. Vi kommer bara att kunna distribuera en signerad avbildning tack vare våra verifierings- och valideringstjänster för Kubernetes. 

Distribuera en osignerad avbildning 

Vi behöver skapa en yaml-fil för den osignerade bilden. 

Vi har skapat en demo-deployment-unsigned.yaml-fil för att distribuera den osignerade aryan34/demo:notSigned-avbildningen. 

Här är ett exempel på en Yaml-fil. Kom ihåg att ändra namnet på den distribuerade tjänsten (demo-deployment-unsigned), avbildningsnamnet och portnumret. 

apiVersion: apps/v1 kind: Distributionsmetadata: namn: demo-deployment-unsigned labels: app: demo spec: replikor: 1 # Antal önskade repliker väljare: matchLabels: app: demo template: metadata: labels: app: demo spec: containers: - namn: demobild: aryan34/demo:notSigned # osignerad demobild ports: - containerPort: 8997 # Port att exponera

För att distribuera den osignerade avbildningen med Kubernetes, kör följande kommando. 

  sudo kubectl apply -f demo-deployment-unsigned.yaml 

containersignering

Distribuera en signerad avbildning 

Här är ett exempel på en Yaml-fil. Kom ihåg att ändra namnet på den distribuerade tjänsten (deployed-demo), avbildningsnamnet och portnumret. 

apiVersion: apps/v1 kind: Distributionsmetadata: name: demo-deployment labels: app: demo spec: replikor: 1 # Antal önskade replikor selector: matchLabels: app: demo template: metadata: labels: app: demo spec: containers: - name: demo image: aryan34/demo:new3 # signerad demobild ports: - containerPort: 8999 # Port att exponera

För att distribuera den signerade avbildningen med Kubernetes, kör följande kommando. 

    sudo kubectl apply -f demo-deployment.yaml 

Om du nu kontrollerar alla poddar ser du en demo-distributionstjänst som körs. 

containersignering

CodeSign Secure + SBOM: Säkerställer transparens i leveranskedjan 

Att veta vad som finns inuti dina containrar är lika viktigt som att veta vem som byggt dem. Det är där SBOM:er (Software Bill of Materials) kommer in i bilden. De listar alla komponenter i din containrarbild, ungefär som en näringsetikett för din programvara. 

Med vår CodeSign Secure kan du signera dina SBOM:er och bifoga dem direkt till dina containeravbildningar. Det innebär att alla som hämtar din avbildning kan kontrollera både avbildningen och SBOM:en för att bekräfta att de är legitima och oanvända. 

Vår plattform stöder populära SBOM-format som SPDX, så du är täckt oavsett vilka verktyg du redan använder. Och det bästa av allt? Du kan framtvinga dessa kontroller. Om en avbildning visas utan en signerad SBOM eller om SBOM:en inte matchar förväntat kan du blockera distributionen direkt. 

Ingen SBOM? Ingen driftsättning. Enkelt. 

Detta ger dig insyn i vad som körs och det hjälper till att upptäcka problem innan de förvandlas till säkerhetsproblem senare. 

CodeSign säker och postkvantkryptografi 

Kvantberäkning är inte här än, men när den väl dyker upp kan många av dagens krypteringsmetoder få problem. Algoritmer som RSA och ECC, som vi förlitar oss på för signering idag, kommer inte att ha en chans mot en tillräckligt kraftfull kvantmaskin. 

Det är därför vår plattform, CodeSign Secure, är nu redo med stöd för LMS (Leighton-Micali Signature), en av de postkvantalgoritmer som rekommenderas av NIST. LMS är utformat för att förbli starkt även om kvantdatorer blir ett verkligt hot. 

Du kan redan börja testa vår plattform med LMS för att se hur post-kvantumsignering passar in i din pipeline. Den fungerar med HSM:er som stöder LMS och integreras precis som alla andra algoritmer som CodeSign Secure hanterar. Inga speciella knep behövs. 

Framöver kommer vi att fortsätta lägga till stöd för fler postkvantalgoritmer allt eftersom standarderna färdigställs, inklusive de från NIST PQC-tävlingen. Så när övergången till kvantsäker signering blir nödvändig behöver du inte krångla; vi har det du behöver.

Enterprise-grade funktioner

När du kör kodsignering i stor skala behöver du mer än bara en signatur. Du behöver kontroll, insyn och flexibilitet för att passa in i hur ditt team arbetar. 

  • Rollbaserad åtkomstkontroll och granskning: Alla borde inte kunna signera varje image. Med vår CodeSign Secures RBAC kan du konfigurera detaljerade behörigheter så att endast dina releaseingenjörer kan godkänna produktionsversioner, medan utvecklare får åtkomst till miljöer med lägre risk. Varje signeringsåtgärd loggas automatiskt, vilket ger dig en fullständig revisionslogg över vem som signerade vad, när och med vilken nyckel. 
  • Central instrumentpanel för signeringssynlighet: Borta är dagarna då man behövde leta efter loggar över flera CI-jobb. Vår plattforms instrumentpanel samlar alla dina signeringshändelser på ett ställe och visar dig med en snabb blick vilka bilder som har giltiga signaturer, vilka nycklar de använde och eventuella misslyckade verifieringar. Om något ser fel ut ser du det direkt och kan klicka dig vidare för mer information. 
  • API-först-arkitektur för anpassade integrationer: Vill du koppla vår plattform till dina egna verktyg eller automatisera ett anpassat arbetsflöde? Alla CodeSign Secure-funktioner exponeras via ett väl dokumenterat REST API så att du kan skripta praktiskt taget vad som helst för att utlösa ett sign-and-push-steg i ditt skräddarsydda CI-verktyg, bygga intern rapportering eller integrera med det säkerhetsärendesystem du redan använder. 

Med dessa företagsfunktioner signerar CodeSign Secure inte bara dina bilder utan hjälper dig också att hantera och övervaka varje steg i processen. 

Lösning för företagskodsignering

Få en lösning för alla dina behov av kodsignering och kryptografi för mjukvara med vår kodsigneringslösning.

Slutsats 

Hoten mot leveranskedjan försvinner inte, och att ignorera dem är inte ett alternativ. Men att stänga ner saker behöver inte sakta ner dig. Med våra CodeSign Secure, får du ett verktyg som passar perfekt in i din befintliga pipeline, lägger till stark säkerhet där det behövs och ger dig kontroll från byggnation till driftsättning. 

Från att signera containeravbildningar och SBOM:er till att verifiera dem med HSM-baserade nycklar och förbereda sig för en kvantsäker framtid, hjälper vår plattform dig att kontrollera alla krav, utan att det blir mer krångligt för ditt team. 

Om du är redo att ta containersäkerhet på allvar utan att komplicera dina arbetsflöden, prova vår CodeSign Secure.