Härdning av Kubernetes-dataplan
Den här sidan beskriver hur du använder Microsoft Defender för molnets uppsättning säkerhetsrekommendationer som är dedikerade till Kubernetes dataplanshärdning.
Dricks
En lista över säkerhetsrekommendationer som kan visas för Kubernetes-kluster och -noder finns icontainerrekommendationerna.
Konfigurera arbetsbelastningsskydd
Microsoft Defender för molnet innehåller ett paket med rekommendationer som är tillgängliga när du har installerat Azure Policy for Kubernetes.
Förutsättningar
- Lägg till nödvändiga FQDN/programregler för Azure-principen.
- (För icke AKS-kluster) Ansluta ett befintligt Kubernetes-kluster till Azure Arc.
Aktivera Kubernetes dataplanshärdning
Du kan aktivera Azure Policy for Kubernetes på något av två sätt:
- Aktivera för alla aktuella och framtida kluster med hjälp av plan-/anslutningsinställningar
- Distribuera Azure Policy for Kubernetes i befintliga kluster
Aktivera Azure Policy för Kubernetes för alla aktuella och framtida kluster med hjälp av inställningar för plan/anslutningsapp
Kommentar
När du aktiverar den här inställningen installeras Azure Policy för Kubernetes-poddar i klustret. På så sätt allokeras en liten mängd cpu och minne som poddarna kan använda. Den här allokeringen kan nå maximal kapacitet, men den påverkar inte resursens övriga CPU- och minneskapacitet.
Kommentar
Aktivering för AWS via anslutningstjänsten stöds inte på grund av en begränsning i EKS som kräver att klusteradministratören lägger till behörigheter för en ny IAM-roll i själva klustret.
Aktivera för Azure-prenumerationer eller lokalt
När du aktiverar Microsoft Defender för containrar aktiveras inställningen "Azure Policy for Kubernetes" som standard för Azure Kubernetes Service och för Azure Arc-aktiverade Kubernetes-kluster i relevant prenumeration. Om du inaktiverar inställningen för den inledande konfigurationen kan du aktivera den efteråt manuellt.
Om du har inaktiverat inställningarna "Azure Policy for Kubernetes" under containerplanen kan du följa stegen nedan för att aktivera den i alla kluster i din prenumeration:
Logga in på Azure-portalen.
Gå till Inställningar för Microsoft Defender för molnmiljö>.
Välj relevant prenumeration.
På sidan Defender-planer kontrollerar du att Containrar har växlats till På.
Välj Inställningar.
På sidan Inställningar och övervakning växlar du "Azure Policy for Kubernetes" till På.
Aktivera för GCP-projekt
När du aktiverar Microsoft Defender för containrar i en GCP-anslutningsapp aktiveras inställningen "Azure Policy Extension for Azure Arc" som standard för Google Kubernetes Engine i det relevanta projektet. Om du inaktiverar inställningen för den inledande konfigurationen kan du aktivera den efteråt manuellt.
Om du har inaktiverat inställningarna "Azure Policy Extension for Azure Arc" under GCP-anslutningsappen kan du följa stegen nedan för att aktivera det i GCP-anslutningsappen.
Distribuera Azure Policy for Kubernetes i befintliga kluster
Du kan konfigurera Azure Policy for Kubernetes manuellt i befintliga Kubernetes-kluster via sidan Rekommendationer. När de har aktiverats blir härdningsrekommendationerna tillgängliga (vissa av rekommendationerna kräver en annan konfiguration för att fungera).
Kommentar
För AWS är det inte möjligt att göra registrering i stor skala med hjälp av anslutningsappen, men det kan installeras på alla befintliga kluster eller på specifika kluster med hjälp av rekommendationen att Azure Arc-aktiverade Kubernetes-kluster ska ha Azure-principtillägget för Kubernetes-tillägget installerat.
Så här distribuerar du Azure Policy for Kubernetes till angivna kluster:
Från sidan med rekommendationer söker du efter relevant rekommendation:
Blått-
"Azure Kubernetes Service clusters should have the Azure Policy add-on for Kubernetes installed"
GCP -
"GKE clusters should have the Azure Policy extension"
.AWS och Lokalt -
"Azure Arc-enabled Kubernetes clusters should have the Azure policy extension for Kubernetes extension installed"
.Dricks
Rekommendationen ingår i olika säkerhetskontroller och det spelar ingen roll vilken du väljer i nästa steg.
Från någon av säkerhetskontrollerna väljer du rekommendationen för att se de resurser som du kan installera tillägget på.
Välj det relevanta klustret och välj Åtgärda.
Visa och konfigurera paketet med rekommendationer
Ungefär 30 minuter efter att Installationen av Azure Policy for Kubernetes har slutförts visar Defender för molnet klustrens hälsostatus för följande rekommendationer, var och en i relevant säkerhetskontroll enligt följande:
Kommentar
Om du installerar Azure Policy for Kubernetes för första gången visas dessa rekommendationer som nya tillägg i listan med rekommendationer.
Dricks
Vissa rekommendationer har parametrar som måste anpassas via Azure Policy för att kunna använda dem effektivt. Om du till exempel vill dra nytta av rekommendationen att Containeravbildningar endast ska distribueras från betrodda register måste du definiera dina betrodda register. Om du inte anger de parametrar som krävs för de rekommendationer som kräver konfiguration visas dina arbetsbelastningar som felaktiga.
Kommentar
Microsoft-komponenter som Defender-sensorn och Azure Monitor Agent (AMA) distribueras som standard i kube-systemnamnområdet. Den här konfigurationen säkerställer att de inte är markerade som icke-kompatibla i rekommendationer för dataplanet. Tredjepartsleverantörsverktyg som är installerade i ett annat namnområde kan dock flaggas som icke-kompatibla. Om du vill undanta tredjepartsleverantörer från dessa rekommendationer kan du lägga till deras namnområde i undantagslistan.
Rekommendationsnamn | Säkerhetskontroll | Konfiguration krävs |
---|---|---|
Cpu- och minnesgränser för containrar ska tillämpas | Skydda program mot DDoS-angrepp | Ja |
Containeravbildningar ska endast distribueras från betrodda register | Åtgärda sårbarheter | Ja |
Minst privilegierade Linux-funktioner ska tillämpas för containrar | Hantera åtkomst och behörigheter | Ja |
Containrar bör endast använda tillåtna AppArmor-profiler | Åtgärda säkerhetskonfigurationer | Ja |
Tjänster bör endast lyssna på tillåtna portar | Begränsa obehörig nätverksåtkomst | Ja |
Användningen av värdnätverk och portar bör begränsas | Begränsa obehörig nätverksåtkomst | Ja |
Användning av poddars HostPath-volymmonteringar bör begränsas till en känd lista | Hantera åtkomst och behörigheter | Ja |
Container med behörighetseskalering bör undvikas | Hantera åtkomst och behörigheter | Nej |
Containrar som delar känsliga värdnamnområden bör undvikas | Hantera åtkomst och behörigheter | Nej |
Oföränderligt (skrivskyddat) rotfilsystem ska tillämpas för containrar | Hantera åtkomst och behörigheter | Nej |
Kubernetes-kluster bör endast vara tillgängliga via HTTPS | Kryptera data under överföring | Nej |
Kubernetes-kluster bör inaktivera automatisk inmontering av API-autentiseringsuppgifter | Hantera åtkomst och behörigheter | Nej |
Kubernetes-kluster bör inte använda standardnamnområdet | Implementera bästa praxis för säkerhet | Nej |
Kubernetes-kluster bör inte bevilja CAPSYSADMIN-säkerhetsfunktioner | Hantera åtkomst och behörigheter | Nej |
Privilegierade containrar bör undvikas | Hantera åtkomst och behörigheter | Nej |
Du bör undvika att köra containrar som rotanvändare | Hantera åtkomst och behörigheter | Nej |
För rekommendationer med parametrar som behöver anpassas måste du ange parametrarna:
Så här anger du parametrarna:
Logga in på Azure-portalen.
Gå till Inställningar för Microsoft Defender för molnmiljö>.
Välj relevant prenumeration.
Välj Säkerhetsprincip i Defender för molnets meny.
Välj relevant tilldelning. Standardtilldelningen är
ASC default
.Öppna fliken Parametrar och ändra värdena efter behov.
Välj Granska + spara.
Välj Spara.
Så här framtvingar du någon av rekommendationerna:
Öppna sidan med rekommendationsinformation och välj Neka:
Fönstret för att ange omfånget öppnas.
Ange omfånget och välj Ändra för att neka.
Så här ser du vilka rekommendationer som gäller för dina kluster:
Öppna Defender för molnets tillgångsinventeringssida och ange filtret för resurstyp till Kubernetes-tjänster.
Välj ett kluster för att undersöka och granska tillgängliga rekommendationer för det.
När du visar en rekommendation från arbetsbelastningsskyddsuppsättningen visas antalet berörda poddar ("Kubernetes-komponenter") tillsammans med klustret. Om du vill ha en lista över de specifika poddarna väljer du klustret och väljer sedan Vidta åtgärd.
Om du vill testa tillämpningen använder du de två Kubernetes-distributionerna nedan:
Den ena är för en felfri distribution, kompatibel med paketet med arbetsbelastningsskyddsrekommendationer.
Den andra är för en distribution som inte är felfri och inte är kompatibel med någon av rekommendationerna.
Distribuera exemplet .yaml-filer som de är eller använd dem som referens för att åtgärda din egen arbetsbelastning.
Felfri distributionsexempel .yaml-fil
apiVersion: apps/v1
kind: Deployment
metadata:
name: redis-healthy-deployment
labels:
app: redis
spec:
replicas: 3
selector:
matchLabels:
app: redis
template:
metadata:
labels:
app: redis
annotations:
container.apparmor.security.beta.kubernetes.io/redis: runtime/default
spec:
containers:
- name: redis
image: <customer-registry>.azurecr.io/redis:latest
ports:
- containerPort: 80
resources:
limits:
cpu: 100m
memory: 250Mi
securityContext:
privileged: false
readOnlyRootFilesystem: true
allowPrivilegeEscalation: false
runAsNonRoot: true
runAsUser: 1000
---
apiVersion: v1
kind: Service
metadata:
name: redis-healthy-service
spec:
type: LoadBalancer
selector:
app: redis
ports:
- port: 80
targetPort: 80
.yaml-fil med exempel på felaktig distribution
apiVersion: apps/v1
kind: Deployment
metadata:
name: redis-unhealthy-deployment
labels:
app: redis
spec:
replicas: 3
selector:
matchLabels:
app: redis
template:
metadata:
labels:
app: redis
spec:
hostNetwork: true
hostPID: true
hostIPC: true
containers:
- name: redis
image: redis:latest
ports:
- containerPort: 9001
hostPort: 9001
securityContext:
privileged: true
readOnlyRootFilesystem: false
allowPrivilegeEscalation: true
runAsUser: 0
capabilities:
add:
- NET_ADMIN
volumeMounts:
- mountPath: /test-pd
name: test-volume
readOnly: true
volumes:
- name: test-volume
hostPath:
# directory location on host
path: /tmp
---
apiVersion: v1
kind: Service
metadata:
name: redis-unhealthy-service
spec:
type: LoadBalancer
selector:
app: redis
ports:
- port: 6001
targetPort: 9001
Nästa steg
I den här artikeln har du lärt dig hur du konfigurerar Kubernetes dataplanshärdning.
För relaterat material, se följande sidor: