DevSecOps för infrastruktur som kod (IaC)

Microsoft Sentinel
Azure Monitor
GitHub

Lösningsidéer

Den här artikeln är en lösningsidé. Om du vill att vi ska utöka innehållet med mer information, till exempel potentiella användningsfall, alternativa tjänster, implementeringsöverväganden eller prisvägledning, kan du meddela oss genom att ge GitHub-feedback.

Den här lösningsidén illustrerar DevSecOps-pipelinen med GitHub för IaC och 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

  1. Med testdriven utveckling kontrollerar du kodändringar för infrastrukturdefinitioner, till exempel IaC-mallar, i GitHub-lagringsplatser. Du utvecklar enhetstester, integreringstester och PaC samtidigt för att testa kvaliteten på IaC.
  2. Pull-begäranden utlöser automatiserad enhetstestning via GitHub Actions.
  3. Du konfigurerar arbetsflödesprocessen för GitHub Actions för att testa IaC med lokalt distribuerade infrastrukturtillstånd och planer.
  4. Du konfigurerar GitHub Actions för att söka efter kodkvalitet och säkerhetsproblem. Sedan använder du säkerhetsgenomsökningsverktyg som bygger på GitHubs CodeQL för att söka efter säkerhetsrisker på IaC. 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ö, skräddarsyr 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 och ett problem bör loggas in på GitHub för avstämning av IaC. Avstämningsstegen och möjligheten 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 bör ett problem automatiskt uppstå i GitHub för korrigeringar.

Komponenter

  • GitHub är en kodvärdplattform för versionskontroll och samarbete. En GitHub-lagringsplats för källkontroll innehåller alla projektfiler och deras revisionshistorik. Utvecklare kan samarbeta för att bidra, diskutera och hantera kod på lagringsplatsen.
  • GitHub Actions tillhandahåller en uppsättning bygg- och versionsarbetsflöden som omfattar kontinuerlig integrering (CI), automatiserad testning och containerdistributioner.
  • GitHub Advanced Security innehåller funktioner för att skydda din IaC. Det kräver en annan licens.
  • CodeQL tillhandahåller säkerhetsgenomsökningsverktyg som körs på statisk kod för att identifiera felkonfigurationer i infrastrukturen.
  • Terraform är en partnerprodukt utvecklad av HashiCorp som möjliggör infrastrukturautomatisering i Azure och andra miljöer.
  • Microsoft Defender för molnet ger enhetlig säkerhetshantering och avancerat skydd mot hot i hybridmolnarbetsbelastningar.
  • Microsoft Sentinel är en molnbaserad SOAR-lösning (SECURITY Orchestration Automated Response). Den använder avancerad AI och säkerhetsanalys som hjälper dig att identifiera och svara på hot i hela företaget.
  • Med Azure Policy kan team hantera och förebygga IT-problem via principdefinitioner som framtvingar regler för molnresurser. Om ditt projekt till exempel är på väg att distribuera en virtuell dator med en okänd SKU varnar Azure Policy dig om problemet och stoppar distributionen.
  • Azure Monitor samlar in och analyserar apptelemetri, till exempel prestandamått och aktivitetsloggar. När den här tjänsten identifierar oregelbundna villkor varnar den appar och personal.

Information om scenario

Konceptuellt liknar DevSecOps för infrastruktur som kod (IaC) DevSecOps för programkod på AKS. Men du behöver en annan uppsättning pipelines och verktyg för att hantera och automatisera kontinuerlig integrering och kontinuerlig leverans (CI/CD) 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 på att utveckla testdriven utveckling (TDD) för IaC. 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.

Policy as Code (PaC) är också en viktig metod för att leverera infrastruktur som är kompatibel med 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 felkonfigurering av infrastruktur som öppnar upp punkter för angrepp efter distributionen. Du kan integrera analysverktyg för statisk kod för infrastruktur som Synk eller Aquasecurity tfsec med hjälp av GitHubs CodeQL för att genomsöka säkerhetsproblem i infrastrukturkod. Den här processen liknar SAST (Static Application Security Testing).

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 avsedda administratören och tar sedan bort förhöjd åtkomst när ändringen har ändrats. Du bör konfigurera Azure Monitor för att skapa ett problem i GitHub så att utvecklare kan stämma av ändringarna. Manuell konfiguration bör dock undvikas 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 VERKTYG för hotskydd och säkerhetsinformation och händelsehantering (SIEM) för att identifiera onormal trafik. Dessa verktyg varnar automatiskt säkerhetsadministratörer och genererar ett problem i GitHub för uppmärksamhet.

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 DevSecOps för IaC för att säkerställa säkerheten och kvaliteten på distributionerna. Du vill också spåra och granska alla ändringar i infrastrukturen.

Deltagare

Den här artikeln underhålls av Microsoft. Det har ursprungligen skrivits av följande medarbetare.

Huvudsakliga författare:

Nästa steg