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:
- Retning —
ingress(inngående) elleregress(utgående). - Protokoll —
tcp,udp,icmpellerany. - Portområde — f.eks.
443, eller et område (utelat for ICMP /any). - Kilde / destinasjon — en CIDR (f.eks.
0.0.0.0/0for hvor som helst) eller en referanse til en annen sikkerhetsgruppe (tillat trafikk fra medlemmer av den gruppen, nyttig for lagdelte apper). - Handling —
allow(standard) ellerdeny, med en prioritet (lavere vinner).
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/0resource "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:
# 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>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.
# Målrett én enkelt port via dens port-ID
fm compute instance security-groups set <instance-id> \
--port <port-id> --security-group <sg-id>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 getpå nytt for å bekrefte.terraform applyventer 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
--clearfor dette; i Terraform setter dusecurity_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 dusecurity_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. - Ett tilfelle setter avsendermatchingen ut av spill. Både en kilde-CIDR og en gruppereferanse blir en match på avsenderens adresse, og den hviler på at en instans ikke kan gjøre krav på en adresse den ikke eier. En instans som er oppgitt som neste hopp i en VPC-rute har lov til nettopp det, så ingen avsenderregel av noe slag begrenser den. Har en VPC en slik rute, se på den instansen som i stand til å nå alt i VPC-en, og bruk noe den ikke kan forfalske der det betyr noe.