Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Kubernetes-gegevensvlakbeveiliging helpt bij het afdwingen van beveiligde configuraties voor workloads die worden uitgevoerd in uw cluster, zoals het beperken van bevoegde containers, het afdwingen van resourcelimieten en het beperken van netwerktoegang.
In Microsoft Defender voor Cloud wordt gegevensvlakbeveiliging geïmplementeerd met behulp van Azure Policy voor Kubernetes om deze configuraties te evalueren en af te dwingen. Azure Policy wordt geïmplementeerd als onderdeel van Defender voor containers wanneer automatische inrichting ingeschakeld is.
Als Azure Policy voor Kubernetes is uitgeschakeld in de Defender for Containers-planinstellingen, kunt u deze implementeren door de relevante aanbeveling te herstellen. U kunt Azure Policy ook handmatig implementeren met behulp van Azure CLI of Helm als u automatische inrichting hebt uitgeschakeld tijdens het inschakelen of uitsluiten van specifieke clusters van automatische inrichting.
Nadat Azure Policy voor Kubernetes is geïmplementeerd, genereert Defender voor Cloud aanbevelingen voor gegevensvlakbeveiliging op basis van uw clusterconfiguratie. Op deze pagina ziet u hoe u deze aanbevelingen controleert, beleidsparameters configureert en afdwingt op uw clusters.
Vereisten
Om te beginnen moet u ervoor zorgen dat:
Defender voor containers is ingeschakeld voor uw abonnement.
U hebt de vereiste FQDN/applicatieregels voor Azure-beleid toegevoegd.
(Voor niet-AKS-clusters) Uw Kubernetes-cluster is verbonden met Azure Arc.
Azure Policy voor Kubernetes inschakelen door aanbevelingen te herstellen
Als Azure Policy voor Kubernetes niet is geïmplementeerd of is uitgeschakeld in de Defender for Containers-planinstellingen, kunt u deze installeren door de relevante aanbeveling in Defender voor Cloud te herstellen.
Meld u aan bij de Azure-portal.
Ga naar Microsoft Defender voor Cloud>Aanbevelingen.
Zoek naar de relevante aanbeveling:
- Azure: Azure Kubernetes Service clusters moeten de Azure Policy-invoegtoepassing voor Kubernetes hebben geïnstalleerd
- GCP: GKE-clusters moeten de Azure Policy-extensie hebben geïnstalleerd
- AWS/Arc-enabled Kubernetes: Azure Arc-enabled Kubernetes-clusters moeten de Azure Policy-extensie hebben geïnstalleerd
Selecteer een aanbeveling.
Selecteer Op het tabblad Actie ondernemende optie Herstellen.
Kies Corrigeren om de geselecteerde bronnen te herstellen.
Herhaal dit voor elke aanbeveling.
Aanbevelingen voor het beveiligen van gegevensvlakken
Nadat u Azure Policy voor Kubernetes hebt geïmplementeerd, heeft Defender voor Cloud de clusterconfiguratie geëvalueerd en aanbevelingen voor de beveiliging van het gegevensvlak gegenereerd. Dit proces kan tot 30 minuten duren.
Notitie
Microsoft onderdelen, zoals de Defender sensor, worden standaard geïmplementeerd in de kube-system-naamruimte en worden niet gemarkeerd als niet-compatibel. Onderdelen van derden die zijn geïnstalleerd in andere naamruimten, kunnen worden gemarkeerd. Als u specifieke naamruimten wilt uitsluiten, configureert u Azure beleidsuitsluitingen.
De volgende tabel bevat algemene aanbevelingen voor gegevensvlakbeveiliging:
| Naam van aanbeveling | Beveiligingsbeheer | Configuratie vereist |
|---|---|---|
| De CPU- en geheugenlimieten van containers moeten worden afgedwongen | Toepassingen beschermen tegen DDoS-aanvallen | Ja |
| Containerafbeeldingen mogen alleen worden geïmplementeerd vanuit vertrouwde registers | Kwetsbaarheden verhelpen | Ja |
| Minimaal bevoegde Linux-functies moeten worden afgedwongen voor containers | Toegang en machtigingen beheren | Ja |
| Containers mogen alleen toegestane AppArmor-profielen gebruiken | Beveiligingsinstellingen herstellen en verbeteren | Ja |
| Services mogen alleen op toegestane poorten luisteren | Onbevoegde netwerktoegang beperken | Ja |
| Het gebruik van hostnetwerken en -poorten moet worden beperkt | Onbevoegde netwerktoegang beperken | Ja |
| Het gebruik van HostPath-volumekoppelingen voor pods moet worden beperkt tot een specifieke lijst | Toegang en machtigingen beheren | Ja |
| Container met privilege-escalatie moet worden vermeden | Toegang en machtigingen beheren | Nee |
| Containers die gevoelige hostnaamruimten delen, moeten worden vermeden | Toegang en machtigingen beheren | Nee |
| Onveranderbaar (alleen-lezen) hoofdbestandssysteem moet worden afgedwongen voor containers | Toegang en machtigingen beheren | Nee |
| Kubernetes-clusters mogen alleen toegankelijk zijn via HTTPS | Versleutel gegevens tijdens transport | Nee |
| Kubernetes-clusters moeten het automatisch koppelen van API-referenties uitschakelen | Toegang en machtigingen beheren | Nee |
| Kubernetes-clusters mogen de standaardnaamruimte niet gebruiken | Best practices voor beveiliging implementeren | Nee |
| Kubernetes-clusters mogen geen CAP_SYS_ADMIN mogelijkheden verlenen | Toegang en machtigingen beheren | Nee |
| Geprivilegieerde containers moeten worden vermeden | Toegang en machtigingen beheren | Nee |
| Het uitvoeren van containers als root gebruiker moet worden vermeden | Toegang en machtigingen beheren | Nee |
Aanbevelingen voor een cluster weergeven
Aanbevelingen voor datavlakverharding voor een specifiek cluster bekijken:
Meld u aan bij de Azure-portal.
Ga naar Defender voor Cloud>Inventory.
Stel het resourcetypefilter in op de Kubernetes-service en selecteer Toepassen.
Selecteer het relevante cluster.
Bekijk de beschikbare aanbevelingen. Aanbevelingen voor gegevensvlakbeveiliging geven het aantal betrokken Kubernetes-onderdelen weer.
Selecteer een aanbeveling om betrokken resources weer te geven.
Selecteer het tabblad Actie ondernemen om herstelopties te controleren.
Beleidsparameters configureren
Voor sommige aanbevelingen moet de parameterconfiguratie effectief zijn. De aanbeveling containerafbeeldingen moeten bijvoorbeeld alleen worden geïmplementeerd vanuit vertrouwde registers vereist dat u een lijst met vertrouwde registers definieert.
Als vereiste parameters niet zijn geconfigureerd, worden resources weergegeven als ongezond.
Om beleidsparameters te configureren:
Meld u aan bij de Azure-portal.
Ga naar Microsoft Defender voor Cloud>Omgevingsinstellingen.
Selecteer het betreffende abonnement.
Selecteer Beveiligingsbeleid.
Selecteer op het tabblad Standaarden de relevante beveiligingsstandaard.
Selecteer het 3-punts menu van de relevante beleidstoewijzing en selecteer Effect en parameters beheren.
Werk de vereiste parameterwaarden bij.
Selecteer Opslaan.
Beleid voor het beveiligen van gegevensvlakken afdwingen
Beleidsregels evalueren standaard resources in de controlemodus. Als u een beleid wilt afdwingen, stelt u het effect ervan in op Weigeren.
Het handhaven van een aanbeveling:
Meld u aan bij de Azure-portal.
Ga naar Microsoft Defender voor Cloud>Aanbevelingen.
Zoek en selecteer de relevante aanbeveling voor gegevensvlak verharding.
Selecteer Weigeren op het tabblad Actie ondernemen.
Stel het bereik in.
Selecteer Wijzigen naar weigeren.
Beleidshandhaving testen
U kunt het gegevensvlakbeveiligingsbeleid valideren door testworkloads te implementeren.
- Een compatibele implementatie die voldoet aan de vereisten voor de beveiliging van gegevensvlakken
- Een niet-compatibele implementatie die meerdere beleidsregels schendt
Implementeer het volgende voorbeeld van YAML-bestanden om te controleren of compatibele workloads zijn geïmplementeerd en niet-compatibele workloads worden gemarkeerd of geblokkeerd, afhankelijk van de instellingen voor het afdwingen van beleid.
Voorbeeld van compatibele implementatie
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
Voorbeeld van niet-compatibele implementatie
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