Meteen naar de inhoud

Certificaten voor 47 dagen komen eraan. Ben je er klaar voor?

Handel nu →

Docker-ecosysteem beveiligd: Docker-ondertekening en inhoudsvertrouwen verkennen

Docker-ondertekening

Docker is een open-sourceplatform dat ontwikkelaars helpt bij het automatiseren van de implementatie, schaalbaarheid en het beheer van applicaties. Docker vereenvoudigt het beheer van applicaties door containers te creëren. Deze containers bundelen code en afhankelijkheden, zodat de software of applicatie soepel en betrouwbaar van de ene computeromgeving naar de andere draait.

Docker-containers zijn lichtgewicht en op zichzelf staand, wat betekent dat ze overal kunnen draaien: op je lokale machine, in een datacenter, in de cloud of in een combinatie van deze omgevingen. Deze draagbaarheid en consistentie maken Docker een populair hulpmiddel voor ontwikkelaars en operationele teams ( DevOps ) om samen te werken, applicaties te ontwikkelen, te implementeren en te draaien.

Aan de andere kant is Docker-ondertekening een beveiligingsfunctie die Docker biedt, bekend als Docker Content Trust (DCT). Docker Content Trust gebruikt digitale handtekeningen om de integriteit en de uitgever van alle gegevens die via een register of via een willekeurig kanaal worden ontvangen, te verifiëren.

DCT wordt aangestuurd door Notary en The Update Framework (TUF), open-sourceprojecten die zijn ontworpen om de distributie van content te beveiligen. Wanneer DCT is ingeschakeld, ondertekent Docker automatisch images tijdens pushbewerkingen en verifieert het images tijdens pullbewerkingen. Dit garandeert de authenticiteit, integriteit en actualiteit van uw content.

Docker-ondertekening zorgt er in essentie voor dat de images die u in uw containers gebruikt, precies zijn wat u ervan verwacht. Dit voorkomt manipulatie of beschadiging tijdens de overdracht en zorgt ervoor dat derden de images niet hebben gemanipuleerd. Dit is cruciaal in een beveiligingscontext, omdat het voorkomt dat ongeautoriseerde of schadelijke code aan uw containers wordt toegevoegd.

Het ondertekenen van containerimages vandaag de dag, in het kort: Docker Content Trust (DCT), gebaseerd op Notary en TUF, was het oorspronkelijke, native ondertekeningsmechanisme van Docker, maar het ecosysteem is grotendeels overgestapt op Cosign en Notation. Deze mechanismen ondertekenen OCI 1.1-artefacten en slaan de handtekening op als een apart, aan Referrers gekoppeld object in plaats van deze in de image te bundelen. DCT werkt nog steeds, maar wordt steeds vaker als verouderd beschouwd; nieuwe implementaties zouden standaard Cosign of Notation moeten gebruiken.

Key Takeaways

  • De afhankelijkheid van DCT van een notarisserver en het op TUF gebaseerde model voor vertrouwensdelegatie zijn grotendeels de reden waarom het ecosysteem is overgestapt op Cosign en Notation, waarvoor geen aparte notarisserver nodig is.
  • Cosign ondersteunt zowel sleutelgebaseerde als sleutelloze (OIDC-ondersteunde, Rekor-transparantielogboek) ondertekening; Notation is certificaatgebaseerd en staat dichter bij traditionele PKI. Geen van beide is per se beter; de keuze hangt af van de vraag of uw organisatie al een certificaatgebaseerd vertrouwensmodel hanteert of de voorkeur geeft aan vluchtige, identiteitsondersteunde ondertekening.
  • Deze pagina dient als vergelijkingspunt voor het containerondertekeningscluster. Voor een stapsgewijze handleiding op basis van Cosign, zie Moderne strategieën voor het ondertekenen en verifiëren van containerimages met CodeSign Secure; voor een kortere, Docker-specifieke inleiding, zie Docker Image Signing begrijpen.

Medeondertekening versus notatie: vergelijking van vertrouwensmodellen

Medeondertekenenschrijfwijze
VertrouwensmodelOp basis van een sleutel of zonder sleutel (kortstondig certificaat uitgegeven via OIDC-identiteit, vastgelegd in het Rekor-transparantielogboek)Certificaatgebaseerd, dichter bij traditionele PKI met een vertrouwde CA-keten.
HandtekeningopslagOCI 1.1 Verwijzingsartefact gekoppeld aan de afbeeldingssamenvattingOCI 1.1 Verwijzingsartefact gekoppeld aan de afbeeldingssamenvatting
TransparantielogboekRekor, standaard voor sleutelloze ondertekening.Geen ingebouwd equivalent; vertrouwt in plaats daarvan op de CA/PKI-vertrouwensketen.
Beste pasvormOrganisaties die vertrouwd zijn met vluchtige, identiteitsgebonden digitale handtekeningen en openbare, transparante registratie.Organisaties met een bestaand PKI- en certificaatbeheerproces op bedrijfsniveau

Ontwikkeling van Docker Content Trust: aanpakken van kwetsbaarheden in het Docker-ecosysteem

Docker Content Trust (DCT), dat Docker-ondertekening mogelijk maakt, is ontwikkeld om te voldoen aan de behoefte aan verbeterde beveiliging in het containerecosysteem. Het toenemende gebruik van containers en Docker-images in ontwikkel- en implementatiepipelines bracht potentiële kwetsbaarheden in het ecosysteem aan het licht die moesten worden aangepakt.

Hieronder staan ​​enkele van de belangrijkste kwetsbaarheden die hebben geleid tot de ontwikkeling van Docker-ondertekening:

  • Beeldauthenticiteit

    Voordat Docker-ondertekening werd geïntroduceerd, was er veel werk nodig om de authenticiteit van Docker-images te bepalen. Gebruikers konden onbedoeld schadelijke of gemanipuleerde images downloaden en gebruiken zonder het te beseffen.

  • Beeldintegriteit

    Zonder Docker-ondertekening was het moeilijk om te garanderen dat er tijdens de overdracht of opslag niet met de Docker-images was geknoeid. Dit betekende dat, zelfs als de originele image veilig en legitiem was, deze gewijzigd en schadelijk kon zijn.

  • Beeldversheid

    Zonder een systeem dat de actualiteit van Docker-images garandeert, kunnen gebruikers verouderde en mogelijk onveilige images downloaden en gebruiken.

  • Beveiliging van de toeleveringsketen

    Naarmate Docker en andere containertechnologieën populairder werden, werden ze steeds vaker gebruikt in complexere en kritieke systemen. Hierdoor werd de beveiliging van de toeleveringsketen – de reeks processen die betrokken zijn bij het bouwen, implementeren en uitvoeren van Docker-images – een cruciaal aandachtspunt. Zonder Docker-ondertekening was er een gebrek aan vertrouwen in de toeleveringsketen.

  • Vertrouwen bij eerste gebruik (TOFU):

    Voordat Docker-ondertekening mogelijk was, kon Docker, als u een afbeelding ophaalde die u nog niet eerder had opgehaald, niet controleren of de afbeelding wel intact was en of ermee was geknoeid.

Deze kwetsbaarheden kunnen leiden tot ernstige beveiligingsinbreuken. Met de introductie van Docker Signing en Docker Content Trust heeft Docker een belangrijke stap gezet in de verbetering van de beveiliging van het Docker-ecosysteem en de bijbehorende toeleveringsketens. Gebruikers kunnen er nu op vertrouwen dat de Docker-images die ze downloaden en gebruiken authentiek, ongewijzigd en up-to-date zijn.

Voordelen van Docker Signing: Verbetering van de beveiliging

