Cloud & IT Cert Prep · Lektion

Säkerhetsskanning av infrastruktur som kod

Skanna Terraform-, CloudFormation- och Helm-diagram med IaC-säkerhetsverktyg (Checkov, tfsec) för att upptäcka felkonfigurationer innan de når produktion.

Lektion 4 av 413 steg

Säkerhetsskanning av infrastruktur som kod är en gratis lektion i Cloud & IT Cert Prep på CoddyKit. Detta är lektion 4 av 4. Ni kan läsa hela lektionen gratis nedan och sedan öva praktiskt i webbläsaren med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt. Den ingår i lärvägen för Cloud & IT Cert Prep, och Era framsteg synkroniseras mellan webben och CoddyKit-appen. Kursen i Cloud & IT Cert Prep innehåller totalt 4 lektioner.

Översikt över säkerhet för Infrastructure as Code

Verktyg för Infrastructure as Code (IaC), som Terraform, AWS CloudFormation, Ansible och Helm, gör det möjligt att definiera infrastruktur i versionshanterade konfigurationsfiler. Detta medför stora fördelar – repeterbarhet, granskningsbarhet och automatisering – men också en kritisk säkerhetsrisk: felkonfigurationer i IaC-filer skapar osäker infrastruktur i stor skala. En enda felkonfigurerad Terraform-modul som driftsätts i 50 miljöer skapar 50 sårbara system samtidigt. Säkerhetsskanning av IaC hanterar detta genom att kontrollera konfigurationsfiler innan de tillämpas och på så sätt flytta säkerheten tidigare i utvecklarens arbetsflöde.

Vanliga IaC-felkonfigurationer

Säkerhetsskanningsverktyg letar efter de vanligaste IaC-felkonfigurationerna som finns i verkliga molnmiljöer: S3-buckets med offentlig åtkomst aktiverad eller utan kryptering i vila; säkerhetsgrupper med inkommande regler från 0.0.0.0/0 på känsliga portar (22, 3389, 1433); databaser utan kryptering eller med offentlig åtkomst; IAM-policyer med resurs- eller åtgärdsjokertecken som *; CloudTrail inaktiverat i en region; KMS-nycklar utan nyckelrotation; samt lastbalanserare med HTTP-lyssnare i stället för HTTPS. Dessa fynd motsvarar i hög grad kontrollerna i molnsäkerhetsriktlinjer som CIS AWS Foundations.

# Dangerous Terraform: public S3 bucket + no encryption
resource 'aws_s3_bucket' 'data' {
  bucket = 'my-data-bucket'
  # Missing: server_side_encryption_configuration
  # Missing: aws_s3_bucket_public_access_block
}

Checkov: Policy som kod för IaC

Checkov (från Bridgecrew/Prisma Cloud) är ett populärt verktyg för statisk analys av IaC med öppen källkod som stöder Terraform, CloudFormation, Kubernetes-manifest, Helm-diagram och Dockerfiler. Det levereras med över 1 000 inbyggda policyer som är kopplade till riktlinjerna CIS, GDPR, SOC 2 och HIPAA. När checkov -d . körs genomsöks alla IaC-filer i den aktuella katalogen och en färgkodad rapport skapas med godkända, misslyckade och överhoppade kontroller samt resurssökvägar och vägledning för åtgärder. Checkov kan integreras i CI/CD-pipelines för att blockera distributioner när kritiska kontroller misslyckas.

# Install and run Checkov on Terraform files
pip install checkov
checkov -d ./terraform/ --framework terraform

# Fail CI pipeline on HIGH severity findings
checkov -d ./terraform/ --check HIGH --hard-fail-on HIGH

tfsec: Säkerhetsskanner för Terraform

tfsec (numera en del av Trivys IaC-skanningsfunktion) är en specialiserad säkerhetsskanner för Terraform som har djup förståelse för HCL-syntax, vilket gör att den kan spåra värden mellan moduler och variabelfiler. Till skillnad från enklare skannrar kan tfsec upptäcka felkonfigurationer där problemet sträcker sig över flera filer – exempelvis en säkerhetsgruppsregel som verkar säker isolerat men är kopplad till en resurs i en annan fil. tfsec genererar fynd med allvarlighetsnivåer (CRITICAL, HIGH, MEDIUM, LOW), CWE-ID:n och direkta länkar till dokumentation om åtgärder, vilket gör fynden användbara för utvecklare.

# Install tfsec and scan Terraform directory
brew install tfsec
tfsec ./terraform/ --format json

# Or use Trivy for unified IaC + container scanning
trivy config ./terraform/

Hemligheter i IaC-filer

Ett av de mest kritiska säkerhetsproblemen i IaC är hårdkodade hemligheter i konfigurationsfiler – lösenord, API-nycklar, privata TLS-nycklar och databasanslutningssträngar som läggs in i Git. Eftersom IaC-arkiv ofta delas mellan team och lagras i versionshistorik är en hemlighet som har lagts in ens en enda gång i praktiken permanent röjd (Git-historik är oföränderlig). Verktyg som Checkov, detect-secrets, git-secrets och TruffleHog söker efter mönster som identifierar hemligheter. Lösningen är att använda indatavariabler som hämtas från miljövariabler eller hemlighetslagringar, aldrig hårdkodade värden.

