Uw Kubernetes-gegevensvlakbeveiliging beveiligen
Op deze pagina wordt beschreven hoe u de set beveiligingsaanbeveling van Microsoft Defender voor Cloud gebruikt die is toegewezen aan kubernetes-beveiliging van gegevensvlakken.
Tip
Bekijk de aanbevelingen voor containers voor een lijst met de beveiligingsaanbeveling die kan worden weergegeven voor Kubernetes-clusters en -knooppunten.
Uw workloadbeveiliging instellen
Microsoft Defender voor Cloud bevat een bundel aanbevelingen die beschikbaar zijn zodra u de Azure Policy voor Kubernetes.
Vereisten
- Voeg de vereiste FQDN-/toepassingsregels voor Azure-beleid toe.
- (Voor niet-AKS-clusters) Een bestaand Kubernetes-cluster verbinden met Azure Arc.
Kubernetes-gegevensvlakbeveiliging inschakelen
U kunt Azure Policy voor Kubernetes op twee manieren inschakelen:
- Inschakelen voor alle huidige en toekomstige clusters met behulp van plan-/connectorinstellingen
- Azure Policy voor Kubernetes implementeren op bestaande clusters
Azure Policy voor Kubernetes inschakelen voor alle huidige en toekomstige clusters met behulp van plan-/connectorinstellingen
Notitie
Wanneer u deze instelling inschakelt, worden de Azure Policy voor Kubernetes-pods op het cluster geïnstalleerd. Als u dit doet, wordt een kleine hoeveelheid CPU en geheugen toegewezen voor de pods die moeten worden gebruikt. Deze toewijzing kan de maximale capaciteit bereiken, maar dit heeft geen invloed op de rest van de CPU en het geheugen op de resource.
Notitie
Inschakelen voor AWS via de connector wordt niet ondersteund vanwege een beperking in EKS waarvoor de clusterbeheerder machtigingen moet toevoegen voor een nieuwe IAM-rol in het cluster zelf.
Inschakelen voor Azure-abonnementen of on-premises
Wanneer u Microsoft Defender for Containers inschakelt, wordt de instelling Azure Policy voor Kubernetes standaard ingeschakeld voor de Azure Kubernetes Service en voor Kubernetes-clusters met Azure Arc in het relevante abonnement. Als u de instelling voor de eerste configuratie uitschakelt, kunt u deze later handmatig inschakelen.
Als u de instellingen voor Azure Policy voor Kubernetes onder het containerabonnement hebt uitgeschakeld, kunt u de onderstaande stappen volgen om deze in te schakelen voor alle clusters in uw abonnement:
Meld u aan bij het Azure-portaal.
Navigeer naar Microsoft Defender voor Cloud> Omgevingsinstellingen.
Selecteer het betreffende abonnement.
Controleer op de pagina Defender-abonnementen of Containers is ingeschakeld.
Selecteer Instellingen.
Schakel op de pagina Instellingen en bewaking de optie 'Azure Policy voor Kubernetes' in op Aan.
Inschakelen voor GCP-projecten
Wanneer u Microsoft Defender for Containers inschakelt op een GCP-connector, wordt de instelling Azure Policy-extensie voor Azure Arc standaard ingeschakeld voor de Google Kubernetes Engine in het relevante project. Als u de instelling voor de eerste configuratie uitschakelt, kunt u deze later handmatig inschakelen.
Als u de instellingen voor de Azure Policy-extensie voor Azure Arc onder de GCP-connector hebt uitgeschakeld, kunt u de onderstaande stappen volgen om deze in te schakelen op uw GCP-connector.
Azure Policy voor Kubernetes implementeren op bestaande clusters
U kunt het Azure Policy voor Kubernetes handmatig configureren op bestaande Kubernetes-clusters via de pagina Aanbevelingen. Zodra deze optie is ingeschakeld, zijn de aanbevelingen beschikbaar (voor sommige aanbevelingen is een andere configuratie vereist).
Notitie
Voor AWS is het niet mogelijk om onboarding op schaal uit te voeren met behulp van de connector, maar het kan worden geïnstalleerd op alle bestaande clusters of op specifieke clusters met behulp van de aanbeveling kubernetes-clusters met Azure Arc als de Azure Policy-extensie voor Kubernetes-extensie moet zijn geïnstalleerd.
Azure Policy voor Kubernetes implementeren in opgegeven clusters:
Zoek op de pagina met aanbevelingen naar de relevante aanbeveling:
Azuur-
"Azure Kubernetes Service clusters should have the Azure Policy add-on for Kubernetes installed"
GCP -
"GKE clusters should have the Azure Policy extension"
.AWS en on-premises -
"Azure Arc-enabled Kubernetes clusters should have the Azure policy extension for Kubernetes extension installed"
.Tip
De aanbeveling is opgenomen in verschillende beveiligingscontroles en maakt niet uit welke u in de volgende stap selecteert.
Selecteer in een van de beveiligingsbesturingselementen de aanbeveling om de resources te zien waarop u de invoegtoepassing kunt installeren.
Selecteer het relevante cluster en selecteer Herstellen.
De bundel aanbevelingen weergeven en configureren
Ongeveer 30 minuten nadat de installatie van Azure Policy voor Kubernetes is voltooid, geeft Defender voor Cloud de status van de clusters weer voor de volgende aanbevelingen, elk in het relevante beveiligingsbeheer, zoals wordt weergegeven:
Notitie
Als u Azure Policy voor Kubernetes voor het eerst installeert, worden deze aanbevelingen weergegeven als nieuwe toevoegingen in de lijst met aanbevelingen.
Tip
Sommige aanbevelingen hebben parameters die moeten worden aangepast via Azure Policy om ze effectief te kunnen gebruiken. Als u bijvoorbeeld wilt profiteren van de aanbeveling containerinstallatiekopieën moeten alleen worden geïmplementeerd vanuit vertrouwde registers, moet u uw vertrouwde registers definiëren. Als u niet de benodigde parameters invoert voor de aanbevelingen waarvoor configuratie is vereist, worden uw workloads weergegeven als beschadigd.
Notitie
Microsoft-onderdelen zoals de Defender-sensor en Azure Monitor Agent (AMA) worden standaard geïmplementeerd in de kube-system-naamruimte. Deze instelling zorgt ervoor dat ze niet zijn gemarkeerd als niet-compatibel in aanbevelingen voor het gegevensvlak. Leveranciershulpprogramma's van derden die zijn geïnstalleerd in een andere naamruimte, kunnen echter worden gemarkeerd als niet-compatibel. Als u externe leveranciers wilt uitsluiten van deze aanbevelingen, kunt u hun naamruimte toevoegen aan de uitsluitingslijst.
Naam van aanbeveling | Security Control | Configuratie vereist |
---|---|---|
De CPU- en geheugenlimieten van containers moeten worden afgedwongen | Toepassingen beschermen tegen DDoS-aanvallen | Ja |
Containerinstallatiekopieën mogen alleen worden geïmplementeerd vanuit vertrouwde registers | Beveiligingsproblemen herstellen | Ja |
Minimaal bevoegde Linux-functies moeten worden afgedwongen voor containers | Toegang en machtigingen beheren | Ja |
Containers mogen alleen toegestane AppArmor-profielen gebruiken | Beveiligingsconfiguraties herstellen | 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 bekende lijst | Toegang en machtigingen beheren | Ja |
Container met escalatie van bevoegdheden 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 | Actieve gegevens versleutelen | Nee |
Kubernetes-clusters moeten het automatisch koppelen van API-referenties uitschakelen | Toegang en machtigingen beheren | Nee |
Kubernetes-clusters mogen de standaard naamruimte niet gebruiken | Best practices voor beveiliging implementeren | Nee |
Kubernetes-clusters mogen geen CAPSYSADMIN-beveiligingsmogelijkheden verlenen | Toegang en machtigingen beheren | Nee |
Bevoegde containers moeten worden vermeden | Toegang en machtigingen beheren | Nee |
Het uitvoeren van containers als hoofdgebruiker moet worden vermeden | Toegang en machtigingen beheren | Nee |
Voor aanbevelingen met parameters die moeten worden aangepast, moet u de parameters instellen:
De parameters instellen:
Meld u aan bij het Azure-portaal.
Navigeer naar Microsoft Defender voor Cloud> Omgevingsinstellingen.
Selecteer het betreffende abonnement.
Selecteer Beveiligingsbeleid in het menu van Defender voor Cloud.
Selecteer de relevante opdracht. De standaardtoewijzing is
ASC default
.Open het tabblad Parameters en wijzig de waarden naar behoefte.
Selecteer Beoordelen en opslaan.
Selecteer Opslaan.
Een van de aanbevelingen afdwingen:
Open de pagina met aanbevelingsgegevens en selecteer Weigeren:
Het deelvenster voor het instellen van het bereik wordt geopend.
Stel het bereik in en selecteer Wijzigen om te weigeren.
Als u wilt zien welke aanbevelingen van toepassing zijn op uw clusters:
Open de pagina assetinventaris van Defender voor Cloud en stel het resourcetypefilter in op Kubernetes-services.
Selecteer een cluster om de beschikbare aanbevelingen voor het cluster te onderzoeken en te bekijken.
Wanneer u een aanbeveling van de set workloadbeveiliging bekijkt, wordt het aantal betrokken pods ('Kubernetes-onderdelen') naast het cluster weergegeven. Selecteer het cluster voor een lijst met de specifieke pods en selecteer vervolgens Actie ondernemen.
Als u de afdwinging wilt testen, gebruikt u de twee Kubernetes-implementaties hieronder:
Een daarvan is voor een gezonde implementatie die voldoet aan de bundel aanbevelingen voor workloadbeveiliging.
De andere is voor een beschadigde implementatie, niet compatibel met een van de aanbevelingen.
Implementeer de .yaml-voorbeeldbestanden als zodanig of gebruik ze als verwijzing om uw eigen workload te herstellen.
Voorbeeld van een goede implementatie van een YAML-bestand
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 een beschadigde implementatie van een YAML-bestand
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
Volgende stappen
In dit artikel hebt u geleerd hoe u Kubernetes-gegevensvlakbeveiliging configureert.
Zie de volgende pagina's voor gerelateerd materiaal: