CI/CD-pipelines zijn een integraal onderdeel van moderne workflows en de tools die ze ondersteunen, breiden hun latente mogelijkheden verder uit. Teamwerk is essentieel in moderne workflows waar deadlines niet alleen urgent, maar ook regelmatig zijn. Elke seconde telt wanneer een klant aan de lijn zit.
Het kan overweldigend zijn om binnen een grote organisatie, waar codeontwikkeling uit meerdere stappen bestaat, elke stap handmatig te moeten uitvoeren. Daarom zijn tools zoals CI/CD-pipelines, bijvoorbeeld Jenkins , zo gangbaar geworden in ontwikkelomgevingen. De beste manier om een ​​discussie over CI/CD te beginnen, is door te kijken wat deze tools je mogelijk maken.
Wat is een CI/CD-pijplijn?
Het idee achter een pipeline is dat het een reeks processen is die softwareontwikkeling aansturen via de stappen van het bouwen, testen en implementeren van code. Dit wordt ook wel CI/CD genoemd. CI/CD is een model voor een gedeelde, meestal lokaal gehoste, buildomgeving. De verschillende platforms bundelen implementaties van CI/CD met communicatie- en buildtools waarmee software sneller live kan gaan door het build- en releaseproces te stroomlijnen.
Historisch gezien werd code ontwikkeld door aparte teams en getest in persoonlijke omgevingen. Integratie kost tijd en feedback op defecte code duurt langer. Dit leidt tot lange buildcycli en een lagere efficiëntie. Het is gebruikelijk om een ​​stuk code te testen met een aantal testcases die vóór de ontwikkeling zijn ontworpen.
Als de uiteindelijke code aan deze standaarden voldoet, zou deze gemakkelijk in bestaande code moeten kunnen worden geïntegreerd. Maar als ontwikkelaars weten we allemaal dat dit lang niet het enige mogelijke resultaat is, zelfs niet met zorgvuldig ontworpen testcases. Zoals je kunt zien, vormt CI/CD de basis van DevOps in het algemeen. Het richt zich op continue integratie, levering en implementatie.
De integratiestappen omvatten het bouwen van de code zelf, het uitvoeren van testcases en het samenvoegen van die code. De leveringsfase publiceert de code automatisch in de opgegeven repository, en de implementatiefase implementeert de code, zoals de naam al aangeeft, automatisch in de productieomgeving.
Hoewel de CI/CD-pipeline uit vele stappen bestaat, is een van de belangrijkste stappen in dit proces het testen van code. CI/CD biedt een manier om testcases op grote schaal uit te voeren, waarbij wijzigingen in de code in één gestroomlijnde en geautomatiseerde actie kunnen worden getest.
Code wordt gepusht, ontvangen door de pipeline, getest en als alle cases succesvol zijn, kan de build live gaan. Het is verbazingwekkend wat dit kan betekenen voor de wendbaarheid van uw organisatie. Het razendsnel oplossen van een bug is misschien wel de toekomst van ontwikkeling. Alleen missen we hier een belangrijke stap. Geen enkele klant of organisatie zou ongetekende code moeten gebruiken. Dit is waar code-signing om de hoek komt kijken.
Wat is code-signing en waarom is het belangrijk?
Code-ondertekening is het proces waarbij een digitale handtekening wordt gegenereerd en aan code wordt gekoppeld, zodat een eindgebruiker erop kan vertrouwen dat de aan hem gedistribueerde code veilig te gebruiken is. De basisprincipes van code-ondertekening zijn als volgt:
- Een ontwikkelaar zal besluiten zijn code te ondertekenen. Dit zal tegenwoordig bij de meeste ontwikkelaars het geval zijn, omdat het onveilig en onveilig is om een ​​eindgebruiker ongetekende code te verstrekken.
- Zodra een ontwikkelaar besluit zijn code te ondertekenen, moet hij een openbaar-privé sleutelpaar genereren en een Certificaatondertekeningsaanvraag (CSR)Het openbare-private sleutelpaar identificeert de ontwikkelaar als zichzelf en is nodig om de CSR te maken. De CSR wordt samen met het sleutelpaar aan een certificeringsinstantie gegeven en is nodig om een ​​digitale handtekening voor de code te genereren.
- De openbare sleutel van het openbare-private sleutelpaar wordt vervolgens naar de certificeringsinstantie (CA) verzonden en er wordt een certificaat voor codeondertekening aangevraagd.
- De CA verifieert vervolgens de identiteit van de uitgever, verifieert de certificaataanvraag van de uitgever en bundelt vervolgens de identiteit van de uitgever met de openbare sleutel.
- De CA ondertekent vervolgens de bundel en creëert zo een digitaal codeondertekeningscertificaat. Met dit certificaat kan de ontwikkelaar een digitale handtekening voor de betreffende code genereren, waarmee wordt aangegeven dat de code is ontwikkeld door de software-uitgever.
- Ten slotte wordt het ondertekeningscertificaat naar de software-uitgever gestuurd, die nu zijn digitale handtekening kan genereren en aan zijn code kan toevoegen.
Het moderne releaseproces vereist co-designing, een stap die, afhankelijk van het huidige proces van uw organisatie, de snelheid en efficiëntie van CI/CD aanzienlijk kan verminderen. Code-signing bewijst de identiteit van de ontwikkelaar van de code en waarborgt de integriteit ervan.
Wanneer codeondertekening plaatsvindt, zullen eventuele verdere wijzigingen de handtekening ongeldig maken, wat de garantie biedt dat de ondertekende code niet is gemanipuleerd. Dit is het belangrijkste voordeel van codeondertekening, waardoor het zo noodzakelijk is in de moderne wereld. Ongeacht uw branche, zullen uw producten onbruikbaar zijn in omgevingen variërend van schoolnetwerken tot banken als u geen codeondertekening implementeert.
Het voordeel hiervan is dat het risico op reputatieschade wordt beperkt. Door alleen ondertekende code te verspreiden, kan uw organisatie ervoor zorgen dat gebruikers gewend zijn een handtekening te zien voordat ze uw software installeren. Dit maakt ze minder kwetsbaar voor aanvallers die zich voordoen als uw organisatie. 
Integratie van codeondertekening met CI/CD-pijplijn
Code-signing was voorheen een apart proces tijdens de ontwikkeling. Deze stap werd vaak handmatig uitgevoerd, wat de kans op fouten vergroot. Integratie met een CI/CD-pipeline voor code-signing kan verschillende voordelen bieden. Het code-signingproces kan met deze integratie eenvoudig worden geautomatiseerd, waardoor de handmatige werkzaamheden die nodig zijn om artefacten te laten ondertekenen voordat ze worden geïmplementeerd, verder worden geëlimineerd.
Er zijn verschillende CI/CD-tools, zoals Jenkins, Azure DevOps, GitHub Actions, GitLab en andere, die eenvoudige integratie met codeondertekeningstools mogelijk maken. Dit resulteert in een geautomatiseerd codeondertekeningsproces in de huidige ontwikkel- en implementatieworkflow.
Wanneer we onze workflows automatiseren om onze artefacten te ondertekenen, zien we veel voordelen. Automatisering zoals deze, met behulp van een CI/CD-pipeline, zorgt voor consistentie. Alle vrijgegeven code krijgt hetzelfde ondertekeningsproces, wat zorgt voor betrouwbare implementaties. Het bespaart het implementatieteam ook tijd door het handmatige ondertekeningsproces te elimineren.
Dit vermindert over het algemeen het risico op menselijke fouten die kunnen optreden tijdens handmatige ondertekening. Deze integratie van de CI/CD-pipeline met codesigning is een win-winsituatie, omdat het uw beveiligingspositie versterkt door integriteit te garanderen en het ontwikkelingsproces stroomlijnt, wat leidt tot snellere en efficiëntere softwarelevering.
Voordelen van codeondertekening in CI/CD
-
verbeterde beveiliging
Wanneer u code ondertekent in de CI/CD-pijplijn, zorgt u er altijd voor dat alleen de toegestane en geverifieerde code in productieomgevingen wordt geïmplementeerd. Deze methode verkleint de kans op het toevoegen van kwetsbaarheden. Bij elke poging tot manipulatie wordt de handtekening ongeldig verklaard, wat wijst op mogelijke beveiligingsrisico's. Zo wordt iedereen die malware in de pijplijn wil plaatsen en aanvallen op de toeleveringsketen wil uitvoeren, buiten de deur gehouden.
-
Geautomatiseerde releases
Zodra het codeondertekeningsproces binnen de CI/CD-pijplijn is geautomatiseerd, wordt een typisch ondertekeningsproces opgezet. Deze automatisering vindt altijd plaats, ongeacht de ontwikkelaar en de omgeving waarin de builds worden ontwikkeld.
Dankzij deze stap hoeven ontwikkelaars code niet meer handmatig te ondertekenen, waardoor ze tijd vrijmaken voor andere taken. Het vermindert ook het aantal fouten tijdens het ondertekenen, omdat alles zonder menselijke tussenkomst verloopt. Menselijke fouten kunnen volledig worden vermeden, omdat alles zonder menselijke tussenkomst verloopt. Als we geautomatiseerde ondertekening opnemen als een van onze pipelines voor CI/CD, zullen we snellere releases hebben.
-
Betere ontwikkelingspraktijken
Wanneer CI/CD-tools gekoppeld zijn aan codesigning, worden ondertekeningsfouten genoteerd met een foutmelding. Deze melding stelt de ontwikkelaar in staat om fouten al vroeg in het ontwikkelingsproces op te merken en te verhelpen. De logs van build- en implementatieactiviteiten zijn altijd gedetailleerder in CI/CD-pipelines. In dit geval houden ze de codesigning bij en bieden ze de nodige duidelijkheid bij het naleven van beveiligingsvoorschriften.
CI/CD en DevSecOps
DevSecOps staat voor ontwikkeling, beveiliging en beheer. Het is een manier om de ontwikkeling te versnellen waarbij iedereen die betrokken is bij het bouwen van software samenwerkt om ervoor te zorgen dat de software vanaf het begin veilig is. DevSecOps maakt gebruik van geautomatiseerde pipelines voor testen, implementatie en monitoring gedurende de gehele softwareontwikkelingscyclus.
Veilig ondertekende artefacten stromen moeiteloos door deze geautomatiseerde CI/CD-pipelines en behouden hun integriteit en beveiligingsstatus in elke fase. Het ondertekeningsproces kan worden geautomatiseerd binnen de buildpipeline, waardoor beveiliging naadloos wordt toegevoegd aan de ontwikkelworkflow. DevSecOps is, simpel gezegd, DevOps CI/CD, maar dan op een veilige manier. Dit toont aan dat beveiliging een primaire zorg is die van invloed is op alle beslissingen en stappen in de ontwikkelcyclus.
Integratie van een CI/CD-pijplijn met een HSM
We hebben dus codeondertekening nodig, maar een geautomatiseerd buildsysteem met directe toegang tot sleutels is vragen om problemen. Lekken en inbreuken komen voor, daarom is het essentieel om uw codeondertekeningssleutels correct op te slaan en te beschermen in een hardwarebeveiligingsmodule (HSM). De gevolgen van het niet beveiligen van codeondertekeningssleutels met een HSM zijn het afgelopen jaar al zichtbaar geworden, waarbij organisaties de toegang tot hun codeondertekeningssleutels, die nodig zijn voor de firmware, zijn kwijtgeraakt.
Omdat ze firmware onderhouden, kunnen deze sleutels niet worden hergebruikt of vervangen. De gevolgen hiervan zullen de getroffen bedrijven mogelijk jarenlang achtervolgen. HSM's zijn niet alleen tools voor codeondertekening, maar ook voor het beveiligen van Public Key Infrastructure (PKI) en database-encryptiesleutels. Het moet gezegd worden dat HSM's een essentiële tool zijn voor bijna alle organisaties die data en encryptiesleutels opslaan of code ontwikkelen.
Als we het over HSM's hebben, denken sommige mensen met weinig ervaring misschien dat het beheren ervan een lastig proces is. Optimale beveiliging betekent regelmatige updates van de firmware en software, regelmatige audits en een correct beheer van de toegang tot sleutels. Daarnaast is er nog de taak om de HSM daadwerkelijk in uw bestaande pipeline te integreren.
Maatwerk van een gecertificeerde HSM-engineer is duur en tijdrovend. Als er iets kapotgaat, kan het lang duren en onpraktisch zijn om iemand buiten uw bedrijf te moeten inschakelen. Om de tot nu toe gepresenteerde problemen en complexiteiten op te lossen, heeft Encryption Consulting een concurrerend geprijsde oplossing ontwikkeld in Code Sign Secure en de integratie ervan met elke HSM die uw organisatie wenst.
Door gebruik te maken van de mogelijkheden en beveiliging van HSM's zoals die van Thales, Entrust of Utimaco, kan Code Sign Secure eenvoudig worden geïntegreerd in uw bestaande pipelines, waardoor het codeondertekeningsproces wordt gestroomlijnd.
Conclusie
Afhankelijk van de huidige omvang van uw bedrijf beschikt u mogelijk al over een datacenter. Het kan echter ook zijn dat u niet wilt investeren in een datacenter, omdat het simpelweg onpraktisch is voor de omvang van uw organisatie. In beide gevallen kan Code Sign Secure aan uw behoeften voldoen met on-premises of system-as-a-service oplossingen.
System-as-a-service-oplossingen besparen u de moeite van het bezitten en onderhouden van een HSM. Als uw organisatie echter al een HSM heeft of tegelijkertijd PKI of een andere HSM-afhankelijke dienst implementeert, kan dezelfde HSM Code Sign Secure ondersteunen . Om die reden hangt de beste keuze voor uw organisatie af van uw beveiligingsstrategie.
Gelukkig kan Encryption Consulting samen met uw organisatie een koers uitstippelen, waarbij we de huidige tekortkomingen op het gebied van beveiliging en de behoeften van uw organisatie in kaart brengen. Wij bieden audit- en adviesdiensten en zetten ons team van experts in om de ideale oplossing voor u te vinden. 
