Infrastructure as Code (IaC)

Hva er infrastruktur?

I IT-verdenen omfatter infrastruktur alle de fysiske og virtuelle komponentene som danner grunnlaget for systemer og tjenester. Dette inkluderer:

Sammen utgjør disse elementene den grunnleggende infrastrukturen som støtter all IT-drift – fra utvikling og testing til produksjon og drift.

Hva er Infrastructure as Code?

Infrastructure as Code (IaC) er en tilnærming der infrastruktur defineres og administreres ved hjelp av kodefiler. I stedet for å konfigurere servere og nettverk manuelt via kontrollpaneler, beskrives alt med deklarative skript og maler. Dette gjør at:

Ved å definere infrastrukturen i kode, får man full kontroll over konfigurasjonen, og man kan raskt tilpasse, oppdatere og skalere miljøet.

Illustrasjon av Infrastructure as Code
IaC definerer hele infrastrukturen i kodefiler – noe som gir forutsigbarhet og mulighet for automatisert testing.

Hvordan henger IaC sammen med resten av DevSecOps?

IaC er en kritisk del av DevSecOps fordi den automatiserer oppsettet av infrastruktur og sikrer at alle systemer deployeres på en konsekvent og sikker måte. Ved å integrere IaC med andre DevSecOps-prinsipper:

IaC fungerer som en bro mellom utvikling og drift – og ved å gjøre infrastrukturen til en del av kodebasen, blir sikkerhet en integrert del av hele leveranseprosessen.

Installer Terraform på Ubuntu

Terraform er et deklarativt verktøy som lar deg definere og provisjonere infrastruktur i skyen og lokalt. Følg denne steg-for-steg-guiden for å installere Terraform på Ubuntu:

  1. Kjør en oppdatering:
    sudo apt-get update
  2. Installer nødvendige verktøy:
    sudo apt-get install -y gnupg software-properties-common curl
  3. Importer HashiCorp sin GPG-nøkkel:
    curl -fsSL https://apt.releases.hashicorp.com/gpg | sudo apt-key add -
  4. Legg til HashiCorp-repositoriet:
    sudo apt-add-repository "deb [arch=amd64] https://apt.releases.hashicorp.com $(lsb_release -cs) main"
  5. Oppdater pakkelisten og installer Terraform:
    sudo apt-get update && sudo apt-get install terraform

Etter installasjonen, bekreft at Terraform er tilgjengelig ved å skrive: terraform -v

Eksempel: Terraform-konfigurasjon

I eksempelet nedenfor defineres en AWS-infrastruktur med en Virtual Private Cloud (VPC), et subnet og en EC2-instans. Dette demonstrerer hvordan du kan beskrive miljøet ditt i kode.

# main.tf

provider "aws" {
  region = "us-east-1"
}

resource "aws_vpc" "main_vpc" {
  cidr_block = "10.0.0.0/16"
  tags = {
    Name = "DevSecOps-VPC"
  }
}

resource "aws_subnet" "subnet_devsecops" {
  vpc_id                  = aws_vpc.main_vpc.id
  cidr_block              = "10.0.1.0/24"
  availability_zone       = "us-east-1a"
  map_public_ip_on_launch = true
  tags = {
    Name = "DevSecOps-Subnet"
  }
}

resource "aws_instance" "example_ec2" {
  ami           = "ami-0c02fb55956c7d316"  # Erstatt med en gyldig AMI-ID for din region
  instance_type = "t2.micro"
  subnet_id     = aws_subnet.subnet_devsecops.id
  tags = {
    Name = "DevSecOps-EC2"
  }
}

For å provisjonere denne infrastrukturen:

  1. Kjør terraform init for å laste ned nødvendige moduler.
  2. Kjør terraform plan for å se en oversikt over planlagte endringer.
  3. Kjør terraform apply for å sette opp infrastrukturen i AWS.

Ansible for Konfigurasjon

Når infrastrukturen er provisjonert med Terraform, kan du bruke Ansible til å konfigurere og sette opp de nye serverne. Med Ansible kan du skrive "playbooks" – skript som beskriver nøyaktig hvilke pakker som skal installeres, hvordan tjenester skal konfigureres, og hvordan systemene skal sikres.

Her er et eksempel på en Ansible-playbook som installerer og starter Apache på en webserver:

# install_apache.yml
- hosts: webserver
  become: yes
  tasks:
    - name: Installer Apache
      apt:
        name: apache2
        state: present
    - name: Start og aktiver Apache
      service:
        name: apache2
        state: started
        enabled: true

For å kjøre playbooken, opprett en inventarfil (f.eks. hosts) med IP-adressen til webserveren og kjør:

ansible-playbook -i hosts install_apache.yml

Dette sikrer at webserveren konfigureres på en repeterbar og sikker måte.

Sikkerhet i Infrastructure as Code

I DevSecOps er sikkerhet en integrert del av alt. Med IaC kan du:

Lenker og kilder