Middle+
Jakie praktyki znasz, aby zwiększyć bezpieczeństwo aplikacji w Kubernetes?
sobes.tech AI
Odpowiedź od AI
- Użycie polityk sieciowych do kontrolowania ruchu między podami.
- Zastosowanie kwot zasobów i zakresów limitów do ograniczenia zużycia zasobów przez pody.
- Wyłączenie trybu uprzywilejowanego dla kontenerów.
- Minimalizacja uprawnień przyznawanych kontom usługowym.
- Użycie sekretów do przechowywania poufnych danych.
- Regularne skanowanie obrazów kontenerów pod kątem podatności.
- Zastosowanie ograniczeń kontekstu bezpieczeństwa (SCC) w OpenShift lub polityk bezpieczeństwa podów (PSP) (przestarzałe) / standardów bezpieczeństwa podów w czystym Kubernetes.
- Użycie narzędzi do audytu klastra, takich jak Kubesec lub OpenSCAP.
- Wdrażanie zasady najmniejszych przywilejów na poziomie klastra i aplikacji.
- Segmentacja podów i przestrzeni nazw.
- Użycie niezmienności dla wdrożeń.
Przykład użycia polityki sieciowej:
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: allow-frontend-to-backend
spec:
podSelector:
matchLabels:
app: backend # Dotyczy tylko podów z tym etykietą
ingress:
- from:
- podSelector:
matchLabels:
app: frontend # Zezwala na ruch przychodzący tylko z podów frontend
ports:
- protocol: TCP
port: 8080 # Zezwala na ruch tylko na tym porcie
Przykład użycia kontekstu bezpieczeństwa:
apiVersion: v1
kind: Pod
metadata:
name: security-context-demo
spec:
securityContext:
runAsUser: 1000 # Uruchom kontener jako użytkownik z ID 1000
runAsGroup: 3000 # Uruchom kontener jako grupa z ID 3000
fsGroup: 2000 # System plików będzie należał do grupy 2000
containers:
- name: sec-ctx-demo
image: busybox
command: [ "sh", "-c", "sleep 1h" ]
securityContext:
allowPrivilegeEscalation: false # Zabrania eskalacji przywilejów
readOnlyRootFilesystem: true # Ustawia system plików główny jako tylko do odczytu