Docker Content Trust (DCT), dat Docker-ondertekening mogelijk maakt, biedt talloze voordelen, met name wat betreft de beveiliging en integriteit van Docker-images. Enkele van de belangrijkste voordelen van Docker-ondertekening:

  • Beeldauthenticiteit

    Docker-ondertekening garandeert dat de images die uit een register worden gehaald authentiek zijn. Dit betekent dat u erop kunt vertrouwen dat de images die u gebruikt, zijn gemaakt door de entiteit waarvan ze beweren dat ze zijn gemaakt.

  • Beeldintegriteit

    Docker-ondertekening verifieert dat de images niet zijn gemanipuleerd tijdens de overdracht of opgeslagen in het register. Dit garandeert dat de Docker-images die u gebruikt, exact dezelfde images zijn die oorspronkelijk naar het register zijn gepusht.

  • Beveiliging van de toeleveringsketen

    Docker Signing verbetert de beveiliging van uw supply chain door ervoor te zorgen dat de images die u in uw implementatiepijplijnen gebruikt authentiek zijn en niet zijn gemanipuleerd. Dit is met name cruciaal in zakelijke omgevingen waar beveiliging van de supply chain van cruciaal belang is.

  • Beeldversheid

    Docker-ondertekening zorgt ervoor dat u de meest recente versie van een Docker-image gebruikt. Dit voorkomt het gebruik van verouderde en mogelijk onveilige images.

  • Naleving en controle

    In sectoren waar software aan specifieke normen moet voldoen of controleerbaar moet zijn (bijvoorbeeld in de financiële sector, de gezondheidszorg, enzovoort), biedt Docker-ondertekening een methode om te garanderen en aan te tonen dat er niet is geknoeid met de geïmplementeerde software en dat deze precies is wat ervan verwacht wordt.

  • Voorkom Man-in-the-Middle (MITM)-aanvallen

    Docker-ondertekening voorkomt MITM-aanvallen. Bij een MITM-aanval stuurt de aanvaller stiekem berichten door, en wijzigt deze mogelijk, tussen twee partijen die denken dat ze rechtstreeks met elkaar communiceren.

Door de integriteit, authenticiteit en actualiteit van Docker-images te garanderen, maakt Docker-ondertekening het Docker-ecosysteem veel veiliger. Dit is van cruciaal belang, aangezien Docker- en containertechnologieën een steeds belangrijkere rol spelen in moderne ontwikkelings- en implementatiepijplijnen.

Oplossing voor codeondertekening voor bedrijven

Ontvang één oplossing voor al uw cryptografische behoeften op het gebied van softwarecodeondertekening met onze codeondertekeningsoplossing.

Inzicht in de uitdagingen en beperkingen van Docker Content Trust

Hoewel Docker-ondertekening of Docker Content Trust (DCT) veel voordelen biedt, kent het ook enkele beperkingen en potentiële nadelen waarmee rekening moet worden gehouden. Een aantal van deze beperkingen zijn precies de reden waarom het ecosysteem in plaats daarvan is overgestapt op Cosign en Notation:

  • Ingewikkeldheid

    Docker-ondertekening vereist het beheer van cryptografische sleutels, wat uw gebruik complexer kan maken. Dit omvat het veilig genereren, opslaan en gebruiken van deze sleutels. Voor grote organisaties met veel ontwikkelaars kan dit aanzienlijke overhead met zich meebrengen.

  • Operationele overhead

    Het gebruik van Docker-ondertekening vereist wijzigingen in uw bestaande workflows, inclusief de manier waarop u images pusht en pullt. Dit kan leiden tot extra operationele overhead, vooral tijdens de initiële adoptiefase.

  • compatibiliteitsproblemen

    Docker Content Trust is slechts soms compatibel met alle Docker-opdrachten en -opties, wat de bruikbaarheid in bepaalde contexten kan beperken.

  • Verloren of gecompromitteerde sleutels

    Als je je privésleutels kwijtraakt, verliezen alle ermee ondertekende afbeeldingen ook hun betrouwbaarheid. Als je sleutels gecompromitteerd zijn, kunnen aanvallers kwaadaardige afbeeldingen ondertekenen alsof ze jou zijn. Sleutelbeheer is daarom een ​​cruciaal aspect van het ondertekenen met Docker.

  • Afhankelijkheid van Notary Server

    Docker Content Trust is afhankelijk van een Notary-server om de trust te beheren. Deze afhankelijkheid creëert een potentieel punt van falen in uw Docker-workflow.

  • Verlengde bouwtijd

    Docker-ondertekening kan de buildtijd enigszins verlengen, omdat er tijdens het buildproces een stap wordt toegevoegd voor het ondertekenen van de image.

  • Gebrek aan gedetailleerde controle

    Docker Content Trust werkt op het niveau van de Docker-image, maar biedt geen controle of vertrouwen op het niveau van individuele bestanden of lagen binnen een image. Dit betekent dat u de integriteit of authenticiteit van afzonderlijke componenten van een image niet kunt verifiëren, alleen de image als geheel.

