Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Kubernetes dataplanshärdning hjälper till att framtvinga säkra konfigurationer för arbetsbelastningar som körs i klustret, till exempel begränsa privilegierade containrar, framtvinga resursgränser och begränsa nätverksåtkomsten.
I Microsoft Defender för molnet implementeras härdning av dataplanet med hjälp av Azure Policy för Kubernetes för att utvärdera och tillämpa dessa konfigurationer. Azure Policy distribueras som en del av Defender för containrar när automatisk etablering är aktiverad.
Om Azure Policy för Kubernetes är inaktiverad i inställningarna för Defender for Containers, kan du distribuera den genom att åtgärda den relevanta rekommendationen. Du kan också distribuera Azure Policy manuellt med hjälp av Azure CLI eller Helm om du inaktiverade automatisk etablering under aktivering eller exkluderade specifika kluster från automatisk etablering.
När Azure Policy för Kubernetes har distribuerats genererar Defender för molnet härdningsrekommendationer för dataplanet baserat på klusterkonfigurationen. Den här sidan visar hur du granskar dessa rekommendationer, konfigurerar principparametrar och framtvingar dem i dina kluster.
Förutsättningar
Börja med att kontrollera att:
Du har lagt till de nödvändiga FQDN-/applikationsreglerna för Azure-policy.
(För icke AKS-kluster) Kubernetes-klustret är anslutet till Azure Arc.
Aktivera Azure Policy för Kubernetes genom att åtgärda rekommendationer
Om Azure Policy för Kubernetes inte har distribuerats eller har inaktiverats i inställningarna för Defender för containrar kan du installera Azure Policy genom att åtgärda den relevanta rekommendationen i Defender för molnet.
Logga in på Azure-portalen.
Gå till Microsoft Defender för molnet>Recommendations.
Sök efter relevant rekommendation:
- Azure: Azure Kubernetes Service kluster bör ha Azure Policy-tillägget för Kubernetes installerat
- GCP: GKE-kluster bör ha Azure Policy-tillägget installerat
- AWS/Arc-aktiverade Kubernetes: Azure Arc-aktiverade Kubernetes-kluster bör ha Azure Policy-tillägget installerat
Välj en rekommendation.
På fliken Vidta åtgärd väljer du Åtgärda.
Välj Åtgärda för att åtgärda de valda resurserna.
Upprepa för varje rekommendation.
Rekommendationer för härdning av dataplan
När du har distribuerat Azure Policy för Kubernetes utvärderar Defender för molnet klusterkonfigurationen och genererar härdningsrekommendationer för dataplanet. Den här processen kan ta upp till 30 minuter.
Anteckning
Microsoft komponenter, till exempel Defender sensorn, distribueras som standard i namnområdet kube-system och markeras inte som inkompatibla. Komponenter från tredje part som är installerade i andra namnområden kan flaggas. Om du vill undanta specifika namnområden konfigurerar du Azure principundantag.
I följande tabell visas vanliga härdningsrekommendationer för dataplanet:
| 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 pods HostPath-volymmonteringar bör begränsas till en specificerad lista | Hantera åtkomst och behörigheter | Ja |
| Container som har 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 CAP_SYS_ADMIN funktioner | 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 |
Visa rekommendationer för ett kluster
Så här visar du härdningsrekommendationer för dataplanet för ett specifikt kluster:
Logga in på Azure-portalen.
Gå till Defender för molnet>Inventory.
Ange filtret för resurstyp till Kubernetes-tjänsten och välj Använd.
Välj relevant kluster.
Granska de tillgängliga rekommendationerna. Härdningsrekommendationer för dataplanet visar antalet berörda Kubernetes-komponenter.
Välj en rekommendation för att visa berörda resurser.
Välj fliken Vidta åtgärd för att granska reparationsalternativen.
Konfigurera principparametrar
Vissa rekommendationer kräver att parameterkonfigurationen är effektiv. Rekommendationen Containeravbildningar ska till exempel distribueras från betrodda register kräver bara att du definierar en lista över betrodda register.
Om nödvändiga parametrar inte har konfigurerats visas resurserna som ohälsosamma.
Så här konfigurerar du principparametrar:
Logga in på Azure-portalen.
Gå till Microsoft Defender för molnet>Miljöinställningar.
Välj relevant prenumeration.
Välj Säkerhetsprinciper.
På fliken Standarder väljer du relevant säkerhetsstandard.
Välj den relevanta principtilldelningens 3-punktsmeny och välj Hantera effekt och parametrar.
Uppdatera de obligatoriska parametervärdena.
Välj Spara.
Framtvinga härdningsprinciper för dataplanet
Som standard utvärderar principer resurser i granskningsläge. Om du vill framtvinga en princip anger du dess effekt till Neka.
Så här framtvingar du en rekommendation:
Logga in på Azure-portalen.
Gå till Microsoft Defender för molnet>Recommendations.
Sök efter och välj den relevanta härdningsrekommenderingen för dataplanet.
På fliken Vidta åtgärd väljer du Neka.
Ange omfånget.
Välj Växla till neka.
Testa policyns tillämpning
Du kan verifiera principerna för härdning av dataplan genom att distribuera testarbetslaster.
- En kompatibel utplacering som uppfyller kraven för dataplanshärdning
- En icke-kompatibel distribution som bryter mot flera policyer
Distribuera följande YAML-exempelfiler för att kontrollera att kompatibla arbetsbelastningar har distribuerats och att inkompatibla arbetsbelastningar flaggas eller blockeras, beroende på inställningarna för principframtvingande.
Exempel på kompatibel distribution
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
Exempel på icke-kompatibel utrullning
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