# Bad: hardcoded password in Terraform
resource 'aws_db_instance' 'main' {
  password = 'supersecret123'  # NEVER DO THIS
}

# Good: read from variable, inject from secrets manager
variable 'db_password' { sensitive = true }
resource 'aws_db_instance' 'main' {
  password = var.db_password
}

Policy som kod: OPA och Sentinel

Ramverk för Policy as Code (PaC) gör det möjligt för säkerhetsteam att skriva anpassade regler i kod och tillämpa dem konsekvent. Open Policy Agent (OPA) med Conftest gör det möjligt att skriva Rego-policyer som validerar strukturerade data av alla slag – Terraform-planer, Kubernetes-manifest och Helm-värden – i CI/CD-pipelines. HashiCorp Sentinel är inbyggt i Terraform Enterprise och Cloud och gör det möjligt att tillämpa policyer som ”alla S3-buckets måste ha kryptering aktiverad” redan vid planeringen, så att alla apply-åtgärder som skulle bryta mot policyn blockeras. Dessa verktyg gör det möjligt att uttrycka säkerhetskrav som kod och versionshantera dem tillsammans med den infrastruktur de styr.

# Example Conftest OPA policy: deny public S3
# deny[msg] {
#   input.resource.aws_s3_bucket[name]
#   input.resource.aws_s3_bucket_public_access_block == null
#   msg := sprintf('Bucket %v lacks public access block', [name])
# }

Driftdetektering: Konfiguration kontra verklighet

Konfigurationsdrift uppstår när det faktiska tillståndet för distribuerad infrastruktur avviker från IaC-definitionen – ofta för att någon har gjort en manuell ändring via molnkonsolen. En regel i en säkerhetsgrupp som manuellt lagts till för att ”tillfälligt” ge en utvecklare åtkomst blir ett permanent säkerhetsgap. Verktyg för driftdetektering jämför kontinuerligt det önskade tillståndet (IaC-filerna) med det faktiska distribuerade tillståndet och varnar vid avvikelser. AWS Config, Terraform Clouds driftdetektering och CSPM-verktyg (Prisma Cloud, Wiz) erbjuder alla denna funktion. Felkonfigurationer som införs genom ändringar i konsolen upptäcks innan angripare hittar dem.

# Terraform: detect drift between state and actual cloud resources
terraform plan -refresh-only
# If output shows changes, someone modified infrastructure outside Terraform

Oföränderlig infrastruktur och GitOps

Oföränderlig infrastruktur innebär att servrar och konfigurationer aldrig ändras på plats – i stället skapar ändringar nya resurser (nya AMI:er, nya containeravbildningar) som ersätter de gamla. Tillsammans med GitOps (där alla infrastrukturändringar måste gå via en pull request i Git, vilket utlöser arbetsflöden för IaC-skanning och godkännande) eliminerar detta konfigurationsdrift genom sin konstruktion: om något inte kan ändras manuellt kan det inte heller drifta. Verktyg som ArgoCD för Kubernetes och Atlantis för Terraform implementerar GitOps-arbetsflöden där alla avvikelser utlöser automatisk återställning till önskat tillstånd eller en varning.

Skillnaden mellan SAST och IaC-skanning

Säkerhetsskanning av IaC förväxlas ibland med SAST (Static Application Security Testing), men de analyserar olika typer av artefakter. SAST analyserar programmets källkod (Python, Java, JavaScript) för sårbarheter som SQL-injektion eller buffertspill. IaC-skanning analyserar konfigurationsfiler för infrastruktur och söker efter felkonfigurationer som påverkar molnsäkerheten – ingen programkod berörs. En komplett DevSecOps-pipeline innehåller båda: SAST på applikationskod och IaC-skanning på infrastrukturfiler. Båda körs i CI/CD innan någon distribution sker. Vissa enhetliga plattformar (Snyk IaC, Prisma Cloud) kombinerar skanning av applikationer och infrastruktur i ett enda verktyg.

Integrera IaC-skanning i CI/CD

Effektiv IaC-säkerhetsskanning måste vara automatiserad och obligatorisk – inte valfri. En typisk CI/CD-integration ser ut så här: kör Checkov och tfsec vid varje pull request; misslyckas med pipelinen om det finns CRITICAL-fynd; publicera fynd som kommentarer i pull requesten så att utvecklarna ser dem; underhåll en lista över undertryckta fynd med dokumenterade motiveringar; och kör en nattlig skanning av distribuerade resurser för att upptäcka drift. Pre-commit-hookar med verktyg som pre-commit och Checkov kan upptäcka problem redan innan koden når pipelinen. Det är viktigt att hantera falska positiva resultat – utvecklare som ser för många irrelevanta fynd börjar ignorera dem.

