Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
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
Een Visio-bestand van deze architectuur downloaden.
Gegevensstroom
De volgende gegevensstroom komt overeen met het vorige diagram:
Ontwikkelaars gebruiken testgestuurde ontwikkeling om codewijzigingen voor infrastructuurdefinities, zoals IaC-sjablonen, te controleren in GitHub-opslagplaatsen. Ze ontwikkelen eenheidstests, integratietests en beleid als code (PaC) gelijktijdig om de kwaliteit van de IaC te testen.
Pull-aanvragen activeren geautomatiseerde eenheidstests via GitHub Actions.
Configureer het werkstroomproces van GitHub Actions om de IaC te testen met behulp van lokaal gegenereerde infrastructuurstatussen en -plannen.
Configureer GitHub Actions om te scannen op problemen met codekwaliteit en -beveiliging. Scan met uw eigen aangepaste GitHub CodeQL-query's of andere beveiligingshulpprogramma'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.
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.
Wanneer een handmatige update van de infrastructuur nodig is, verhoogt de aangewezen beheerder de toegang 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.
SecOps bewaakt en beschermt continu tegen beveiligingsrisico's en beveiligingsproblemen. Azure Policy dwingt cloudgovernance af.
Wanneer het systeem een anomalie detecteert, registreert het automatisch een GitHub-probleem voor oplossing.
Onderdelen
GitHub is een platform voor het hosten van code voor versiebeheer en samenwerking. In deze architectuur worden IaC-sjablonen opgeslagen en fungeert deze als centrale opslagplaats voor ontwikkel-, test- en governancewerkstromen.
GitHub Actions is een automatiseringsprogramma voor continue integratie en continue implementatie (CI/CD) waarmee werkstromen code rechtstreeks vanuit GitHub-opslagplaatsen kunnen bouwen, testen en implementeren. In deze architectuur automatiseert GitHub Actions eenheidstests, beveiligingsscans en infrastructuurinrichting voor IaC-pijplijnen.
GitHub Advanced Security is een reeks beveiligingsfuncties met statische analyse en detectie van beveiligingsproblemen voor code die is opgeslagen in GitHub. In deze architectuur verbetert het IaC-beveiliging door sjablonen te scannen en waarschuwingen te genereren over onjuiste configuraties of risico's.
CodeQL is een semantische codeanalyse-engine waarmee aangepaste query's beveiligingsproblemen en onjuiste configuraties in code kunnen detecteren. In deze architectuur scant CodeQL opslagplaatsartefacten om potentiële beveiligingsproblemen vóór de implementatie te identificeren.
Opmerking
CodeQL biedt geen systeemeigen ondersteuning voor het scannen van alle IaC-bestanden, zoals Terraform. U kunt echter het CodeQL IaC Extractor-communityproject of door de leverancier geleverde alternatieven gebruiken, zoals Aqua Security's Trivy.
Terraform is een opensource-hulpprogramma voor infrastructuurautomatisering dat is ontwikkeld door HashiCorp waarmee declaratieve inrichting in cloudomgevingen mogelijk is. In deze architectuur richt Terraform Azure-resources in en wijzigt deze op basis van IaC-definities en ondersteunt testgestuurde ontwikkelwerkstromen.
Microsoft Defender voor Cloud is een platform voor beveiligingsbeheer dat beveiliging tegen bedreigingen biedt voor hybride cloudworkloads. In deze architectuur bewaakt het continu geïmplementeerde infrastructuur op beveiligingsproblemen.
Microsoft Sentinel is een cloudeigen SIEM-oplossing (Security Information and Event Management) en SOAR-oplossing (Security Orchestration Automated Response) die GEBRUIKMAAKT van AI en analyses om bedreigingen te detecteren en erop te reageren. In deze architectuur bewaakt Microsoft Sentinel de activiteit van de infrastructuur en genereert waarschuwingen of GitHub-problemen wanneer afwijkingen worden gedetecteerd.
Azure Policy is een governanceservice die regels en naleving afdwingt voor Azure-resources. In deze architectuur valideert Azure Policy IaC-implementaties op basis van organisatie- en workloadstandaarden en blokkeert niet-compatibele configuraties. Als uw project bijvoorbeeld een virtuele machine met een niet-herkende SKU gaat implementeren, waarschuwt Azure Policy u en stopt de implementatie.
Azure Monitor is een telemetrie- en waarneembaarheidsplatform dat prestatiegegevens en activiteitenlogboeken van Azure-resources verzamelt. In deze architectuur detecteert Azure Monitor onregelmatige omstandigheden in infrastructuur en activeert waarschuwingen, zodat triage en herstel kunnen worden gestart.
Scenariodetails
DevSecOps voor IaC is conceptueel vergelijkbaar met DevSecOps voor toepassingscode in Azure Kubernetes Service (AKS). U hebt echter 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 Snyk of Aqua Security Trivy, integreren met GitHub Advanced Security 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, kan het lastig zijn om cloudconfiguratiedrift op te lossen, 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:
- Vito Chin | Senior Cloud Solution Architect
- Yee Shian Lee | Senior Cloud Solution Architect
Als u niet-openbare LinkedIn-profielen wilt zien, meldt u zich aan bij LinkedIn.
Volgende stappen
- Houd rekening met de favoriete IaC-hulpprogramma's voor DevSecOps en zorg ervoor dat ze worden geleverd met extensies om IaC-beveiligingsscans uit te voeren.
- Overweeg de voorkeurstaal of sjablonen van IaC, Bicep of Terraform in Azure.
- De GitHub-handleiding voor organisaties
- GitHub Actions gebruiken om verbinding te maken met Azure
- GitHub Actions
- Wat bedoelen we met Zero Trust-naleving?
- AzOps voor Azure Resource Manager-sjablonen
- Module en oplossingen voor Terraform-landingszones
- Inleiding tot IaC met Bicep