Dela via


DevSecOps för infrastruktur som kod (IaC)

Microsoft Sentinel
Azure Monitor
GitHub

Lösningsidéer

I den här artikeln beskrivs en lösningsidé. Molnarkitekten kan använda den här vägledningen för att visualisera huvudkomponenterna för en typisk implementering av den här arkitekturen. Använd den här artikeln som utgångspunkt för att utforma en välkonstruerad lösning som överensstämmer med arbetsbelastningens specifika krav.

Den här lösningsidén illustrerar DevSecOps-pipelinen som använder GitHub för infrastruktur som kod (IaC). Den beskriver också hur du styr arbetsflödet för driftskvalitet, säkerhet och kostnadsoptimering.

Terraform är ett varumärke som tillhör Hashicorp. Inget godkännande understås av användningen av det här märket.

Arkitektur

Diagram som visar arkitekturen för DevSecOps för IaC.

Ladda ned en Visio-fil med den här arkitekturen.

Dataflöde

Följande dataflöde motsvarar föregående diagram:

  1. Använd testdriven utveckling för att kontrollera kodändringar för infrastrukturdefinitioner, till exempel IaC-mallar, i GitHub-lagringsplatser. Du utvecklar enhetstester, integreringstester och principer som kod (PaC) samtidigt för att testa IaC-kvaliteten.

  2. Pull-begäranden utlöser automatiserad enhetstestning via GitHub Actions.

  3. Konfigurera GitHub Actions-arbetsflödesprocessen för att testa IaC med hjälp av lokalt distribuerade infrastrukturtillstånd och planer.

  4. Konfigurera GitHub Actions för att söka efter kodkvalitet och säkerhetsproblem. Skapa dina egna anpassade GitHub CodeQL-frågor för att analysera IaC-mallar och identifiera potentiella säkerhetsrisker. Om en säkerhetsrisk upptäcks skickar GitHub aviseringar till organisationen eller till lagringsplatsägare och underhållare.

  5. IaC-verktyget etablerar och ändrar resurser för varje miljö genom att skräddarsy storlek, antal instanser och andra egenskaper. Du kan köra automatiserade integreringstester för IaC på etablerade resurser.

  6. När en manuell uppdatering av infrastrukturen krävs utökas den avsedda administratörsåtkomsten för att utföra ändringarna. Efter ändringen tas den förhöjda åtkomsten bort. Du bör också logga ett GitHub-problem för avstämning av IaC. Avstämningsstegen och metoderna beror på de specifika IaC-verktygen.

  7. SecOps övervakar och skyddar kontinuerligt mot säkerhetshot och sårbarheter. Azure Policy tillämpar molnstyrning.

  8. När en avvikelse identifieras loggas ett GitHub-problem automatiskt så att det kan lösas.

Komponenter

  • GitHub är en kodvärdplattform för versionskontroll och samarbete. I den här arkitekturen lagrar den IaC-mallar och fungerar som den centrala lagringsplatsen för arbetsflöden för utveckling, testning och styrning.

  • GitHub Actions är ett verktyg för kontinuerlig integrering och kontinuerlig distribution (CI/CD) som gör det möjligt för arbetsflöden att skapa, testa och distribuera kod direkt från GitHub-lagringsplatser. I den här arkitekturen automatiserar GitHub Actions enhetstestning, säkerhetsgenomsökning och infrastrukturetablering för IaC-pipelines.

  • GitHub Advanced Security är en uppsättning säkerhetsfunktioner som innehåller statisk analys och sårbarhetsidentifiering för kod som lagras i GitHub. I den här arkitekturen förbättrar den IaC-säkerheten genom att genomsöka mallar och skapa aviseringar om felkonfigurationer eller risker.

  • CodeQL är en semantisk kodanalysmotor som gör det möjligt för anpassade frågor att identifiera sårbarheter och felkonfigurationer i kod. I den här arkitekturen genomsöker CodeQL lagringsplatsens artefakter för att identifiera potentiella säkerhetsproblem före distributionen.

  • Terraform är ett verktyg för infrastrukturautomatisering med öppen källkod som utvecklats av HashiCorp och som möjliggör deklarativ etablering i molnmiljöer. I den här arkitekturen etablerar och ändrar Terraform Azure-resurser baserat på IaC-definitioner och stöder testdrivna utvecklingsarbetsflöden.

  • Microsoft Defender för molnet är en säkerhetshanteringsplattform som ger skydd mot hot i hybridmolnarbetsbelastningar. I den här arkitekturen övervakar den kontinuerligt distribuerad infrastruktur för sårbarheter.

  • Microsoft Sentinel är en molnbaserad lösning för säkerhetsinformation och händelsehantering (SIEM) och soar-lösning (security orchestration automated response) som använder AI och analys för att identifiera och svara på hot. I den här arkitekturen övervakar Microsoft Sentinel infrastrukturaktivitet och genererar aviseringar eller GitHub-problem när avvikelser identifieras.

  • Azure Policy är en styrningstjänst som tillämpar regler och efterlevnad mellan Azure-resurser. I den här arkitekturen validerar Azure Policy IaC-distributioner mot organisations- och arbetsbelastningsstandarder och blockerar inkompatibla konfigurationer. Om ditt projekt till exempel är på väg att distribuera en virtuell dator som har en okänd SKU varnar Azure Policy dig och stoppar distributionen.

  • Azure Monitor är en telemetri- och observerbarhetsplattform som samlar in prestandamått och aktivitetsloggar från Azure-resurser. I den här arkitekturen identifierar Azure Monitor oregelbundna förhållanden i infrastrukturen och utlöser aviseringar så att prioritering och reparation kan starta.

