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) elleregress(udgående). - Protokol —
tcp,udp,icmpellerany. - Portinterval — f.eks.
443, eller et interval (udelad for ICMP /any). - Kilde / destination — en CIDR (f.eks.
0.0.0.0/0for hvor som helst) eller en reference til en anden sikkerhedsgruppe (tillad trafik fra medlemmer af den gruppe, praktisk til lagdelte apps). - Handling —
allow(standard) ellerdeny, med en prioritet (lavere vinder).
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"
}Æ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:
# 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>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.
# Målret en 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'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 getigen for at bekræfte.terraform applyventer, 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
--cleartil dette; i Terraform sætter dusecurity_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 dusecurity_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.