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:

  • Riktning — ingress (inkommande) eller egress (utgående).
  • Protokoll — tcp, 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ärd — allow (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.
  • Ett fall sätter avsändarmatchningen ur spel. Både en käll-CIDR och en gruppreferens blir en matchning på avsändarens adress, och den bygger på att en instans inte kan göra anspråk på en adress den inte äger. En instans som anges som nästa hopp i en VPC-rutt får göra just det, så ingen avsändarregel av något slag begränsar den. Har en VPC en sådan rutt, betrakta den instansen som förmögen att nå allt i VPC:n, och använd något den inte kan förfalska där det spelar roll.

Relaterat ​