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.

Uw workloadbeveiliging instellen

Microsoft Defender voor Cloud bevat een bundel aanbevelingen die beschikbaar zijn zodra u de Azure Policy voor Kubernetes.

Vereisten

Kubernetes-gegevensvlakbeveiliging inschakelen

U kunt Azure Policy voor Kubernetes op twee manieren inschakelen:

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:

  1. Meld u aan bij de Azure-portal.

  2. Navigeer naar Microsoft Defender voor Cloud> Omgevingsinstellingen.

  3. Selecteer het betreffende abonnement.

  4. Controleer op de pagina Defender-abonnementen of Containers is ingeschakeld.

  5. Selecteer Instellingen.

    Screenshot showing the settings button in the Defender plan.

  6. Schakel op de pagina Instellingen & Bewaking de optie 'Azure Policy for Kubernetes' in op Aan.

    Screenshot showing the toggles used to enable or disable the extensions.

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 azure Policy voor Kubernetes handmatig configureren op bestaande Kubernetes-clusters via de Aanbevelingen pagina. 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 Kubernetesimplementerenin opgegeven clusters:

  1. Zoek op de pagina met aanbevelingen naar de relevante aanbeveling:

    • 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 en on-premises - "Azure Arc-enabled Kubernetes clusters should have the Azure policy extension for Kubernetes extension installed". Screenshot showing the Azure Kubernetes service clusters recommendation.

      Tip

      De aanbeveling is opgenomen in verschillende beveiligingscontroles en maakt niet uit welke u in de volgende stap selecteert.

  2. Selecteer in een van de beveiligingsbesturingselementen de aanbeveling om de resources te zien waarop u de invoegtoepassing kunt installeren.

  3. Selecteer het relevante cluster en selecteer Herstellen.

    Screenshot that shows how to select the cluster to remediate.

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.

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:

  1. Meld u aan bij de Azure-portal.

  2. Navigeer naar Microsoft Defender voor Cloud> Omgevingsinstellingen.

  3. Selecteer het betreffende abonnement.

  4. Selecteer Beveiligingsbeleid in het menu van Defender voor Cloud.

  5. Selecteer de relevante opdracht. De standaardtoewijzing is ASC default.

  6. Open het tabblad Parameters en wijzig de waarden naar behoefte.

    Screenshot showing where to modify the parameters for one of the recommendations in the Kubernetes data plane hardening protection bundle.

  7. Selecteer Beoordelen en opslaan.

  8. Selecteer Opslaan.

Een van de aanbevelingen afdwingen:

  1. Open de pagina met aanbevelingsgegevens en selecteer Weigeren:

    Screenshot showing the Deny option for Azure Policy parameter.

    Het deelvenster voor het instellen van het bereik wordt geopend.

  2. Stel het bereik in en selecteer Wijzigen om te weigeren.

Als u wilt zien welke aanbevelingen van toepassing zijn op uw clusters:

  1. Open de pagina assetinventaris van Defender voor Cloud en stel het resourcetypefilter in op Kubernetes-services.

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

Screenshot showing where to view the affected pods for a Kubernetes recommendation.

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: