Softwareontwikkeling en security gaan hand in hand, althans .. zo zou het moeten zijn. In dit artikel leggen we uit welke rol security speelt in softwareontwikkeling. We kijken niet alleen naar het bouwen van de software of applicatie maar naar de volledige lifecycle.
Stage 1: Bedenken van je applicatie
Al tijdens het bedenken van een applicatie moet er rekening gehouden worden met de veiligheid hiervan. Meestal begin je bij het in kaart brengen van de omgeving waar de applicatie zich in zal gaan bevinden, de gebruikers die de applicatie gaan gebruiken en de data die ze geven of mogen inzien.
Daarnaast doe je altijd een uitgebreide risicoanalyse op de te ontwikkelen applicatie. Door hier in het beginstadium al inzichten in te vergaren krijg je een beter beeld hoe veiligheid blijvend een rol zou moeten gaan spelen in je applicatie. In het kort kan je zeggen dat het doel zou moeten zijn dat je de veiligheid van de applicatie en haar gebruikers meeneemt in het plannen en ontwerpen van je toekomstige applicatie.
Stage 2: Definiëring van je requirements
In deze fase ben je bezig met het definiëren van functionele, technische en design requirements, maar omdat je in de eerste fase al veiligheid hebt meegenomen in je scope zal het niet gek klinken dat hier de veiligheid requirements worden gedefinieerd als onderdeel van de scope van je applicatie.
Stage 3: Design
In de design fase worden niet alleen de mooie cosmetische dingen ontworpen, maar ook de architectuur van de te bouwen applicatie. Ook hier geldt dat de eerder opgedane security vereisten zullen worden meegenomen in de technische architectuurkeuzes.
Stage 4: (Veilig) software productontwikkeling
Bouwen van software is leuk, maar kan ook super frustrerend zijn. De systemen, programmeertalen, en tools die ontwikkelaars gebruiken zijn namelijk constant onderhevig aan verandering. De code die daarmee geschreven wordt is dus morgen misschien wel niet meer goed en veilig genoeg.
Deze fase kenmerkt zich door dingen als coding standaarden, environment setup (OTAP straat), version control, maar ook linters, pipelines en security gates. Voordat er ook maar een letter code wordt geschreven en aan de bouw van de applicatie wordt begonnen. Veel van deze dingen dragen bij aan het schrijven van veilige code en veilig houden van software nadien het is gereleased.
De OTAP straat
Om ervoor te zorgen dat er alleen stabiele software live staat gebruiken we binnen Dharma de OTAP straat. Dat wil zeggen dat de software in verschillende omgevingen ontwikkeld en getest wordt. Er wordt dus nooit zomaar een stukje software gemaakt wat direct voor het publiek toegankelijk is.
1.
Ontwikkelomgeving
Software bouwen doe je in principe altijd met een team, 1 developer is geen developer zeggen ze weleens. Alle developers ontwikkelen hun code in hun eigen (laptop) omgeving met gebruik van een programma om code in te schrijven (IDE). Als deze code klaar is ‘verplaatsen’ ze de code naar een zogeheten ‘testomgeving’.
2.
Testomgeving
Binnen de testomgeving kan door meerdere ontwikkelaars getest worden hoe de code werkt op een server. Nadat alles goed is nagelopen in de testomgeving ‘verplaats’ de code zich naar de ‘Acceptatie omgeving’.
3.
Acceptatieomgeving
De Acceptatieomgeving is de plek waar de klant beoordeeld of de code en bijbehorende aanpassing naar wens geïmplementeerd is. Ook hier wordt weer uitvoerig getest om zeker te zijn dat de code ‘productie ready’ is. En als laatste stap, bij een release wordt de code verplaatst naar de productieomgeving.
4.
Productieomgeving
De productie omgeving is de plek waar de gebruikers met hun data gebruik maken van het systeem. Een omgeving die stabiel is en goed is doorgetest.
Stage 5: Test
In deze fase wordt de geschreven software getest op allerlei vlakken zoals manueel, unit testing en performance. Maar wat veel mensen niet weten is dat ook in deze fase alle componenten met elkaar samenwerken en er uitvoerig getest wordt op veiligheid van de applicatie en of alle veiligheid requirements zoals eerder gesteld gehaald zijn. Deze veiligheidstesten worden veelal door gerenommeerde tools gedaan en zijn dan ook een vast onderdeel van de applicatie en het ontwikkelproces.
Stage 6: Deploy en beheren
Nadat alle seinen op groen staan wordt de applicatie gelanceerd naar een productie omgeving en begint gelijk ook het onderhoud/beheer van de applicatie.
Als de software Live staat (op de productieomgeving) is het nog steeds niet klaar 😅want zoals we eerder zeiden, de omgeving waarin veranderd en daar moet op geanticipeerd worden. Om software goed te kunnen onderhouden wordt veelal een beheerplan gemaakt, een plan waarin beschreven wordt welk onderhoud gepleegd wordt en wanneer. Ook wordt er omschreven op welke manier er bekeken wordt of alles nog werkt (monitoring) en welke updates er beschikbaar zijn van onderdelen of services waar de applicatie gebruik van maakt.
Naast het beheren van de software zal deze ook onderhevig zijn aan aanpassingen. Gebruikers feedback wat tot nieuwe inzichten leidt, of functionaliteit die toegevoegd dient te worden. Aanpassingen die allemaal veilig en beheerst uitgevoerd dienen te worden.
Minimaal 1 keer per jaar voer je op de software een stress en penetratietest uit, dat is een test die door een onafhankelijke partij wordt uitgevoerd om te onderzoeken of ze ‘naar binnen’ kunnen komen en wat er gebeurt als er super veel mensen tegelijkertijd de applicatie gebruiken. Manieren dus om de applicatie doorlopend te controleren op robuustheid, veiligheid en vooral om erachter te komen wat eventueel beter kan of moet.
Dharma en security
Bij Dharma nemen we veiligheid erg serieus, we werken volgens de normeringen voor de branches waar we in werken en hebben de verklaringen en certificeringen die nodig zijn om gecontroleerd software te ontwikkelen.
Onze mensen zijn opgeleid, gecertificeerd en gecontroleerd op de benodigde competenties en gedrag. Voor ons is dit de normaalste zaak van de wereld. Als je software ontwikkeld, doe je dat goed, veilig en beheerst. Zeker in branches waarin dat extra hard nodig is (denk aan de zorg).
Mocht je geïnteresseerd zijn in ons beleid, certificering en gebruikte normeringen dan nodigen we je graag uit voor een kop koffie.