- Utveckling av Docker Content Trust: Att hantera sårbarheter i Docker-ekosystemet
- Fördelar med Docker-signering: Förbättrad säkerhet
- Förstå utmaningarna och begränsningarna med Docker Content Trust
- Att mildra utmaningarna med Docker Content Trust: EC:s strategi
- Säkra Docker-avbildningar med EC:s CodeSign Secure
- Slutsats
Docker är en öppen källkodsplattform som hjälper utvecklare att automatisera distribution, skalning och hantering av applikationer. Docker förenklar processen att hantera applikationer genom att skapa containrar. Dessa containrar paketerar kod och beroenden så att programvaran eller applikationen körs smidigt och tillförlitligt från en datormiljö till en annan.
Docker-containrar är lätta och fristående, vilket innebär att de kan köras var som helst: på din lokala maskin, i ett datacenter, i molnet eller i en blandning av dessa miljöer. Denna portabilitet och konsekvens gör Docker till ett populärt verktyg för utvecklare och driftteam (DevOps) för att samarbeta, utveckla, leverera och köra sina applikationer.
Å andra sidan, Docker-signering är en säkerhetsfunktion som Docker tillhandahåller, känd som Docker Content Trust (DCT). Docker Content Trust använder digitala signaturer för att verifiera integriteten och utgivaren av alla data som tas emot från ett register via valfri kanal
DCT drivs av Notary och The Update Framework (TUF), projekt med öppen källkod som är utformade för att säkra innehållsdistribution. När DCT är aktiverat signerar Docker bilder automatiskt under push-åtgärder och verifierar bilder under pull-åtgärder. Detta säkerställer äktheten, integriteten och aktualiteten hos ditt innehåll.
I grund och botten låter Docker-signering dig säkerställa att bilderna du använder i dina containrar är exakt vad du förväntar dig att de ska vara. Detta förhindrar manipulering eller korruption under överföring och säkerställer att tredje part inte har manipulerat bilderna. Detta är avgörande i ett säkerhetssammanhang, eftersom det förhindrar att obehörig eller skadlig kod läggs till i dina containrar.
Utveckling av Docker Content Trust: Att hantera sårbarheter i Docker-ekosystemet
Docker Content Trust (DCT), som möjliggör Docker-signering, skapades för att möta behovet av förbättrad säkerhet i containerekosystemet. Den ökande användningen av containrar och Docker-avbildningar i utvecklings- och distributionspipelines avslöjade potentiella sårbarheter i ekosystemet som behövde åtgärdas.
Här är några av de viktigaste sårbarheterna som ledde till utvecklingen av Docker-signering:
-
Bildäkthet
Innan Docker-signeringen introducerades krävdes mycket arbete för att fastställa äktheten hos Docker-avbildningar. Användare kunde oavsiktligt ladda ner och använda skadliga eller manipulerade avbildningar utan att inse det.
-
Bildintegritet
Utan Docker-signering var det svårt att säkerställa att Docker-avbildningarna inte hade manipulerats under överföring eller lagring. Detta innebar att även om originalavbildningen var säker och legitim, kunde den modifieras och bli skadlig.
-
Bildens fräschör
Utan ett system som garanterar Docker-avbildningarnas färskhet kan användare ladda ner och använda föråldrade och potentiellt osäkra avbildningar.
-
Supply Chain Security
Allt eftersom Docker och andra containertekniker blev mer populära började de användas i mer komplexa och kritiska system. Detta gjorde säkerheten för leveranskedjan – den serie processer som är involverade i att bygga, driftsätta och köra Docker-avbildningar – en kritisk fråga. Utan Docker-signering saknades förtroende i leveranskedjan.
-
Förtroende vid första användningen (TOFU):
Innan Docker-signering, när du hämtade en avbildning som du inte hade hämtat tidigare, hade Docker inget sätt att verifiera dess integritet eller om den hade manipulerats.
Dessa sårbarheter kan leda till allvarliga säkerhetsintrång. Genom att introducera Docker-signering och Docker Content Trust tog Docker ett betydande steg mot att förbättra säkerheten för Docker-ekosystemet och dess leveranskedjor. Nu kan användare vara säkra på att de Docker-avbildningar de laddar ner och använder är autentiska, omodifierade och uppdaterade.
Fördelar med Docker-signering: Förbättrad säkerhet
Docker Content Trust (DCT), som möjliggör Docker-signering, erbjuder många fördelar, särskilt när det gäller säkerheten och integriteten hos Docker-avbildningar. Några av de viktigaste fördelarna med att använda Docker-signering:
-
Bildäkthet
Docker-signering säkerställer att avbildningarna som hämtas från ett register är autentiska. Det betyder att du kan lita på att avbildningarna du använder skapades av den enhet de påstår sig vara skapade av.
-
Bildintegritet
Docker-signering verifierar att avbildningarna inte har manipulerats under överföringen eller lagrats i registret. Detta garanterar att Docker-avbildningarna du använder är exakt de avbildningar som ursprungligen skickades till registret.
-
Supply Chain Security
Docker-signering förbättrar säkerheten i din leveranskedja genom att säkerställa att de avbildningar du använder i dina distributionspipelines är autentiska och inte har manipulerats. Detta är särskilt viktigt i företagsmiljöer där leveranskedjans säkerhet är av största vikt.
-
Bildens fräschör
Docker-signering säkerställer att du använder den senaste versionen av en Docker-avbildning. Detta förhindrar användning av föråldrade och potentiellt osäkra avbildningar.
-
Överensstämmelse och revision
I branscher där programvara måste uppfylla specifika standarder eller vara granskningsbar (till exempel finans, sjukvård etc.) tillhandahåller Docker-signering en metod för att säkerställa och visa att den distribuerade programvaran inte har manipulerats och är exakt vad den ska vara.
-
Förhindra MITM-attacker (Man-in-the-Middle)
Docker-signering förhindrar MITM-attacker. MITM-attack innebär att angriparen i smyg vidarebefordrar och kanske ändrar budskapet mellan två parter som tror att de talar direkt med varandra.
Genom att säkerställa integriteten, autenticiteten och uppdateringen hos Docker-avbildningar gör Docker-signering Docker-ekosystemet mycket säkrare, vilket är avgörande eftersom Docker- och containerteknik fortsätter att spela en allt viktigare roll i moderna utvecklings- och distributionspipelines.
Förstå utmaningarna och begränsningarna med Docker Content Trust
Även om Docker-signering eller Docker Content Trust (DCT) ger många fördelar, har det också vissa begränsningar och potentiella nackdelar som bör beaktas:
-
Komplexitet
Docker-signering innebär att hantera kryptografiska nycklar, vilket kan öka komplexiteten i din användning. Detta inkluderar att generera, lagra och använda dessa nycklar på ett säkert sätt. För stora organisationer med många utvecklare kan detta öka kostnaden.
-
Operationell overhead
Att använda Docker-signering kräver ändringar i dina befintliga arbetsflöden, inklusive hur du skickar och hämtar avbildningar. Detta kan leda till extra driftskostnader, särskilt under den inledande implementeringsfasen.
-
kompatibilitets~~POS=TRUNC
Docker Content Trust är bara ibland kompatibelt med alla Docker-kommandon och alternativ, vilket kan begränsa dess användbarhet i vissa sammanhang.
-
Förlorade eller komprometterade nycklar
Om dina privata nycklar går förlorade kommer även alla bilder som signerats med dem att förlora sitt förtroende. Om dina nycklar komprometteras kan angripare signera skadliga bilder som om de vore du. Nyckelhantering är därför en avgörande aspekt av Docker-signering.
-
Beroende av notarieserver
Docker Content Trust förlitar sig på en notarieserver för att hantera förtroendet. Detta beroende skapar en potentiell felpunkt i ditt Docker-arbetsflöde.
-
Ökad byggtid
Docker-signering kan öka byggtiderna något, eftersom det lägger till ett steg för att signera avbildningen under byggprocessen.
-
Brist på detaljerad kontroll
Docker Content Trust fungerar på Docker-avbildningsnivå, men det ger inte kontroll eller förtroende på nivån för enskilda filer eller lager i en avbildning. Det betyder att du inte kan verifiera integriteten eller äktheten hos enskilda komponenter i en avbildning, bara avbildningen som helhet.
Trots dessa nackdelar är Docker-signering fortfarande en viktig säkerhetsfunktion för många Docker-användare, särskilt de som arbetar i företag eller andra högsäkerhetssammanhang. Precis som med alla säkerhetsverktyg är det viktigt att balansera behovet av säkerhet mot den operativa omkostnad och komplexitet som det medför.
Att mildra utmaningarna med Docker Content Trust: EC:s strategi
För att övervinna nackdelarna med Docker-signering vidtar vi flera åtgärder:
-
Förenkla nyckelhantering
Vi använder säkra och automatiserade nyckelhanteringslösningar för att minska komplexiteten och risken med att hantera kryptografiska nycklar. Detta kan inkludera hårdvarusäkerhetsmoduler (HSM) or molnbaserade nyckelhanteringslösningar.
-
Utbildning och dokumentation
Vi erbjuder grundlig utbildning och tydlig och koncis dokumentation till våra utvecklare. Detta bidrar till att minska de operativa omkostnaderna i samband med införandet av Docker-signering och säkerställer att alla förstår processen och dess betydelse.
-
Regelbundna revisioner
Vi granskar regelbundet våra processer för att säkerställa att kompatibilitetsproblem löses snabbt. Detta säkerställer att Docker-signering kan integreras fullt ut i våra arbetsflöden med minimala störningar.
-
Robust nyckelåterställningsprocess
Vi implementerar en robust nyckelåterställningsprocess vid förlorade nycklar. Dessutom begränsar vi den potentiella effekten av komprometterade nycklar genom att använda olika nycklar för olika bilder eller grupper av bilder, där det är möjligt.
-
Failover-mekanismer
Vi etablerar redundansmekanismer för att säkerställa att våra Docker-arbetsflöden kan fortsätta fungera även om Notary-servern inte är tillgänglig. Detta kan innebära att konfigurera en sekundär Notary-server eller utnyttja Dockers offline-signeringsfunktioner.
-
Optimera byggtider
Vi optimerar kontinuerligt vår byggprocess för att kompensera för eventuella ökningar av byggtiden på grund av Docker-signering. Detta kan inkludera parallellisering av byggen eller optimering av andra delar av byggprocessen.
-
Använda ytterligare säkerhetsåtgärder
För att komplettera det förtroende på bildnivå som tillhandahålls av Docker Content Trust använder vi andra säkerhetsåtgärder som att söka efter sårbarheter i Docker-avbildningar, verifiera integriteten och äktheten hos basavbildningar och följa bästa praxis för Dockerfile- och avbildningsskapande.
Genom att vidta dessa åtgärder kan vi avsevärt minska nackdelarna med Docker-signering och dra full nytta av dess säkerhetsfördelar.
Säkra Docker-avbildningar med EC:s CodeSign Secure
Det finns vissa förutsättningar för Docker Image-signering, dessa är:
-
Installera Cosign
# 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 -
Installera och konfigurera Python och Docker
- sudo apt-get install docker.io
- sudo apt-get install python-is-python3
- sudo apt installera python3-pip
- pip installera docker
- sudo apt-get install -y docker-ce-rootless-extras
- sudo apt-get install -y dbus-användarsession
- docker-inloggning
Nästa steg är att kolla in koden från GitHub:

