Skip to content

Sikkerhedsgrupper ​

En sikkerhedsgruppe er en tilstandsbaseret firewall, der tilknyttes instanser og lastbalancere. Regler tillader trafik; alt, der ikke udtrykkeligt er tilladt, nægtes. Fordi grupper er tilstandsbaserede, tillades returtrafik for en tilladt forbindelse automatisk — du tilføjer ikke en tilsvarende omvendt regel.

Opret en gruppe og regler ​

Opret en gruppe afgrænset til en VPC, og tilføj derefter regler. Hver regel har:

  • Retning — ingress (indgående) eller egress (udgående).
  • Protokol — tcp, udp, icmp eller any.
  • Portinterval — f.eks. 443, eller et interval (udelad for ICMP / any).
  • Kilde / destination — en CIDR (f.eks. 0.0.0.0/0 for hvor som helst) eller en reference til en anden sikkerhedsgruppe (tillad trafik fra medlemmer af den gruppe, praktisk til lagdelte apps).
  • Handling — allow (standard) eller deny, med en prioritet (lavere vinder).
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"
}

Ændr sikkerhedsgrupperne på en instans ​

Du kan erstatte sikkerhedsgrupperne på en kørende instans uden at oprette den på ny. Der findes to omfang:

  • Ensartet (det almindelige tilfælde) — ét sæt, der gælder hver netværksport på instansen.
  • Per port — et andet sæt på enkelte porte på en instans med flere netværkskort (f.eks. et frontend-netværkskort, der er åbent mod internettet, og et administrationskort, der ikke er det). Brug kun dette, når portene reelt skal være forskellige; ellers bruger du det ensartede omfang.

Alle tre klienter bruger erstatningssemantik: det sæt, du angiver, bliver det fuldstændige sæt — hver gruppe, der ikke er anført, fjernes.

Ensartet (alle porte) ​

I portalen åbner du instansen og redigerer sikkerhedsgrupperne under fanen Netværk. Med CLI'en eller Terraform:

bash
# Erstat instansens grupper på alle porte (sikkerhedsgruppe-ID'er, ikke navne)
fm compute instance security-groups set <instance-id> \
  --security-group <sg-id> --security-group <sg-id>

# Vis de nuværende grupper (viser opdelingen per port, når portene er forskellige)
fm compute instance security-groups get <instance-id>
hcl
resource "frostmoln_instance" "web" {
  # ... navn, flavor, image, subnet ...
  security_groups = [
    frostmoln_security_group.web.id,
    frostmoln_security_group.ssh.id,
  ]
}

Per port (flere netværkskort, forskellige sæt) ​

Portalen viser en editor per port, når en instans' porte bærer forskellige sæt. Find port-ID'et i outputtet fra ... security-groups get (den viser portene, når de er forskellige), og målret derefter én port — de øvrige lades urørte.

bash
# Målret en 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'et fra opdelingen per port
  security_groups = [frostmoln_security_group.web.id]
}

Administrer en given port via enten frostmoln_instance.security_groups (ensartet) eller en ressource per port — ikke begge.

Værd at vide ​

  • Ændringen er asynkron. Portalen og CLI'en vender tilbage med det samme, og opdateringen træder i kraft i baggrunden — kør ... security-groups get igen for at bekræfte. terraform apply venter, til handlingen er færdig.
  • Et tomt sæt fjerner alle grupper og efterlader målet på VPC'ens default-drop (typisk ingen indgående adgang). CLI'en kræver --clear til dette; i Terraform sætter du security_groups = [].
  • At ødelægge en frostmoln_instance_port_security_groups-ressource fjerner ikke portens grupper — det stopper blot Terraform i at administrere dem. For rent faktisk at tømme en port sætter du security_groups = [] og kører apply først og fjerner derefter ressourcen.
  • En port med portsikkerhed slået fra afviser et ikke-tomt sæt — du kan ikke tilknytte grupper til en port, hvis portsikkerhed er slået fra.

God praksis ​

  • Åbn kun de porte, du har brug for; foretræk snævre kilde-CIDR'er frem for 0.0.0.0/0.
  • Begræns SSH (22) til kendte administrative adresser.
  • Modellér lag ved at referere til grupper — lad f.eks. web-gruppen nå db-gruppen på databaseporten i stedet for at bruge IP-intervaller.
  • Ét tilfælde sætter kildematchningen ud af kraft. Både en kilde-CIDR og en gruppereference bliver til en matchning på afsenderens kildeadresse, og den hviler på, at en instans ikke kan gøre krav på en adresse, den ikke ejer. En instans, der er angivet som næste hop i en VPC-rute, har lov til præcis det, så ingen kilderegel af nogen art begrænser den. Har en VPC en sådan rute, så betragt den instans som i stand til at nå alt i VPC'en, og brug noget, den ikke kan forfalske, der hvor det betyder noget.

Relateret ​