In dit artikel verkennen we het onderwerp ‘shifting left’ en geven we antwoord op de volgende vragen:
- Wat is ‘shifting left’?
- Waarom ‘shifting left’ nodig is?
- Hoe pak je het aan?
Wat is ‘Shifting Left’ ?
Als je kijkt naar de traditionele softwareontwikkelingscyclus dan is ‘shifting left’ het naar links verplaatsen van een fase van het softwareontwikkelingsproces. Specifiek verwijst het naar de praktijk om beveiliging en testen zo vroeg mogelijk in het software ontwerp en -ontwikkelingsproces aan te pakken.
Waarom shifting left belangrijk is
In de traditionele levenscyclus van softwareontwikkeling werden veiligheidscontroles en -beoordelingen vaak pas aan het eind van het ontwikkelingsproces voltooid. Dit leidde vaak tot conflicten tussen verschillende teams als gevolg van verschillende prioriteiten. Het ontwikkelingsteam kan bijvoorbeeld gericht zijn op het opleveren van de applicatie, terwijl het beveiligingsteam ervoor wil zorgen dat eventuele beveiligingsproblemen worden geïdentificeerd voordat deze in productie worden genomen. In dit geval willen de twee teams in verschillende richtingen werken, wat tot conflicten kan leiden.
Een ander nadeel van later testen van de beveiliging in je proces, is dat je uiteindelijk misschien wat technische problemen moet verwerken die je had kunnen voorkomen. Technische problemen en/of omwegen kunnen de ondersteuning van een applicatie duur maken en kunnen in de toekomst leiden tot prestatieproblemen.
Een ‘shift naar links’, door beveiligingsbeoordelingen vroeg in het ontwerp- en ontwikkelproces aan te pakken, biedt veel voordelen in vergelijking met het alternatief. Het kan voordelen voor een organisatie realiseren, waaronder stabiliteit, wendbaarheid, productiviteit en snelheid, om er maar een paar te noemen.
Door beveiligingsaspecten al in de ontwerpfase van het ontwikkelproces mee te nemen, kan je ervoor zorgen dat het software ontwerp zo veilig mogelijk is voordat je ontwikkelteam begint met het schrijven van code. Kortom, door in elke fase van het software ontwikkelingstraject rekening te houden met beveiliging kan je beter en efficiënter samenwerken.
Hoe kunnen we naar links verschuiven?
'Shifting left' is niet iets wat je maar één keer doet, het is een traject. Laten we het eens hebben over een aantal gebieden waar je rekening mee moet houden als je over 'shifting left' nadenkt.
1. Bouw cross-functionele of multi-disciplinaire teams
Traditioneel verdelen organisaties hun personeel op basis van hun skillsets. Je hebt misschien een afdeling voor ontwikkelaars, IT-Ops medewerkers en voor security specialisten. Dit betekent dat je vaak aparte teams had die samenwerkten, wat kon leiden tot conflicten en een "zij en wij"-mentaliteit. Dit kan op termijn schadelijk zijn voor je organisatie.
Een alternatieve aanpak is om meerdere vaardigheden in hetzelfde team te integreren en zo een cross-functioneel of multidisciplinair team te creëren. Door een team te creëren met ontwikkelaars, testers, DevOps-professionals en softwarebeveiligingsspecialisten, kan je de efficiëntie en wendbaarheid verhogen. Het moreel van het personeel kan ook worden gestimuleerd omdat je nieuwe team dezelfde doelen nastreeft.
2. Opleiding
Hoewel niet direct betrokken bij het proces van het ontwerpen, ontwikkelen en beveiligen van je software, is training een zeer belangrijk aspect van ‘shifting left’. Met de snelheid waarmee technologie verandert, vooral in een cloud-wereld, is het belangrijker dan ooit om te investeren in training voor je personeel. Training kan helpen om vaardigheden, zoals veilige coderingspraktijken, relevant en up to date te houden.
Door je personeel doorlopend leermogelijkheden te bieden en eventueel leer- en certificeringsdoelen op te nemen in functioneringsgesprekken en voortgangsplanning, kan je ervoor zorgen dat bestaande vaardigheden scherp blijven en dat nieuwe vaardigheden en werkwijzen gaandeweg worden opgepikt.
Uiteindelijk zal je bedrijf, door ervoor te zorgen dat het leertraject wordt ondersteund, profiteren van veilige, goed gebouwde software en van betrokken, vooruitdenkende medewerkers.
3. Betrek partners
Een ander aspect zijn partners. In een cloud-first wereld is het waarschijnlijk dat je als softwareontwikkelingsbedrijf of ISV samenwerkt met een serviceprovider, zoals Intercept. Zij bouwen platforms en onderhouden het platform waar je software op draait.
Net zoals het belangrijk is dat je eigen personeel veilige ontwikkelingspraktijken volgt, is het ook belangrijk dat je partners best practices volgen als het gaat om de creatie en het beheer van je platform. Deze best practices kunnen betrekking hebben op de ontwikkeling en het onderhoud van Infrastructure as Code (Iac), veilig beheer van geheimen, veilig platformontwerp en nog veel meer.
4. Adopteer de DevOps-cultuur en werkpraktijken
Volgens Microsoft What is DevOps? DevOps explained | Microsoft Azure),is DevOps: "De vereniging van mensen, processen, en technologie om voortdurend waarde te leveren aan klanten."
Zoals hierboven vermeld, gaat DevOps verder met het idee dat voorheen gescheiden vaardigheden kunnen samenwerken om toepassingen te produceren die veiliger, betrouwbaarder en stabieler zijn.
In hetzelfde artikel waarnaar hierboven wordt verwezen, stelt Microsoft ook dat "Door een DevOps-cultuur te adopteren samen met DevOps-praktijken en -tools, krijgen teams de mogelijkheid om beter te reageren op de behoeften van de klant, het vertrouwen te vergroten in de applicaties die ze bouwen en bedrijfsdoelen sneller te bereiken."
Enkele van de primaire voordelen van het adopteren van een DevOps-methodologie zijn wendbaarheid en snelheid. Deze en andere voordelen kunnen bedrijven in staat stellen om sneller van ontwerp naar release te gaan, het kan een groter aanpassingsvermogen aan trends in de industrie mogelijk maken.
Dezelfde principes kunnen worden toegepast op het idee van ‘shifting left’ of DevSecOps. Deze methodologie, in combinatie met de eerder genoemde cross-functionele teams, stelt je in staat om de beveiliging van jouw applicatie voortdurend en consistent te verbeteren.
5. Blijf de code controleren
Een zeer belangrijk aspect van "shifting left" is ervoor te zorgen dat de broncode van je applicatie voortdurend wordt gecontroleerd. We raden aan om je code na elke commit te controleren om er zeker van te zijn dat er geen geheimen in de repository zitten, of die nu hard gecodeerd zijn of in configuratiebestanden. Regelmatige controle van de broncode kan ook helpen bij het identificeren en bestrijden van technische fouten.
In een toekomstig artikel zullen we praktische manieren bespreken om automatisering toe te voegen aan dit proces om de efficiëntie te verbeteren.
6. Dependency checking
Dependency checking of supply chain management is de laatste jaren veel in het nieuws geweest. Je denkt misschien meteen aan de SolarWinds hack in 2020 als voorbeeld hiervan.
Bij softwareontwikkeling gebruiken we vaak bibliotheken en software geschreven door anderen om bepaalde functionaliteit uit te voeren binnen onze applicatie stack. Dit stelt ons in staat functionaliteit aan de applicatie toe te voegen zonder dat we onze eigen versie van die functionaliteit hoeven te schrijven.
Hoewel deze aanpak tijd en geld bespaart, brengt het ook zijn eigen risico's met zich mee. Wat als de bibliotheek of het pakket waar je applicatie op vertrouwt in gevaar komt? Wat als je, onbedoeld, de gecompromitteerde code in je applicatie trekt? Dit kan leiden tot de compromittering van je eigen software en van de systemen van jouw klant waarop de software draait. Wat vervolgens kan leiden tot grote reputatieschade voor je bedrijf.
Er zijn veel manieren om aanvallen op de toeleveringsketen tegen te gaan door enkele best practices voor afhankelijkheidsbeheer te volgen. Hiertoe behoren onder meer version pinning, hash-verificatie en het verwijderen van ongebruikte libraries en dependencies.
Google heeft een geweldig artikel over het onderwerp geschreven, bekijk het hier: Best practices for dependency management | Google Cloud Blog
7. Automatiseren
Je denkt misschien, hoe kan mijn bedrijf efficiënter, wendbaarder, veiliger en productiever worden? Het antwoord daarop is automatisering. Als je de bovenstaande aanbevelingen zou aannemen zonder zoveel mogelijk te automatiseren, zou je precies het tegenovergestelde van de hierboven genoemde voordelen bereiken.
De conclusie
Het doel van dit artikel was om de voordelen van shifting left te bespreken en stof tot nadenken te geven. De hierboven genoemde punten zijn beslist geen uitputtende lijst van aanbevelingen. Zoals eerder gezegd, "naar links verschuiven" is geen eenmalige verandering, het is een constant, iteratief proces.
Hoe kunnen we helpen?
Intercept werkt elke dag met Independent Software Vendors (ISV's), zoals jij. Wij zijn gespecialiseerd in het helpen van onze klanten om alle voordelen van de publieke cloud, en Azure in het bijzonder, te benutten.
Intercept kan in elke fase van je softwareontwikkelingsprojecten met je samenwerken om je te helpen met cloud-native ontwikkelpraktijken. Ook denken we mee hoe je het beste ‘naar links kunt schuiven’.
In het volgende artikel zullen we het hebben over praktische manieren waarop je ‘naar links kunt schrijven’ met behulp van DevOps-tooling en -automatisering.