Efter det, utför följande steg:
- Öppna terminalen.
-
Utför –
./ec-signer –project_name=<certificate name> --image_name=<target container> --docker_username=<your docker username> --docker_passwd=<your docker password>
Kubernetes måste driftsättas för att verifiera containeravbildningen, vilket kan göras från här..
Nu, driftsätt följande två tjänster:
-
Bildvalideringswebbhook
- Kolla in koden från GitHub och gå sedan till mappen – ../VerifyImage/validating-webhook
- Öppet terminal
-
Utför –
sudo kubectl apply -f webhook-secret.yaml -
Utför –
sudo kubectl apply -f webhook-deploy.yaml -
Utför –
sudo kubectl apply -f webhook-config.yaml
-
verifiera bild

- Kolla in koden från GitHub och gå sedan till mappen – ../VerifyImage/image-verifier
- Öppet terminal
-
Utför –
sudo kubectl apply -f validator-deploy.yaml
När avbildningarna har driftsatts, kör kommandot:
sudo kubectl get pods –all-namespaces

Obs: För att uppdatera URL:en för codesigning-servern, docker-användarnamn och docker-lösenord, redigera validator-deploy.yaml som finns på ../VerifyImage/image-verifier.
Kolla även in demon av Docker Signing med hjälp av vår EC:s CodeSign Secure här.
Slutsats
Sammanfattningsvis är Docker-signering ett kraftfullt verktyg för att förbättra säkerheten i Docker-arbetsflöden. Det är en avgörande aspekt av Docker, särskilt i högsäkerhets- eller företagssammanhang. Liksom alla verktyg är det viktigt att förstå och hantera dess begränsningar, men fördelarna det ger i form av ökat förtroende och säkerhet är betydande.
- Utveckling av Docker Content Trust: Att hantera sårbarheter i Docker-ekosystemet
- Fördelar med Docker-signering: Förbättrad säkerhet
- Förstå utmaningarna och begränsningarna med Docker Content Trust
- Att mildra utmaningarna med Docker Content Trust: EC:s strategi
- Säkra Docker-avbildningar med EC:s CodeSign Secure
- Slutsats