# GitHub Actions: IaC security scanning
# - name: Run Checkov IaC Scan
#   uses: bridgecrewio/checkov-action@master
#   with:
#     directory: terraform/
#     framework: terraform
#     soft_fail: false  # fail PR on findings
#     output_format: sarif  # upload to GitHub Security tab

Säkerhet för Terraform State

Terraforms state-fil (terraform.tfstate) innehåller en fullständig förteckning över alla hanterade resurser och ofta även känsliga utdatavärden som databaslösenord, privata TLS-nycklar och ID:n för IAM-åtkomstnycklar i klartext. State-filer får aldrig läggas in i Git. Använd i stället en fjärrbackend (AWS S3 med låsning via DynamoDB, Terraform Cloud eller GitLab-hanterad state) med serverkryptering aktiverad. Åtkomsten till state-backenden måste strikt styras via IAM – alla som kan läsa state-filen kan kartlägga alla infrastrukturelement och potentiellt extrahera inbäddade hemligheter.

# Secure Terraform remote backend
terraform {
  backend 's3' {
    bucket         = 'my-terraform-state'
    key            = 'prod/terraform.tfstate'
    region         = 'us-east-1'
    encrypt        = true
    kms_key_id     = 'arn:aws:kms:us-east-1:123:key/abc'
    dynamodb_table = 'terraform-state-lock'
  }
}

Snabbtest

Testa dina kunskaper om koncepten i CompTIA Security+ (SY0-701) från den här lektionen.

Sammanfattning av lektionen

I den här lektionen har du lärt dig följande: felkonfigurationer i IaC, som offentliga S3-buckets, öppna säkerhetsgrupper och hårdkodade hemligheter, upptäcks automatiskt av verktyg som Checkov och tfsec före distribution; ramverk för Policy as Code (OPA/Conftest, HashiCorp Sentinel) gör det möjligt att tillämpa anpassade säkerhetskrav för organisationen som automatiserade spärrar i pipelinen; och Terraform state-filer måste lagras i krypterade fjärrbackends med strikt åtkomstkontroll eftersom de kan innehålla känsliga uppgifter om resurser. Nästa avsnitt handlar om APT-livscykeln och hur avancerade hot upprätthåller sin närvaro i nätverk.

Gratis att börja

Lär dig Cloud & IT Cert Prep med en AI-lärare – gratis

Skriv och kör riktig kod i webbläsaren, få omedelbar hjälp av en AI-lärare dygnet runt och fortsätt där du slutade – på webben eller i appen.

Kurser
150
Lektioner
600

Vanliga frågor

Är lektionen ”Säkerhetsskanning av infrastruktur som kod” gratis?

Ja – hela texten till ”Säkerhetsskanning av infrastruktur som kod” kan läsas gratis här på webben. Om Ni vill öva interaktivt med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt och låsa upp resten av kursen i Cloud & IT Cert Prep, kan Ni uppgradera till CoddyKit PRO. Kursen i Cloud & IT Cert Prep innehåller totalt 4 lektioner.

Vad lär jag mig i ”Säkerhetsskanning av infrastruktur som kod”?

Skanna Terraform-, CloudFormation- och Helm-diagram med IaC-säkerhetsverktyg (Checkov, tfsec) för att upptäcka felkonfigurationer innan de når produktion. Ni övar på Cloud & IT Cert Prep med praktisk kod som körs direkt i webbläsaren, medan en AI-handledare som är tillgänglig dygnet runt svarar på Era frågor under lektionen.

Behöver jag någon erfarenhet för att börja lära mig Cloud & IT Cert Prep?

Du behöver inga förkunskaper. Utbildningen i Cloud & IT Cert Prep på CoddyKit är upplagd för allt från nybörjare till avancerade elever, så att du kan börja här eller från början och gå fram i din egen takt. Detta är lektion 4 av 4.

Hur lång tid tar lektionen ”Säkerhetsskanning av infrastruktur som kod”?

De flesta CoddyKit-lektioner tar cirka 5–10 minuter. Varje lektion är kort och interaktiv, så att du gör stadiga framsteg och kan fortsätta precis där du slutade – på webben eller i appen.

Kan jag skriva och köra kod i den här Cloud & IT Cert Prep-lektionen?

Ja. Varje Cloud & IT Cert Prep-lektion innehåller en inbyggd kodredigerare, så att du kan skriva och köra riktig kod direkt i webbläsaren och få omedelbar AI-feedback – utan lokal installation.

Alla lektioner i den här kursen

  1. Containersäkerhet: härdning av avbildningar och skydd under körning
  2. Kubernetes-säkerhet: RBAC, nätverkspolicyer och pod-säkerhet
  3. Serverlös säkerhet och funktionssäkerhet
  4. Säkerhetsskanning av infrastruktur som kod
← Tillbaka till Cloud & IT Cert Prep