Ondanks deze nadelen blijft Docker-ondertekening een cruciale beveiligingsfunctie voor veel Docker-gebruikers, met name in zakelijke omgevingen of andere omgevingen met een hoge mate van beveiliging. Zoals bij elke beveiligingstool is het belangrijk om de noodzaak van beveiliging af te wegen tegen de operationele overhead en complexiteit die het met zich meebrengt.

Het beperken van de uitdagingen van Docker Content Trust: de aanpak van EC

Om de nadelen van Docker-ondertekening te overwinnen, nemen we verschillende maatregelen:

  • Vereenvoudiging van sleutelbeheer

    We maken gebruik van veilige en geautomatiseerde oplossingen voor sleutelbeheer om de complexiteit en het risico van het beheren van cryptografische sleutels te verminderen. Dit kan bestaan ​​uit hardwarebeveiligingsmodules (HSM's) of cloudgebaseerde oplossingen voor sleutelbeheer.

  • Opleiding en documentatie

    We bieden onze ontwikkelaars grondige training en duidelijke, beknopte documentatie. Dit helpt de operationele overhead die gepaard gaat met de implementatie van Docker-ondertekening te beperken en zorgt ervoor dat iedereen het proces en het belang ervan begrijpt.

  • Regelmatige audits

    We controleren onze processen regelmatig om ervoor te zorgen dat compatibiliteitsproblemen snel worden opgelost. Dit zorgt ervoor dat Docker-ondertekening volledig in onze workflows kan worden geïntegreerd met minimale verstoring.

  • Robuust sleutelherstelproces

    We implementeren een robuust proces voor sleutelherstel in geval van verlies van sleutels. Bovendien beperken we de potentiële impact van gecompromitteerde sleutels door, waar mogelijk, verschillende sleutels te gebruiken voor verschillende images of groepen images.

  • Failover-mechanismen

    We implementeren failovermechanismen om ervoor te zorgen dat onze Docker-workflows blijven functioneren, zelfs als de Notary-server niet beschikbaar is. Dit kan betekenen dat we een secundaire Notary-server moeten opzetten of de offline ondertekeningsmogelijkheden van Docker moeten benutten.

  • Optimaliseren van bouwtijden

    We optimaliseren ons buildproces continu om eventuele extra buildtijd als gevolg van Docker-ondertekening te compenseren. Dit kan onder meer door builds te paralleliseren of andere onderdelen van het buildproces te optimaliseren.

  • Het gebruik van aanvullende beveiligingsmaatregelen

    Ter aanvulling op het vertrouwen op imageniveau dat Docker Content Trust biedt, gebruiken we andere beveiligingsmaatregelen, zoals het scannen op kwetsbaarheden in Docker-images, het verifiëren van de integriteit en authenticiteit van basisimages en het naleven van best practices voor Dockerfile- en imagecreatie.

Door deze maatregelen te nemen, kunnen we de nadelen van Docker-ondertekening aanzienlijk beperken en de beveiligingsvoordelen ervan ten volle benutten.

Docker-images beveiligen met CodeSign Secure van EC

Er zijn bepaalde vereisten voor Docker Image-ondertekening, namelijk:

  • Cosign installeren

            
            
      # binary
      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
    
      # rpm
      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
            
            
          
  • Python en Docker installeren en instellen

    • sudo apt-get install docker.io
    • sudo apt-get install python-is-python3
    • sudo apt installeer python3-pip
    • pip docker installeren
    • sudo apt-get install -y docker-ce-rootless-extras
    • sudo apt-get install -y dbus-user-session
    • docker inloggen

Oplossing voor codeondertekening voor bedrijven

Ontvang één oplossing voor al uw cryptografische behoeften op het gebied van softwarecodeondertekening met onze codeondertekeningsoplossing.

De volgende stap is om de code van GitHub te bekijken:

Github-link Docker-containerimage-ondertekening

Voer daarna de volgende stappen uit:

  • Terminal openen.
  • Uitvoeren –

    ./ec-signer –project_name=<certificate name> --image_name=<target container> --docker_username=<your docker username> --docker_passwd=<your docker password>

Kubernetes moet worden geïmplementeerd om de containerimage te verifiëren, wat hier kan worden gedaan.

Implementeer nu de volgende twee services:

  • Afbeeldingvalidatie-webhook

    • Bekijk de code van GitHub en ga vervolgens naar de map – ../VerifyImage/validating-webhook
    • Open terminal
    • Uitvoeren –

      sudo kubectl apply -f webhook-secret.yaml

    • Uitvoeren –

      sudo kubectl apply -f webhook-deploy.yaml

    • Uitvoeren –

      sudo kubectl apply -f webhook-config.yaml

  • VerifiërenAfbeelding

    Controleer de structuur van het afbeeldingsbestand
    • Bekijk de code op GitHub en ga vervolgens naar de map – ../VerifyImage/image-verifier
    • Open terminal
    • Uitvoeren –

      sudo kubectl apply -f validator-deploy.yaml

Nadat de images succesvol zijn geïmplementeerd, voert u de volgende opdracht uit:

sudo kubectl get pods –all-namespaces

Verifier actief

Opmerking: Om de URL van de codeondertekeningsserver, de Docker-gebruikersnaam en het Docker-wachtwoord bij te werken, bewerk je het bestand validator-deploy.yaml in de map ../VerifyImage/image-verifier.

Bekijk ook de demo van Docker Signing met CodeSign Secure van onze EC hier.

Veelgestelde Vragen / FAQ

Moeten nieuwe projecten nog steeds Docker Content Trust gebruiken, of direct overstappen op Cosign/Notation?

Medeondertekening of notatie, in de meeste gevallen. DCT werkt nog steeds, maar vereist het onderhouden van een aparte notarisserver en mist het op verwijzingen gebaseerde opslagmodel van OCI 1.1 en (voor medeondertekening) de transparantielogboekregistratie die de nieuwere tools bieden.

Is ondertekenen zonder sleutel met Cosign minder veilig dan ondertekenen met een sleutel?

Niet per se, maar het verschuift het vertrouwen van een langlevende privésleutel naar een kortstondig certificaat dat is gekoppeld aan een geverifieerde OIDC-identiteit, die publiekelijk wordt geregistreerd bij Rekor. De afweging is zowel filosofisch als technisch: ondertekenen op basis van sleutels past bij organisaties met bestaande PKI-governance, terwijl ondertekenen zonder sleutels past bij organisaties die vertrouwd zijn met identiteitsgebaseerd, transparant geregistreerd vertrouwen.

Kunnen medeondertekenings- en notatiehandtekeningen op dezelfde manier worden geverifieerd als DCT-handtekeningen?

Nee, ze gebruiken verschillende verificatietools en vertrouwensmodellen. Migreren van DCT naar Cosign of Notation vereist het opnieuw ondertekenen van images en het dienovereenkomstig bijwerken van toelatingsbeleid en CI/CD-verificatiestappen, niet alleen een wijziging van een configuratievlag.

Conclusie

Concluderend is Docker Signing een krachtige tool om de beveiliging van Docker-workflows te verbeteren. Het is een cruciaal aspect van Docker, met name in omgevingen met een hoge mate van beveiliging of in zakelijke omgevingen. Zoals bij elke tool is het belangrijk om de beperkingen ervan te begrijpen en te beheren, maar de voordelen die het biedt op het gebied van meer vertrouwen en beveiliging zijn aanzienlijk.