Zasady sieciowe i sieć zgodna z zasadą najmniejszych uprawnień
Ogranicz ruch między kontenerami za pomocą zasad sieciowych domyślnie odrzucających połączenia, jawnych reguł zezwalających i zasady najmniejszych uprawnień stosowanej do sieci.
Zasady sieciowe i sieć zgodna z zasadą najmniejszych uprawnień to bezpłatna lekcja Docker & DevOps Fundamentals na CoddyKit. To lekcja 4 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej Docker & DevOps Fundamentals, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Docker & DevOps Fundamentals zawiera 4 lekcji w sumie.
Domyślne zezwalanie na wszystko jest ryzykowne
Domyślnie kontenery w klastrze zwykle mogą komunikować się z każdym innym kontenerem. Przejęty Pod może wtedy bez przeszkód uzyskać dostęp do baz danych i usług wewnętrznych. Network policies zamykają tę drogę.
Minimalne uprawnienia w sieci
Zasada minimalnych uprawnień dotyczy również ruchu sieciowego: usługa powinna przyjmować i nawiązywać tylko te połączenia, których naprawdę potrzebuje — żadnych innych.
Czym jest NetworkPolicy?
NetworkPolicy to obiekt Kubernetes, który wybiera Pody na podstawie etykiety i określa, jaki ruch przychodzący i wychodzący jest dozwolony. Wtyczka CNI (Calico, Cilium) egzekwuje te zasady.
Potrzebny jest egzekwujący zasady CNI
Podobnie jak Ingress potrzebuje kontrolera, NetworkPolicies potrzebują wtyczki CNI, która je obsługuje. W przypadku wtyczki, która je ignoruje, reguły nie wywołają żadnego efektu, a problem pozostanie niewidoczny.
Domyślna odmowa ruchu przychodzącego
Najpierw zablokuj cały ruch przychodzący do przestrzeni nazw, a następnie zezwól tylko na to, co jest potrzebne. Pusty selektor podSelector pasuje do każdego Poda.
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: default-deny-ingress
spec:
podSelector: {}
policyTypes:
- IngressZezwalanie na określony ruch
Teraz zezwól tylko Podom frontendowym na dostęp do API przez port 8080. Cała reszta pozostaje zablokowana.
spec:
podSelector:
matchLabels:
app: api
ingress:
- from:
- podSelector:
matchLabels:
app: frontend
ports:
- port: 8080Ograniczanie ruchu wychodzącego
Można również ograniczyć ruch wychodzący, na przykład zezwolić Podowi na dostęp wyłącznie do bazy danych, aby uniemożliwić przejętemu Podowi nawiązanie połączenia z napastnikiem.
spec:
podSelector:
matchLabels:
app: api
policyTypes:
- Egress
egress:
- to:
- podSelector:
matchLabels:
app: dbSelektory przestrzeni nazw
Reguły mogą dopasowywać ruch za pomocą namespaceSelector, aby zezwalać na ruch między przestrzeniami nazw tylko wtedy, gdy pochodzi on z zaufanych przestrzeni nazw — jest to przydatne w przypadku współdzielonych usług platformowych.
from:
- namespaceSelector:
matchLabels:
team: platformZezwalanie na DNS
Częsta pułapka: ścisła reguła domyślnej odmowy ruchu wychodzącego blokuje również DNS, uniemożliwiając rozpoznawanie nazw. Należy pamiętać o zezwoleniu na UDP/TCP 53 do kube-dns.
egress:
- to: []
ports:
- protocol: UDP
port: 53Poza Kubernetes
Użytkownicy Dockera odnoszą podobną korzyść z sieci definiowanych przez użytkownika: tylko kontenery podłączone do tej samej sieci mogą komunikować się ze sobą, co izoluje niezwiązane aplikacje.
docker network create --internal backendPodejście zero trust
Sieci z minimalnymi uprawnieniami przybliżają do modelu zero trust: należy zakładać, że sieć jest wroga, uwierzytelniać i autoryzować każde połączenie oraz domyślnie na nic nie zezwalać.
Szybkie sprawdzenie
Jaka jest rozsądna strategia początkowa dla zasad sieciowych?
Podsumowanie
Można już bezpiecznie ograniczać ruch:
- Stosuj domyślną odmowę, a następnie jawne reguły zezwalające
- Kontroluj zarówno ruch przychodzący, jak i wychodzący na podstawie etykiet i przestrzeni nazw
- Pamiętaj o zezwoleniu na DNS; potrzebna jest wtyczka CNI egzekwująca zasady
- Wewnętrzne sieci Dockera zapewniają podobną izolację
Sieć z minimalnymi uprawnieniami ogranicza zakres skutków każdego naruszenia bezpieczeństwa.
Często zadawane pytania
Czy lekcja „Zasady sieciowe i sieć zgodna z zasadą najmniejszych uprawnień” jest bezpłatna?
Tak — pełny tekst „Zasady sieciowe i sieć zgodna z zasadą najmniejszych uprawnień” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu Docker & DevOps Fundamentals, przejdź na CoddyKit PRO. Kurs Docker & DevOps Fundamentals zawiera 4 lekcji w sumie.
Co nauczysz się w „Zasady sieciowe i sieć zgodna z zasadą najmniejszych uprawnień”?
Ogranicz ruch między kontenerami za pomocą zasad sieciowych domyślnie odrzucających połączenia, jawnych reguł zezwalających i zasady najmniejszych uprawnień stosowanej do sieci. Ćwiczysz Docker & DevOps Fundamentals z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.
Czy potrzebuję doświadczenia, aby zacząć Docker & DevOps Fundamentals?
Nie wymagamy żadnego doświadczenia. Docker & DevOps Fundamentals w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 4 z 4.
Ile czasu zajmuje lekcja „Zasady sieciowe i sieć zgodna z zasadą najmniejszych uprawnień”?
Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.
Czy mogę pisać i uruchamiać kod w tej lekcji Docker & DevOps Fundamentals?
Tak. Każda lekcja Docker & DevOps Fundamentals zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.
Wszystkie lekcje w tym kursie
- Skanowanie obrazów kontenerów pod kątem bezpieczeństwa
- Bezpieczeństwo kontenerów w czasie działania
- Zarządzanie sekretami i RBAC
- Zasady sieciowe i sieć zgodna z zasadą najmniejszych uprawnień