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.
Auf dieser Seite wird beschrieben, wie Sie die Sicherheitsempfehlungen von Microsoft Defender for Cloud verwenden, die der Härtung der Kubernetes-Datenebene gewidmet sind.
Tipp
Eine Liste der Sicherheitsempfehlungen, die für Kubernetes-Cluster und Knoten angezeigt werden können, finden Sie unter "Containerempfehlungen".
Richten Sie Ihren Arbeitslastschutz ein
Microsoft Defender for Cloud enthält ein Bündel von Empfehlungen, die verfügbar sind, nachdem Sie die Azure Policy für Kubernetes installiert haben.
Voraussetzungen
- Fügen Sie die Required FQDN/application-Regeln für die Azure-Richtlinie hinzu.
- (Bei Nicht-AKS-Clustern) Verbinden eines vorhandenen Kubernetes-Clusters mit Azure Arc.
Aktivieren der Härtung der Kubernetes-Datenebene
Sie können die Azure Policy für Kubernetes auf eine von zwei Arten aktivieren:
- Aktivieren Sie für alle aktuellen und zukünftigen Cluster mithilfe von Plan-/Connectoreinstellungen:
- Deploy Azure Policy für Kubernetes auf vorhandenen Clustern
Aktivieren von Azure Policy für Kubernetes für alle aktuellen und zukünftigen Cluster mithilfe von Plan-/Connectoreinstellungen
Hinweis
Wenn Sie diese Einstellung aktivieren, werden die Azure Policy für Kubernetes-Pods auf dem Cluster installiert. Dadurch wird eine kleine Menge an CPU und Arbeitsspeicher zugeordnet, die die Pods verwenden können. Diese Zuordnung kann die maximale Kapazität erreichen, wirkt sich aber nicht auf den Rest der CPU und des Arbeitsspeichers der Ressource aus.
Hinweis
Die Aktivierung für AWS über den Connector wird aufgrund einer Einschränkung in EKS nicht unterstützt, die erfordert, dass der Clusteradministrator Berechtigungen für eine neue IAM-Rolle auf dem Cluster selbst hinzusetzt.
Aktivieren für Azure Abonnements oder lokal
Wenn Sie Microsoft Defender für Container aktivieren, ist die Einstellung "Azure Policy für Kubernetes" standardmäßig für die Azure Kubernetes Service und für Azure Arc-fähige Kubernetes-Cluster im entsprechenden Abonnement aktiviert. Wenn Sie die Einstellung bei der Erstkonfiguration deaktivieren, können Sie sie anschließend manuell aktivieren.
Wenn Sie die Einstellungen für "Azure Policy für Kubernetes" unter dem Containerplan deaktiviert haben, können Sie die Schritte ausführen, um sie in allen Clustern in Ihrem Abonnement zu aktivieren:
Melden Sie sich beim portal Azure an.
Wechseln Sie zu Microsoft Defender for Cloud>Management>Environment settings.
Wählen Sie das relevante Abonnement aus.
Stellen Sie auf der Seite Defender-Pläne sicher, dass Containers auf On eingeschaltet ist.
Wählen Sie Settingsaus.
In der Seite "Einstellungen und Überwachung" schalten Sie die Azure-Richtlinie für Kubernetes auf Ein.
Aktivieren für GCP-Projekte
Wenn Sie Microsoft Defender für Container auf einem GCP-Connector aktivieren, ist die Einstellung "Azure Policy Erweiterung für Azure Arc" standardmäßig für das Google Kubernetes-Modul im entsprechenden Projekt aktiviert. Wenn Sie die Einstellung bei der Erstkonfiguration deaktivieren, können Sie sie anschließend manuell aktivieren.
Wenn Sie die Einstellungen für "Azure Policy Erweiterung für Azure Arc" unter dem GCP-Connector deaktiviert haben, können Sie die folgenden Schritte ausführen, um sie auf Ihrem GCP-Connector zu aktivieren.
Bereitstellen von Azure Policy für Kubernetes auf vorhandenen Clustern
Sie können die Azure Policy für Kubernetes auf vorhandenen Kubernetes-Clustern über die Seite "Empfehlungen" manuell konfigurieren. Nach der Aktivierung wird die Härtungsempfehlung verfügbar (einige der Empfehlungen erfordern eine andere Konfiguration, damit sie funktionieren).
Hinweis
Für AWS wird die Integration in großem Umfang über den Connector nicht unterstützt. Sie können jedoch Azure Policy für Kubernetes auf allen vorhandenen Clustern oder auf bestimmten Clustern installieren, indem Sie die Empfehlung Azure Arc-enabled Kubernetes clusters should have the Azure policy extension for Kubernetes extension installed verwenden.
Zu Bereitstellen der Azure Policy für Kubernetes in angegebenen Clustern:
Melden Sie sich beim portal Azure an.
Wechseln Sie zu Microsoft Defender for Cloud>General>Recommendations.
Suchen Sie nach der relevanten Empfehlung:
-
Azure -
"Azure Kubernetes Service clusters should have the Azure Policy add-on for Kubernetes installed" -
GCP -
"GKE clusters should have the Azure Policy extension". -
AWS und On-Premises -
"Azure Arc-enabled Kubernetes clusters should have the Azure policy extension for Kubernetes extension installed".
-
Azure -
Wählen Sie eine gefundene Empfehlung aus.
Wählen Sie Korrigieren aus.
Wiederholen Sie diesen Vorgang für jede weitere Empfehlung.
Anzeigen und Konfigurieren des Empfehlungspakets
Ungefähr 30 Minuten nach dem Abschluss der Installation der Azure Policy für Kubernetes zeigt Defender for Cloud den Integritätsstatus der Cluster für die folgenden Empfehlungen an, die jeweils in der entsprechenden Sicherheitskontrolle angezeigt werden.
Hinweis
Wenn Sie das Azure Policy für Kubernetes zum ersten Mal installieren, werden diese Empfehlungen in der Liste der Empfehlungen als neue Ergänzungen angezeigt.
Tipp
Einige Empfehlungen verfügen über Parameter, die über Azure Policy angepasst werden müssen, um sie effektiv zu nutzen. Um beispielsweise von der Empfehlung, dass Container-Images nur aus vertrauenswürdigen Registries bereitgestellt werden sollten, zu profitieren, müssen Sie Ihre vertrauenswürdigen Registries definieren. Wenn Sie die erforderlichen Parameter für die Empfehlungen, die konfiguriert werden müssen, nicht eingeben, werden Ihre Workloads als fehlerhaft angezeigt.
Hinweis
Microsoft Komponenten wie der Defender Sensor werden standardmäßig im Kube-System-Namespace bereitgestellt. Durch diese Einrichtung wird sichergestellt, dass sie in Datenebenenempfehlungen nicht als nicht konform gekennzeichnet sind. Drittanbietertools, die in einem anderen Namespace installiert sind, werden jedoch möglicherweise als nicht konform gekennzeichnet. Um Drittanbieter von diesen Empfehlungen auszuschließen, können Sie ihren Namespace der Ausschlussliste hinzufügen.
| Name der Empfehlung | Sicherheitskontrolle | Konfiguration erforderlich |
|---|---|---|
| Für Container müssen CPU- und Arbeitsspeicherlimits erzwungen werden | Anwendungen vor DDoS-Angriffen schützen | Ja |
| Container-Images sollten nur von vertrauenswürdigen Registries 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 | Nein |
| Container, die sensible Host-Namespaces gemeinsam nutzen, sollten vermieden werden | Zugriff und Berechtigungen verwalten | Nein |
| Unveränderliches (schreibgeschütztes) Stammdateisystem für Container erzwingen | Zugriff und Berechtigungen verwalten | Nein |
| Auf Kubernetes-Cluster sollte nur über HTTPS zugegriffen werden können | Verschlüsseln von Daten während der Übertragung | Nein |
| Kubernetes-Cluster sollten das automatische Einhängen von API-Anmeldeinformationen deaktivieren | Zugriff und Berechtigungen verwalten | Nein |
| Kubernetes-Cluster sollten nicht den Standardnamespace verwenden | Bewährte Sicherheitsmethoden implementieren | Nein |
| Kubernetes-Cluster sollten keine CAPSYSADMIN-Sicherheitsfunktionen gewähren | Zugriff und Berechtigungen verwalten | Nein |
| Privilegierte Container müssen vermieden werden | Zugriff und Berechtigungen verwalten | Nein |
| Das Ausführen von Containern als Root-Benutzer muss vermieden werden | Zugriff und Berechtigungen verwalten | Nein |
Bei Empfehlungen, die dies erfordern, müssen Sie die Parameter anpassen:
So legen Sie die Parameter fest
Melden Sie sich beim portal Azure an.
Wechseln Sie zu Microsoft Defender for Cloud>Management>Environment settings.
Wählen Sie das relevante Abonnement aus.
Wählen Sie im Navigationsmenü "Sicherheitsrichtlinien" aus.
Suchen Sie auf der Registerkarte "Standards " nach dem entsprechenden Sicherheitsstandard.
Wählen Sie das 3-Punkt-Menü des Sicherheitsstandard aus, und wählen Sie "Verwalten" aus.
Wählen Sie das 3-Punkt-Menü der relevanten Richtlinienzuweisung und dann " Effekt und Parameter verwalten" aus.
Ändern Sie die Werte nach Bedarf.
Wählen Sie Speichern aus.
So erzwingen Sie eine der Empfehlungen
Öffnen Sie die Seite mit den Details zur Empfehlung, und wählen Sie Ablehnen aus:
Der Bereich zum Festlegen des Umfangs wird geöffnet.
Legen Sie den Umfang fest, und wählen Sie Ändern in „Ablehnen“.
Welche Empfehlungen für Ihre Cluster gelten
Melden Sie sich beim portal Azure an.
Wechseln Sie zu Defender for Cloud>Inventory.
Legen Sie den Ressourcentypfilter auf Kubernetes-Dienste fest, und wählen Sie Übernehmen aus.
Wählen Sie einen Cluster aus, der untersucht werden soll.
Überprüfen Sie die verfügbaren Empfehlungen dafür. Wenn Sie eine Empfehlung aus dem Workload-Schutz-Set anzeigen, wird neben dem Cluster auch die Anzahl der betroffenen Pods („Kubernetes-Komponenten“) aufgeführt.
Optional: Wählen Sie für eine Liste der spezifischen Pods die Empfehlung aus.
und wählen Sie dann "Aktion ausführen" aus.
Um die Erzwingung zu testen, verwenden Sie die folgenden beiden Kubernetes-Bereitstellungen:
Einer ist für eine gesunde Bereitstellung, die mit den Empfehlungen zum Workloadschutz konform ist.
Die andere stellt eine fehlerhafte Bereitstellung dar, die mit keiner der Empfehlungen konform ist.
Stellen Sie die YAML-Beispieldateien unverändert bereit, oder verwenden Sie sie als Referenz zum Korrigieren Ihrer eigenen Workload.
YAML-Dateibeispiel einer fehlerfreien 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
YAML-Dateibeispiel einer fehlerhaften 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
Nächste Schritte
In diesem Artikel haben Sie erfahren, wie Sie das Härten der Kubernetes-Datenebene konfigurieren.
Verwandte Informationen finden Sie auf den folgenden Seiten: