Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Kubernetes-Datenebenenhärtung hilft beim Erzwingen sicherer Konfigurationen für Arbeitslasten, die in Ihrem Cluster ausgeführt werden, z. B. das Einschränken privilegierter Container, das Erzwingen von Ressourcenlimits und das Einschränken des Netzwerkzugriffs.
In Microsoft Defender for Cloud wird die Härtung der Datenebene mithilfe von Azure Policy für Kubernetes implementiert, um diese Konfigurationen auszuwerten und zu erzwingen. Azure Policy wird als Teil von Defender für Container bereitgestellt, wenn die automatische Bereitstellung aktiviert ist.
Wenn Azure Policy für Kubernetes in den Defender für Containerplaneinstellungen deaktiviert ist, können Sie sie bereitstellen, indem Sie die entsprechende Empfehlung beheben. Sie können Azure Policy auch manuell bereitstellen, indem Sie Azure CLI oder Helm verwenden, wenn Sie die automatische Bereitstellung während der Aktivierung deaktiviert oder bestimmte Cluster von der automatischen Bereitstellung ausgeschlossen haben.
Nachdem Azure Policy für Kubernetes bereitgestellt wurde, generiert Defender for Cloud Basierend auf Ihrer Clusterkonfiguration Empfehlungen zur Härtung der Datenebene. Auf dieser Seite wird gezeigt, wie Sie diese Empfehlungen überprüfen, Richtlinienparameter konfigurieren und in Ihren Clustern erzwingen.
Voraussetzungen
Stellen Sie zunächst folgendes sicher:
Sie haben die erforderlichen FQDN/Anwendungsregeln für die Azure-Richtlinie hinzugefügt.
(Für Nicht-AKS-Cluster) Ihr Kubernetes-Cluster ist connected to Azure Arc.
Aktivieren Sie die Azure Policy für Kubernetes, indem Sie Empfehlungen umsetzen
Wenn Azure Policy für Kubernetes nicht bereitgestellt oder in den Einstellungen des Plans 'Defender for Containers' deaktiviert wurde, können Sie sie installieren, indem Sie die entsprechende Empfehlung in Defender for Cloud ausführen.
Melden Sie sich im Azure-Portal an.
Wechseln Sie zu Microsoft Defender for Cloud>Recommendations.
Suchen Sie nach der relevanten Empfehlung:
- Azure: Azure Kubernetes Service-Cluster sollten das Azure Policy Add-On für Kubernetes installiert haben.
- GCP: GKE-Cluster sollten die Azure Policy Erweiterung installiert haben.
- AWS/Arc-enabled Kubernetes: Azure Arc-enabled Kubernetes-Cluster sollten die Azure Policy Erweiterung installiert haben.
Wählen Sie eine Empfehlung aus.
Wählen Sie auf der Registerkarte "Aktion ausführen " die Option "Korrigieren" aus.
Wählen Sie "Korrigieren" aus, um die ausgewählten Ressourcen zu beheben.
Wiederholen Sie diesen Vorgang für jede Empfehlung.
Empfehlungen zur Härtung der Datenebene
Nachdem Sie Azure Policy für Kubernetes bereitgestellt haben, bewertet Defender for Cloud Ihre Clusterkonfiguration und generiert Empfehlungen für die Datenebenenhärtung. Dieser Vorgang kann bis zu 30 Minuten dauern.
Note
Microsoft Komponenten, z. B. der Defender Sensor, werden standardmäßig im kube-system-Namespace bereitgestellt und sind nicht als nicht konform gekennzeichnet. Komponenten von Drittanbietern, die in anderen Namespaces installiert sind, werden möglicherweise gekennzeichnet. Um bestimmte Namespaces auszuschließen, konfigurieren Sie Azure Richtlinienausschlüsse.
In der folgenden Tabelle sind allgemeine Empfehlungen für die Härtung der Datenebene aufgeführt:
| Name der Empfehlung | Sicherheitskontrolle | Konfiguration erforderlich |
|---|---|---|
| Für Container müssen CPU- und Arbeitsspeicherlimits erzwungen werden | Anwendungen vor DDoS-Angriffen schützen | Ja |
| Containerimages dürfen nur aus vertrauenswürdigen Registrys bereitgestellt werden | Sicherheitsrisiken beheben | Ja |
| Linux-Funktionen mit den niedrigsten Berechtigungen für Container erzwingen | Zugriff und Berechtigungen verwalten | Ja |
| Container sollten nur zulässige AppArmor-Profile verwenden | Optimieren von Sicherheitskonfigurationen | Ja |
| Dienste dürfen nur an zulässigen Ports lauschen | Nicht autorisierten Netzwerkzugriff einschränken | Ja |
| Einschränkung der Nutzung von Host-Netzwerken und -Ports | Nicht autorisierten Netzwerkzugriff einschränken | Ja |
| Die Nutzung von HostPath-Volumeneinbindungen in Pods sollte auf eine bekannte Liste beschränkt werden | Zugriff und Berechtigungen verwalten | Ja |
| Container mit Rechteausweitung müssen vermieden werden | Zugriff und Berechtigungen verwalten | No |
| Container, die sensible Host-Namespaces gemeinsam nutzen, sollten vermieden werden | Zugriff und Berechtigungen verwalten | No |
| Unveränderliches (schreibgeschütztes) Stammdateisystem für Container erzwingen | Zugriff und Berechtigungen verwalten | No |
| Auf Kubernetes-Cluster sollte nur über HTTPS zugegriffen werden können. | Verschlüsseln von Daten während der Übertragung | No |
| Kubernetes-Cluster sollten das automatische Einhängen von API-Anmeldeinformationen deaktivieren | Zugriff und Berechtigungen verwalten | No |
| Kubernetes-Cluster sollten nicht den Standardnamespace verwenden | Bewährte Sicherheitsmethoden implementieren | No |
| Kubernetes-Cluster sollten nicht CAP_SYS_ADMIN Funktionen gewähren | Zugriff und Berechtigungen verwalten | No |
| Privilegierte Container müssen vermieden werden | Zugriff und Berechtigungen verwalten | No |
| Das Ausführen von Containern als Root-Benutzer muss vermieden werden | Zugriff und Berechtigungen verwalten | No |
Anzeigen von Empfehlungen für einen Cluster
So zeigen Sie Empfehlungen zur Härtung der Datenebene für einen bestimmten Cluster an:
Melden Sie sich im Azure-Portal an.
Wechseln Sie zu Defender for Cloud>Inventory.
Legen Sie den Ressourcentypfilter auf Kubernetes-Dienst fest und wählen Sie Anwenden.
Wählen Sie den relevanten Cluster aus.
Überprüfen Sie die verfügbaren Empfehlungen. Empfehlungen zur Datenebenenhärtung zeigen die Anzahl der betroffenen Kubernetes-Komponenten an.
Wählen Sie eine Empfehlung aus, um betroffene Ressourcen anzuzeigen.
Wählen Sie die Registerkarte "Aktion ausführen " aus, um die Korrekturoptionen zu überprüfen.
Konfigurieren von Richtlinienparametern
Einige Empfehlungen erfordern eine effektive Parameterkonfiguration. Die Empfehlung Container-Images sollten nur aus vertrauenswürdigen Registern bereitgestellt werden erfordert, dass Sie eine Liste der vertrauenswürdigen Register definieren.
Wenn erforderliche Parameter nicht konfiguriert sind, werden Ressourcen als nicht betriebsbereit angezeigt.
So konfigurieren Sie Richtlinienparameter:
Melden Sie sich im Azure-Portal an.
Wechseln Sie zu Microsoft Defender for Cloud>Umgebungseinstellungen.
Wählen Sie das relevante Abonnement aus.
Wählen Sie Sicherheitsrichtlinien aus.
Wählen Sie auf der Registerkarte "Standards " den relevanten Sicherheitsstandard aus.
Wählen Sie das 3-Punkt-Menü der relevanten Richtlinienzuweisung und dann " Effekt und Parameter verwalten" aus.
Aktualisieren Sie die erforderlichen Parameterwerte.
Wählen Sie Speichern aus.
Richtlinien für die Härtung auf Datenebene durchsetzen
Standardmäßig bewerten Richtlinien Ressourcen im Überwachungsmodus. Um eine Richtlinie zu erzwingen, legen Sie den Effekt auf "Verweigern" fest.
So erzwingen Sie eine Empfehlung:
Melden Sie sich im Azure-Portal an.
Wechseln Sie zu Microsoft Defender for Cloud>Recommendations.
Suchen und wählen Sie die relevante Empfehlung für die Härtung der Datenebene aus.
Wählen Sie auf der Registerkarte " Aktion ausführen " die Option "Ablehnen" aus.
Legen Sie den Bereich fest.
Wählen Sie "Ändern" aus, um zu verweigern.
Test der Durchsetzung von Richtlinien
Sie können Richtlinien zur Härtung von Datenebenen überprüfen, indem Sie Testworkloads bereitstellen.
- Eine konforme Bereitstellung, die die Anforderungen an die Härtung der Datenebene erfüllt
- Eine nicht kompatible Bereitstellung, die gegen mehrere Richtlinien verstößt
Stellen Sie das folgende Beispiel für YAML-Dateien bereit, um zu überprüfen, ob kompatible Workloads erfolgreich bereitgestellt werden und nicht kompatible Workloads je nach Richtlinienerzwingungseinstellungen gekennzeichnet oder blockiert werden.
Beispiel für die kompatible Bereitstellung
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
Beispiel für eine nicht kompatible Bereitstellung
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