Skip to content

Säkerhetsgrupper

En säkerhetsgrupp är en tillståndskänslig brandvägg kopplad till instanser och lastbalanserare. Regler tillåter trafik; allt som inte uttryckligen tillåts nekas. Eftersom grupper är tillståndskänsliga tillåts returtrafik för en tillåten anslutning automatiskt — du lägger inte till en matchande omvänd regel.

Skapa en grupp och regler

Skapa en grupp med scope till en VPC, lägg sedan till regler. Varje regel har:

  • Riktningingress (inkommande) eller egress (utgående).
  • Protokolltcp, udp, icmp eller any.
  • Portintervall — t.ex. 443, eller ett intervall (utelämna för ICMP / any).
  • Källa / destination — ett CIDR (t.ex. 0.0.0.0/0 för var som helst) eller en referens till en annan säkerhetsgrupp (tillåt trafik från medlemmar i den gruppen, praktiskt för skiktade appar).
  • Åtgärdallow (standard) eller deny, med en prioritet (lägre vinner).
bash
fm network security-group create --name web --vpc my-vpc
fm network security-group add-rule web \
  --direction ingress --protocol tcp --port 443 --source 0.0.0.0/0
hcl
resource "frostmoln_security_group" "web" {
  vpc_id = frostmoln_vpc.main.id
  name   = "web"
}

resource "frostmoln_security_group_rule" "https" {
  security_group_id = frostmoln_security_group.web.id
  direction         = "ingress"
  protocol          = "tcp"
  port_range_min    = 443
  port_range_max    = 443
  remote_cidr       = "0.0.0.0/0"
}

Ändra en instans säkerhetsgrupper

Du kan ersätta säkerhetsgrupperna på en körande instans utan att återskapa den. Det finns två omfattningar:

  • Enhetligt (det vanliga fallet) — en uppsättning som tillämpas på varje nätverksport på instansen.
  • Per port — en annan uppsättning på enskilda portar på en instans med flera nätverkskort (t.ex. ett frontend-nätverkskort öppet mot internet och ett hanteringskort som inte är det). Använd detta endast när portarna verkligen behöver skilja sig åt; använd annars den enhetliga omfattningen.

Alla tre klienterna använder ersättningssemantik: uppsättningen du anger blir den fullständiga uppsättningen — varje grupp som inte listas tas bort.

Enhetligt (alla portar)

I portalen öppnar du instansen och redigerar säkerhetsgrupperna under fliken Nätverk. Med CLI eller Terraform:

bash
# Ersätt instansens grupper på alla portar (säkerhetsgrupps-ID:n, inte namn)
fm compute instance security-groups set <instance-id> \
  --security-group <sg-id> --security-group <sg-id>

# Visa nuvarande grupper (listar uppdelningen per port när portarna skiljer sig åt)
fm compute instance security-groups get <instance-id>
hcl
resource "frostmoln_instance" "web" {
  # ... namn, flavor, image, subnät ...
  security_groups = [
    frostmoln_security_group.web.id,
    frostmoln_security_group.ssh.id,
  ]
}

Per port (flera nätverkskort, olika uppsättningar)

Portalen visar en per-port-redigerare när en instans portar bär olika uppsättningar. Hitta port-ID:t i utdata från ... security-groups get (den listar portarna när de skiljer sig åt), och rikta sedan in dig på en port — de övriga lämnas orörda.

bash
# Rikta in dig på en enda port via dess port-ID
fm compute instance security-groups set <instance-id> \
  --port <port-id> --security-group <sg-id>
hcl
resource "frostmoln_instance_port_security_groups" "frontend_nic" {
  instance_id     = frostmoln_instance.web.id
  port_id         = "b1e0f6c2-1234-4a5b-9c8d-abcdef012345" # port-ID:t från per-port-listan
  security_groups = [frostmoln_security_group.web.id]
}

Hantera en given port via antingen frostmoln_instance.security_groups (enhetligt) eller en per-port-resurs — inte båda.

Bra att veta

  • Ändringen är asynkron. Portalen och CLI:t återvänder omedelbart och uppdateringen tillämpas i bakgrunden — kör ... security-groups get igen för att bekräfta. terraform apply väntar tills operationen är klar.
  • En tom uppsättning tar bort alla grupper och lämnar målet på VPC:ns default-drop (vanligtvis ingen inkommande åtkomst). CLI:t kräver --clear för detta; i Terraform anger du security_groups = [].
  • Att förstöra en frostmoln_instance_port_security_groups-resurs tar inte bort portens grupper — det slutar bara att Terraform hanterar dem. För att faktiskt rensa en port anger du security_groups = [] och kör apply först, och tar sedan bort resursen.
  • En port med portsäkerhet avstängd avvisar en icke-tom uppsättning — du kan inte koppla grupper till en port vars portsäkerhet är avstängd.

God praxis

  • Öppna endast de portar du behöver; föredra smala käll-CIDR:er framför 0.0.0.0/0.
  • Begränsa SSH (22) till kända administrativa adresser.
  • Modellera skikt genom att referera grupper — låt t.ex. web-gruppen nå db-gruppen på databasporten, i stället för att använda IP-intervall.

Relaterat