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) elleregress(utgående). - Protokoll —
tcp,udp,icmpellerany. - Portintervall — t.ex.
443, eller ett intervall (utelämna för ICMP /any). - Källa / destination — ett CIDR (t.ex.
0.0.0.0/0fö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) ellerdeny, med en prioritet (lägre 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"
}Ä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:
# 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>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.
# 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>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 getigen för att bekräfta.terraform applyvä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
--clearför detta; i Terraform anger dusecurity_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 dusecurity_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.