Bewerken

Delen via


DevSecOps voor infrastructuur als code (IaC)

Microsoft Sentinel
Azure Monitor
GitHub

Oplossingsideeën

In dit artikel wordt een oplossingsidee beschreven. Uw cloudarchitect kan deze richtlijnen gebruiken om de belangrijkste onderdelen te visualiseren voor een typische implementatie van deze architectuur. Gebruik dit artikel als uitgangspunt om een goed ontworpen oplossing te ontwerpen die overeenkomt met de specifieke vereisten van uw workload.

Dit oplossingsidee illustreert de DevSecOps-pijplijn met behulp van GitHub voor IaC en hoe u de werkstroom beheert voor operationele uitmuntendheid, beveiliging en kostenoptimalisatie.

Terraform is een handelsmerk van Hashicorp. Er wordt geen goedkeuring geïmpliceerd door het gebruik van dit merk.

Architectuur

Diagram met de architectuur voor DevSecOps voor IaC.

Een Visio-bestand van deze architectuur downloaden.

Gegevensstroom

  1. Met testgestuurde ontwikkeling controleert u codewijzigingen voor infrastructuurdefinities, zoals IaC-sjablonen, in GitHub-opslagplaatsen. U ontwikkelt eenheidstests, integratietests en PaC tegelijkertijd om de kwaliteit van IaC te testen.
  2. Pull-aanvragen (PULL's) activeren geautomatiseerde eenheidstests via GitHub Actions.
  3. U configureert het werkstroomproces van GitHub Actions om de IaC te testen met lokaal geïmplementeerde infrastructuurstatussen en -plannen.
  4. U configureert GitHub Actions om te scannen op problemen met codekwaliteit en -beveiliging. Vervolgens gebruikt u hulpprogramma's voor beveiligingsscans die zijn gebouwd op CodeQL van GitHub om te scannen op beveiligingsproblemen op de IaC. Als er een beveiligingsprobleem wordt gedetecteerd, verzendt GitHub waarschuwingen naar de organisatie of naar eigenaren en onderhouders van opslagplaatsen.
  5. Met het hulpprogramma IaC worden resources ingericht en gewijzigd voor elke omgeving, het aanpassen van de grootte, het aantal instanties en andere eigenschappen. U kunt geautomatiseerde integratietests voor IaC uitvoeren op ingerichte resources.
  6. Wanneer een handmatige update van de infrastructuur nodig is, wordt de aangewezen beheerderstoegang verhoogd om de wijzigingen uit te voeren. Na het wijzigen wordt de verhoogde toegang verwijderd en moet een probleem worden aangemeld bij GitHub voor afstemming van de IaC. De afstemmingsstappen en de mogelijkheid zijn afhankelijk van de specifieke IaC-hulpprogramma's.
  7. SecOps bewaakt en beschermt continu tegen beveiligingsrisico's en beveiligingsproblemen. Azure Policy dwingt cloudgovernance af.
  8. Wanneer een anomalie wordt gedetecteerd, moet er automatisch een probleem worden gegenereerd in GitHub voor correcties.

Onderdelen

  • GitHub is een platform voor het hosten van code voor versiebeheer en samenwerking. Een GitHub-opslagplaats voor broncodebeheer bevat alle projectbestanden en de revisiegeschiedenis. Ontwikkelaars kunnen samenwerken om code in de opslagplaats bij te dragen, te bespreken en te beheren.
  • GitHub Actions biedt een reeks build- en releasewerkstromen die betrekking hebben op continue integratie (CI), geautomatiseerde tests en containerimplementaties.
  • GitHub Advanced Security biedt functies voor het beveiligen van uw IaC. Hiervoor is een andere licentie vereist.
  • CodeQL biedt hulpprogramma's voor beveiligingsscans die worden uitgevoerd op statische code om onjuiste configuraties van infrastructuur te detecteren.
  • Terraform is een partnerproduct dat is ontwikkeld door HashiCorp waarmee infrastructuurautomatisering in Azure en andere omgevingen mogelijk is.
  • Microsoft Defender voor Cloud biedt geïntegreerd beveiligingsbeheer en geavanceerde beveiliging tegen bedreigingen voor hybride cloudworkloads.
  • Microsoft Sentinel is een cloudeigen SIEM- en SOAR-oplossing (Automated Response) voor security orchestration. Het maakt gebruik van geavanceerde AI- en beveiligingsanalyses om u te helpen bedreigingen in uw hele onderneming te detecteren en erop te reageren.
  • Azure Policy is teams behulpzaam bij het beheren en voorkomen van IT-problemen door middel van beleidsdefinities die regels voor cloudresources afdwingen. Als uw project bijvoorbeeld op het punt staat om een virtuele machine te implementeren met een niet-herkende SKU, waarschuwt Azure Policy u voor het probleem en stopt de implementatie.
  • Azure Monitor verzamelt en analyseert app-telemetrie, zoals metrische prestatiegegevens en activiteitenlogboeken. Wanneer deze service onregelmatige omstandigheden identificeert, worden apps en personeel gewaarschuwd.

Scenariodetails

Conceptueel gezien is devSecOps voor infrastructuur als code (IaC) vergelijkbaar met DevSecOps voor toepassingscode in AKS. Maar u hebt een andere set pijplijnen en hulpprogramma's nodig voor het beheren en automatiseren van continue integratie en continue levering (CI/CD) voor IaC.

Wanneer u IaC gaat gebruiken, is het belangrijk om automatiseringstests te maken tijdens het ontwikkelen van de code. Deze tests verminderen de complexiteit van het testen van IaC wanneer uw workload wordt geschaald. U kunt configuratiestatussen voor lokale infrastructuur gebruiken, zoals Terraform-statussen en plannen voor het ontwikkelen van testgestuurde ontwikkeling (TDD) voor IaC. Met deze configuratiestatussen worden de werkelijke implementaties geëmuleren. U kunt integratietests voor IaC uitvoeren op werkelijke infrastructuurimplementaties met behulp van de Azure Resource Graph REST API.

Beleid als code (PaC) is ook een belangrijke methode om infrastructuur te leveren die voldoet aan regelgeving en corporate governance. U kunt PaC-werkstromen toevoegen aan uw pijplijnen om cloudgovernance te automatiseren.

Het beveiligen van de infrastructuur vroeg in de ontwikkelingsfase vermindert de risico's van onjuiste configuratie van infrastructuur die na de implementatie punten voor aanvallen opent. U kunt hulpprogramma's voor statische codeanalyse integreren voor infrastructuur zoals Synk of Aquasecurity tfsec met behulp van CodeQL van GitHub om beveiligingsproblemen in infrastructuurcode te scannen. Dit proces is vergelijkbaar met SAST (Static Application Security Testing).

Wanneer de infrastructuur wordt geïmplementeerd en operationeel is, kunnen cloudconfiguratiedriften moeilijk worden opgelost, met name in productieomgevingen.

Stel toegewezen service-principals in om cloudinfrastructuur voor productieomgevingen te implementeren of te wijzigen. Verwijder vervolgens alle andere toegang die handmatige configuratie van de omgeving toestaat. Als u handmatige configuraties nodig hebt, verhoogt u de toegang voor de aangewezen beheerder en verwijdert u verhoogde toegang zodra de wijziging is gewijzigd. U moet Azure Monitor configureren om een probleem op te lossen in GitHub voor ontwikkelaars om de wijzigingen af te stemmen. Handmatige configuratie moet echter zo mogelijk worden vermeden.

Het is belangrijk om continu de cloudomgeving te bewaken op bedreigingen en beveiligingsproblemen om beveiligingsincidenten te voorkomen. U kunt SIEM-hulpprogramma's (Threat Protection and Security Information and Security Information and Event Management) gebruiken om abnormaal verkeer te detecteren. Met deze hulpprogramma's worden beveiligingsbeheerders automatisch gewaarschuwd en treedt er een probleem op in GitHub voor aandacht.

Potentiële gebruikscases

U maakt deel uit van een centraal team van IaC-ontwikkelaars die een strategie voor meerdere clouds gebruiken voor het fictieve bedrijf Contoso. U wilt de cloudinfrastructuur implementeren in een nieuwe Azure-landingszone met behulp van DevSecOps voor IaC om de beveiliging en kwaliteit van implementaties te garanderen. U wilt ook alle wijzigingen in de infrastructuur bijhouden en controleren.

Medewerkers

Dit artikel wordt onderhouden door Microsoft. De tekst is oorspronkelijk geschreven door de volgende Inzenders.

Belangrijkste auteurs:

Volgende stappen