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 die Gebruikmaakt van GitHub voor infrastructuur als code (IaC). Ook wordt beschreven hoe u de werkstroom kunt beheren 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

De volgende gegevensstroom komt overeen met het vorige diagram:

  1. Gebruik testgestuurde ontwikkeling om codewijzigingen voor infrastructuurdefinities, zoals IaC-sjablonen, te controleren in GitHub-opslagplaatsen. U ontwikkelt eenheidstests, integratietests en beleid als code (PaC) tegelijkertijd om de kwaliteit van de IaC te testen.

  2. Pull-aanvragen activeren geautomatiseerde eenheidstests via GitHub Actions.

  3. Configureer het werkstroomproces van GitHub Actions om de IaC te testen met behulp van lokaal geïmplementeerde infrastructuurstatussen en -plannen.

  4. Configureer GitHub Actions om te scannen op problemen met codekwaliteit en -beveiliging. Maak uw eigen aangepaste GitHub CodeQL-query's om IaC-sjablonen te analyseren en potentiële beveiligingsproblemen te detecteren. Als er een beveiligingsprobleem wordt gedetecteerd, verzendt GitHub waarschuwingen naar de organisatie of naar eigenaren en onderhouders van opslagplaatsen.

  5. Het hulpprogramma IaC richt resources voor elke omgeving in en wijzigt deze door de grootte, het aantal exemplaren en andere eigenschappen aan te passen. 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. U moet ook een GitHub-probleem vastleggen voor afstemming van de IaC. De afstemmingsstappen en -benaderingen 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, wordt een GitHub-probleem automatisch geregistreerd, zodat dit kan worden opgelost.

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, 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 OPLOSSING voor beveiligingsinformatie en gebeurtenisbeheer (SIEM) en security orchestration automated response (SOAR). Het maakt gebruik van geavanceerde AI- en beveiligingsanalyses om u te helpen bedreigingen in uw hele onderneming te detecteren en erop te reageren.

  • Met Azure Policy kunnen teams IT-problemen beheren en voorkomen met behulp van beleidsdefinities waarmee regels voor cloudresources kunnen worden afgedwongen. Als uw project bijvoorbeeld een virtuele machine met een niet-herkende SKU gaat implementeren, 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 is devSecOps voor IaC vergelijkbaar met DevSecOps voor toepassingscode in Azure Kubernetes Service (AKS). Maar u hebt een andere set pijplijnen en hulpprogramma's nodig om continue integratie en continue levering voor IaC te beheren en automatiseren.

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 testgestuurde ontwikkeling. 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.

PaC is een andere 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 onjuist geconfigureerde infrastructuur die punten voor aanval na de implementatie blootstelt. U kunt hulpprogramma's voor statische codeanalyse, zoals Synk of Aqua Security tfsec, integreren met behulp van CodeQL van GitHub om te scannen op beveiligingsproblemen in infrastructuurcode. Dit proces is vergelijkbaar met het testen van statische toepassingsbeveiliging.

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, kunt u de toegang voor de aangewezen beheerder verhogen en vervolgens verhoogde toegang verwijderen nadat de wijziging is aangebracht. U moet Azure Monitor zo configureren dat er een GitHub-probleem optreedt, zodat ontwikkelaars de wijzigingen kunnen afstemmen. Vermijd indien mogelijk handmatige configuratie.

Het is belangrijk om continu de cloudomgeving te bewaken op bedreigingen en beveiligingsproblemen om beveiligingsincidenten te voorkomen. U kunt bedreigingsbeveiliging en SIEM-hulpprogramma's gebruiken om abnormaal verkeer te detecteren. Met deze hulpprogramma's worden beveiligingsbeheerders automatisch gewaarschuwd en wordt een GitHub-probleem gegenereerd.

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 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

Microsoft onderhoudt dit artikel. De volgende inzenders hebben dit artikel geschreven.

Belangrijkste auteurs:

Als u niet-openbare LinkedIn-profielen wilt zien, meldt u zich aan bij LinkedIn.

Volgende stappen