Skip to content

Sikkerhetsgrupper

En sikkerhetsgruppe er en tilstandsbevisst brannmur koblet til instanser og lastbalanserere. Regler tillater trafikk; alt som ikke eksplisitt er tillatt, nektes. Fordi grupper er tilstandsbevisste, tillates returtrafikk for en tillatt forbindelse automatisk — du legger ikke til en tilsvarende omvendt regel.

Opprett en gruppe og regler

Opprett en gruppe avgrenset til en VPC, og legg deretter til regler. Hver regel har:

  • Retningingress (inngående) eller egress (utgående).
  • Protokolltcp, udp, icmp eller any.
  • Portområde — f.eks. 443, eller et område (utelat for ICMP / any).
  • Kilde / destinasjon — en CIDR (f.eks. 0.0.0.0/0 for hvor som helst) eller en referanse til en annen sikkerhetsgruppe (tillat trafikk fra medlemmer av den gruppen, nyttig for lagdelte apper).
  • Handlingallow (standard) eller deny, med en prioritet (lavere 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"
}

Endre en instans' sikkerhetsgrupper

Du kan erstatte sikkerhetsgruppene på en kjørende instans uten å opprette den på nytt. Det finnes to omfang:

  • Enhetlig (det vanlige tilfellet) — ett sett som gjelder hver nettverksport på instansen.
  • Per port — et annet sett på enkeltporter på en instans med flere nettverkskort (f.eks. et frontend-nettverkskort åpent mot internett og et administrasjonskort som ikke er det). Bruk dette bare når portene virkelig må være forskjellige; ellers bruk det enhetlige omfanget.

Alle tre klientene bruker erstatningssemantikk: settet du oppgir blir det fullstendige settet — hver gruppe som ikke er oppført, fjernes.

Enhetlig (alle porter)

I portalen åpner du instansen og redigerer sikkerhetsgruppene under fanen Nettverk. Med CLI eller Terraform:

bash
# Erstatt instansens grupper på alle porter (sikkerhetsgruppe-ID-er, ikke navn)
fm compute instance security-groups set <instance-id> \
  --security-group <sg-id> --security-group <sg-id>

# Vis gjeldende grupper (lister oppdelingen per port når portene er forskjellige)
fm compute instance security-groups get <instance-id>
hcl
resource "frostmoln_instance" "web" {
  # ... navn, flavor, image, subnett ...
  security_groups = [
    frostmoln_security_group.web.id,
    frostmoln_security_group.ssh.id,
  ]
}

Per port (flere nettverkskort, forskjellige sett)

Portalen viser en per-port-editor når en instans' porter bærer forskjellige sett. Finn port-ID-en i utdataene fra ... security-groups get (den lister portene når de er forskjellige), og målrett deretter én port — de andre lates urørt.

bash
# Målrett én enkelt port via dens 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-en fra per-port-listen
  security_groups = [frostmoln_security_group.web.id]
}

Administrer en gitt port via enten frostmoln_instance.security_groups (enhetlig) eller en per-port-ressurs — ikke begge.

Verdt å vite

  • Endringen er asynkron. Portalen og CLI-en returnerer umiddelbart og oppdateringen tar effekt i bakgrunnen — kjør ... security-groups get på nytt for å bekrefte. terraform apply venter til operasjonen er fullført.
  • Et tomt sett fjerner alle grupper og lar målet stå på VPC-ens default-drop (vanligvis ingen inngående tilgang). CLI-en krever --clear for dette; i Terraform setter du security_groups = [].
  • Å ødelegge en frostmoln_instance_port_security_groups-ressurs fjerner ikke portens grupper — det stopper bare Terraform fra å administrere dem. For å faktisk tømme en port setter du security_groups = [] og kjører apply først, og fjerner deretter ressursen.
  • En port med portsikkerhet avslått avviser et ikke-tomt sett — du kan ikke koble grupper til en port som har portsikkerheten avslått.

God praksis

  • Åpne bare portene du trenger; foretrekk smale kilde-CIDRer fremfor 0.0.0.0/0.
  • Begrens SSH (22) til kjente administrative adresser.
  • Modellér lag ved å referere til grupper — la f.eks. web-gruppen nå db-gruppen på databaseporten, i stedet for å bruke IP-områder.

Relatert