Kubernetes-gegevensvlakverharding configureren in Defender voor Cloud

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:

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.

  1. Meld u aan bij de Azure-portal.

  2. Ga naar Microsoft Defender voor Cloud>Aanbevelingen.

  3. 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

    Schermafbeelding met de aanbeveling Azure Kubernetes-serviceclusters.

  4. Selecteer een aanbeveling.

  5. Selecteer Op het tabblad Actie ondernemende optie Herstellen.

    Schermopname van een aanbeveling met de knop Fix gemarkeerd.

  6. Kies Corrigeren om de geselecteerde bronnen te herstellen.

  7. 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:

  1. Meld u aan bij de Azure-portal.

  2. Ga naar Defender voor Cloud>Inventory.

  3. Stel het resourcetypefilter in op de Kubernetes-service en selecteer Toepassen.

    Schermopname van het gebruik van het resourcetypefilter om kubernetes-service te selecteren.

  4. Selecteer het relevante cluster.

  5. Bekijk de beschikbare aanbevelingen. Aanbevelingen voor gegevensvlakbeveiliging geven het aantal betrokken Kubernetes-onderdelen weer.

  6. Selecteer een aanbeveling om betrokken resources weer te geven.

    Schermopname van het selecteren van een aanbeveling op de pagina Resourcegezondheid.

  7. Selecteer het tabblad Actie ondernemen om herstelopties te controleren.

    Schermopname van het tabblad Actie ondernemen, gebruikt om herstelstappen voor een aanbeveling weer te geven.

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:

  1. Meld u aan bij de Azure-portal.

  2. Ga naar Microsoft Defender voor Cloud>Omgevingsinstellingen.

  3. Selecteer het betreffende abonnement.

  4. Selecteer Beveiligingsbeleid.

    Schermopname van de pagina Beveiligingsbeleid.

  5. Selecteer op het tabblad Standaarden de relevante beveiligingsstandaard.

  6. Selecteer het 3-punts menu van de relevante beleidstoewijzing en selecteer Effect en parameters beheren.

    Schermopname van het selecteren van het 3-puntjesmenu en vervolgens Effect en parameters beheren selecteren.

  7. Werk de vereiste parameterwaarden bij.

    Schermopname van het deelvenster Parameters.

  8. 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:

  1. Meld u aan bij de Azure-portal.

  2. Ga naar Microsoft Defender voor Cloud>Aanbevelingen.

  3. Zoek en selecteer de relevante aanbeveling voor gegevensvlak verharding.

  4. Selecteer Weigeren op het tabblad Actie ondernemen.

    Schermafbeelding met de optie Weigeren voor Azure Policy parameter.

  5. Stel het bereik in.

  6. 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