Close

DevSecOps-tools

De DevSecOp-tools om DevOps-workflows te beveiligen

Headshot van Kev Zettler
Kev Zettler

Full Stack Web Developer


Ondanks de beste inspanningen van softwarebedrijven, doen zich nog steeds beveiligingslekken voor. Sinds 2000 zijn de persoonlijke gegevens van naar schatting 3,5 miljard mensen gestolen. Een deel van het probleem is dat naarmate softwaretoepassingen toenemen in schaal en complexiteit van de codebase, dit ook geldt voor de oppervlakte voor beveiligingskwetsbaarheden en -exploits.

Aangezien meer organisaties een DevOps-aanpak hanteren, die de processen tussen softwareontwikkeling en IT-teams automatiseert en integreert, zijn traditionele beveiligingstools vaak niet meer toereikend. Ontwikkelaars moeten tegenwoordig beveiligingsmaatregelen integreren in elke fase van de ontwikkelingsworkflow. Als het gaat om beveiliging voor DevOps-workflows, wordt deze praktijk DevSecOps genoemd.

Wat is DevSecOps?


DevSecOps is het integreren van beveiliging in een pipeline van continue integratie, continue levering en continue implementatie. Door DevOps-waarden in softwarebeveiliging te integreren, wordt beveiligingsverificatie een actief, geïntegreerd onderdeel van het ontwikkelingsproces.

Net als DevOps is DevSecOps een organisatorische en technische methodologie die projectmanagementworkflows combineert met geautomatiseerde IT-tools. DevSecOps integreert actieve beveiligingsaudits en beveiligingstests in agile development en DevOps-workflows, zodat beveiliging in het product is ingebouwd in plaats van toegepast op een afgewerkt product.

Om DevSecOps te implementeren, moeten teams:

  • beveiliging introduceren gedurende de hele levenscyclus van softwareontwikkeling om kwetsbaarheden in softwarecode tot een minimum te beperken;
  • ervoor zorgen dat het hele DevOps-team, inclusief ontwikkelaars en operationele teams, de verantwoordelijkheid deelt voor het volgen van best practices voor beveiliging;
  • geautomatiseerde beveiligingscontroles mogelijk maken in elke fase van de softwarelevering door beveiligingscontroles, -tools en -processen te integreren in de DevOps-workflow.

Met DevSecOps moet beveiliging worden toegepast in elke fase van de typische DevOps-pipeline: plannen, bouwen, testen, implementeren, uitvoeren en observeren.

Continu is een gedifferentieerd kenmerk van een DevOps-pipeline. Dit omvat continue integratie, continue levering/implementatie (CI/CD), continue feedback en continue activiteiten. In plaats van eenmalige tests of geplande implementaties vindt elke functie doorlopend plaats.

Tandwielpictogram
gerelateerd materiaal

Meer informatie over Snyk voor Bitbucket Cloud

Pictogram downloaden
Oplossing bekijken

Neem Snyk voor Bitbucket Cloud

DevSecOps Infinity Loop

Plannen


De planningsfase is de minst geautomatiseerde fase van DevSecOps en omvat samenwerking, discussie, beoordeling en strategie van de beveiligingsanalyse. Teams moeten een beveiligingsanalyse uitvoeren en een plan opstellen waarin wordt beschreven waar, hoe en wanneer beveiligingstests worden uitgevoerd. Een populaire planningstool voor DevSecOps is IriusRisk, een samenwerkingsontwerptool voor het modelleren van bedreigingen. Extra tools zijn onder meer tools voor het bijhouden van issues en beheer zoals Jira Software en communicatie- en chattools zoals Slack.

Build


De buildfase begint zodra ontwikkelaars code committen aan de bronrepository. DevSecOps-buildtools richten zich op geautomatiseerde beveiligingsanalyse tegen het buildoutputartefact. Belangrijke beveiligingspraktijken zijn onder meer softwarecomponentenanalyse, statische applicatiesoftwaretests (SAST) en unit tests. Tools kunnen worden aangesloten op een bestaande CI/CD-pipeline om deze tests te automatiseren.

Ontwikkelaars installeren en bouwen regelmatig voort op codeafhankelijkheden van derden, die mogelijk afkomstig zijn van een onbekende of onbetrouwbare bron. Externe codeafhankelijkheden kunnen per ongeluk of kwaadwillig kwetsbaarheden en exploits omvatten. Tijdens de buildfase is het van cruciaal belang om deze afhankelijkheden te controleren en te scannen op beveiligingsproblemen.

Enkele bekende tools om de analyse van de buildfase uit te voeren zijn: OWASP Dependency-Check, SonarQube, SourceClear, Retire.js, Checkmarx en Snyk.

DevSecOps-tools voor de codeerfase helpen ontwikkelaars om veiligere code te schrijven. Belangrijke beveiligingspraktijken in de codeerfase zijn statische code-analyse, code-beoordelingen en pre-commit hooks.

Wanneer beveiligingstools rechtstreeks worden aangesloten op de bestaande Git-workflow van ontwikkelaars, activeert elke commit en merge automatisch een beveiligingstest of -beoordeling. Deze tools ondersteunen verschillende programmeertalen en geïntegreerde ontwikkelingsomgevingen. Enkele van de populairdere beveiligingscodetools zijn Gerrit, Phabricator, SpotBugs, PMD, CheckStyle en Find Security Bugs.

Testen


De testfase wordt geactiveerd nadat een buildartefact is gemaakt en is geïmplementeerd in staging- of testomgevingen. Een uitgebreide testsuite kost veel tijd om uit te voeren. Deze fase moet snel mislukken, zodat de duurdere testtaken overblijven voor het einde.

De testfase maakt gebruik van Dynamic Application Security Testing (DAST)-tools om live applicatiestromen te detecteren, zoals gebruikersverificatie, autorisatie, SQL-injectie en API-gerelateerde eindpunten. De beveiligingsgerichte DAST analyseert een applicatie aan de hand van een lijst van bekende problemen met hoge ernst, zoals die vermeld in de OWASP Top 10.

Er zijn tal van opensource en betaalde testtools beschikbaar, die een verscheidenheid aan functionaliteit en support bieden voor taalecosystemen, waaronder BDD Automated Security Tests, JBroFuzz, Boofuzz, OWASP ZAP, Arachi, IBM AppScan, GAUNTLT en SecApp suite.

Implementeren


Als de vorige fasen succesvol zijn verlopen, is het tijd om het build-artefact in productie te implementeren. De beveiligingsgebieden die tijdens de implementatiefase van belang zijn, zijn die gebieden die alleen tegen het live productiesysteem plaatsvinden. Zo moeten eventuele verschillen in configuratie tussen de productieomgeving en de vorige staging- en ontwikkelingsomgevingen grondig worden herzien. TLS- en DRM-certificaten voor productie moeten worden gevalideerd en beoordeeld voor aanstaande verlenging.

De implementatiefase is een goed moment voor runtime-verificatietools zoals Osquery, Falco en Tripwire, die informatie uit een lopend systeem halen om te bepalen of het presteert zoals verwacht. Organisaties kunnen ook chaos engineering-principes uitvoeren door te experimenteren met een systeem om vertrouwen op te bouwen in het vermogen van het systeem om turbulente omstandigheden te weerstaan. Gebeurtenissen uit de echte wereld kunnen worden gesimuleerd, zoals servers die crashen, storingen op de harde schijf of verbroken netwerkverbindingen. Netflix staat algemeen bekend om zijn Chaos Monkey-tool, die principes van chaos-engineering uitoefent. Netflix maakt ook gebruik van een Security Monkey-tool die zoekt naar overtredingen of kwetsbaarheden in onjuist geconfigureerde beveiligingsgroepen voor infrastructuur en die kwetsbare servers verwijdert.

In de releasefase van de DevSecOps-cyclus moeten de applicatiecode en het uitvoerbare bestand al grondig zijn getest. De fase richt zich op het beveiligen van de infrastructuur van de runtime-omgeving door omgevingsconfiguratiewaarden te onderzoeken, zoals gebruikerstoegangscontrole, netwerkfirewalltoegang en beheer van geheime gegevens.