Information om scenario

Konceptuellt liknar DevSecOps för IaC DevSecOps för programkod i Azure Kubernetes Service (AKS). Men du behöver en annan uppsättning pipelines och verktyg för att hantera och automatisera kontinuerlig integrering och kontinuerlig leverans för IaC.

När du antar IaC är det viktigt att skapa automatiseringstester när du utvecklar koden. Dessa tester minskar komplexiteten i att testa IaC när arbetsbelastningen skalar. Du kan använda konfigurationstillstånd för lokal infrastruktur som Terraform-tillstånd och planer för testdriven utveckling. Dessa konfigurationstillstånd emulerar de faktiska distributionerna. Du kan köra integreringstester för IaC på faktiska infrastrukturdistributioner med hjälp av REST-API:et för Azure Resource Graph.

PaC är en annan viktig metod för att leverera infrastruktur som uppfyller regler och företagsstyrning. Du kan lägga till PaC-arbetsflöden i dina pipelines för att automatisera molnstyrningen.

Att skydda infrastrukturen tidigt i utvecklingsfasen minskar risken för felkonfigurerad infrastruktur som exponerar punkter för angrepp efter distributionen. Du kan integrera analysverktyg för statisk kod som Synk eller Aqua Security tfsec med hjälp av GitHubs CodeQL för att söka efter säkerhetsrisker i infrastrukturkod. Den här processen liknar säkerhetstestning av statiska program.

När infrastrukturen distribueras och används kan molnkonfigurationsdrifter vara svåra att lösa, särskilt i produktionsmiljöer.

Konfigurera dedikerade tjänsthuvudnamn för att distribuera eller ändra molninfrastruktur för produktionsmiljöer. Ta sedan bort all annan åtkomst som tillåter manuell konfiguration av miljön. Om du behöver manuella konfigurationer höjer du åtkomsten för den utsedda administratören och tar sedan bort förhöjd åtkomst när ändringen har gjorts. Du bör konfigurera Azure Monitor för att skapa ett GitHub-problem så att utvecklare kan stämma av ändringarna. Undvik manuell konfiguration om möjligt.

Det är viktigt att kontinuerligt övervaka molnmiljön efter hot och sårbarheter för att förhindra säkerhetsincidenter. Du kan använda hotskydd och SIEM-verktyg för att identifiera onormal trafik. De här verktygen aviserar automatiskt säkerhetsadministratörer och skapar ett GitHub-problem.

Potentiella användningsfall

Du ingår i ett centralt team med IaC-utvecklare som använder en strategi för flera moln för det fiktiva företaget Contoso. Du vill distribuera molninfrastruktur till en ny Azure-landningszon med hjälp av DevSecOps for IaC för att säkerställa säkerhet och kvalitet för distributioner. Du vill också spåra och granska alla ändringar i infrastrukturen.

Deltagare

Microsoft ansvarar för den här artikeln. Följande deltagare skrev den här artikeln.

Huvudsakliga författare:

Om du vill se linkedin-profiler som inte är offentliga loggar du in på LinkedIn.

Nästa steg