Het principe van minste privilege (PoLP) is een belangrijk punt van de releasefase. PoLP betekent dat elke gebruiker, elk programma of elk proces minimale toegang heeft om zijn functie uit te voeren. Dit omvat het controleren van API-sleutels en toegangstokens, zodat de eigenaren beperkte toegang hebben. Zonder deze audit kan een aanvaller een sleutel vinden die toegang heeft tot onbedoelde delen van het systeem.

Configuratiebeheertools zijn een belangrijk ingrediënt voor beveiliging in de releasefase, omdat ze inzicht bieden in de statische configuratie van een dynamische infrastructuur. De systeemconfiguratie kan vervolgens worden gecontroleerd en beoordeeld. De configuratie wordt onveranderlijk en kan alleen worden bijgewerkt via commits naar een repository voor configuratiebeheer. Enkele populaire tools voor configuratiebeheer zijn Ansible, Puppet, HashiCorp Terraform, Chef en Docker.

De beveiligingscommunity geeft richtlijnen en aanbevelingen over best practices voor het verstevigen van je infrastructuur, zoals de benchmarks van CIS (Center for Internet Security) en de NIST-configuratiechecklists.

Observeren


Zodra een applicatie is geïmplementeerd en gestabiliseerd in een live productieomgeving, zijn aanvullende beveiligingsmaatregelen vereist. Bedrijven moeten de live-applicatie monitoren en observeren op aanvallen of lekken met geautomatiseerde beveiligingscontroles en beveiligingsmonitoringloops.

Runtime Application Self Protection (RASP) identificeert en blokkeert automatisch binnenkomende beveiligingsbedreigingen in realtime. RASP fungeert als een reverse proxy die inkomende aanvallen waarneemt en de toepassing in staat stelt automatisch opnieuw te configureren zonder menselijke tussenkomst als reactie op expliciete omstandigheden.

Een gespecialiseerd intern of extern team kan penetratietests uitvoeren om exploits of kwetsbaarheden op te sporen door opzettelijk een systeem in gevaar te brengen. Een andere beveiligingstechniek is om een bug bounty-programma aan te bieden waarbij externe personen betaald worden als ze beveiligingsexploits en kwetsbaarheden melden.

Beveiligingsmonitoring maakt gebruik van analyses om kritieke beveiligingsgerelateerde statistieken te beheren en te bewaken. Deze tools markeren bijvoorbeeld verzoeken op gevoelige openbare eindpunten, zoals formulieren voor toegang tot gebruikersaccounts of database-eindpunten. Enkele voorbeelden van populaire runtime-beschermingstools zijn Imperva RASP, Alert Logic en Halo.

Conclusie...


Naarmate meer ontwikkelingsteams hun processen ontwikkelen en nieuwe tools omarmen, moeten ze de beveiliging in de gaten houden. DevSecOps is een cyclisch proces en moet continu worden herhaald en toegepast op elke nieuwe codeimplementatie. Exploits en aanvallers zijn voortdurend in ontwikkeling en het is belangrijk dat moderne softwareteams ook evolueren.

Een goede plek om te beginnen met DevSecOps-testen is het automatiseren van je tests met Bitbucket Pipelines. Bekijk ook de tools en resources voor testautomatisering die beschikbaar zijn op de Atlassian Marketplace.

Kev Zettler
Kev Zettler

Kev is een toonaangevende full stack webontwikkelaar en serieondernemer met jarenlange ervaring in het ontwikkelen van producten en samenstellen van teams met agile methodieken. Hij is een enthousiaste bijdrager, auteur en docent op het gebied van opkomende opensoucetechnologieën, zoals DevOps, cryptovaluta en VR/AR. In zijn vrije tijd doet hij graag mee aan Indie Game Development Jams.


Deel dit artikel
Volgend onderwerp

Aanbevolen artikelen

Bookmark deze resources voor meer informatie over soorten DevOps-teams of voor voortdurende updates over DevOps bij Atlassian.

Toelichting DevOps

DevOps-community

Toelichting DevOps

DevOps-leertraject

Afbeelding van kaart

Gratis aan de slag

Meld je aan voor onze DevOps-nieuwsbrief

Thank you for signing up