Share via


Härdning av Kubernetes-dataplan

Den här sidan beskriver hur du använder Microsoft Defender för molnet uppsättning säkerhetsrekommendationer som är dedikerade till Kubernetes dataplanshärdning.

Dricks

En lista över säkerhetsrekommendationer som kan visas för Kubernetes-kluster och -noder finns i avsnittet Containerrekommendationer i referenstabellen för rekommendationer.

Konfigurera arbetsbelastningsskydd

Microsoft Defender för molnet innehåller ett paket med rekommendationer som är tillgängliga när du har installerat Azure Policy för Kubernetes.

Förutsättningar

Aktivera Kubernetes dataplanshärdning

Du kan aktivera Azure Policy for Kubernetes på något av två sätt:

Aktivera Azure Policy för Kubernetes för alla aktuella och framtida kluster med hjälp av inställningar för plan/anslutningsapp

Kommentar

När du aktiverar den här inställningen installeras Azure Policy för Kubernetes-poddar i klustret. På så sätt allokeras en liten mängd cpu och minne som poddarna kan använda. Den här allokeringen kan nå maximal kapacitet, men den påverkar inte resursens övriga CPU- och minneskapacitet.

Kommentar

Aktivering för AWS via anslutningstjänsten stöds inte på grund av en begränsning i EKS som kräver att klusteradministratören lägger till behörigheter för en ny IAM-roll i själva klustret.

Aktivera för Azure-prenumerationer eller lokalt

När du aktiverar Microsoft Defender för containrar aktiveras inställningen "Azure Policy for Kubernetes" som standard för Azure Kubernetes Service och för Azure Arc-aktiverade Kubernetes-kluster i relevant prenumeration. Om du inaktiverar inställningen för den inledande konfigurationen kan du aktivera den efteråt manuellt.

Om du har inaktiverat inställningarna "Azure Policy for Kubernetes" under containerplanen kan du följa stegen nedan för att aktivera den i alla kluster i din prenumeration:

  1. Logga in på Azure-portalen.

  2. Gå till Microsoft Defender för molnet> Miljöinställningar.

  3. Välj relevant prenumeration.

  4. På sidan Defender-planer kontrollerar du att Containrar har växlats till .

  5. Välj Inställningar.

    Screenshot showing the settings button in the Defender plan.

  6. På sidan Inställningar och övervakning växlar du "Azure Policy for Kubernetes" till .

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

Aktivera för GCP-projekt

När du aktiverar Microsoft Defender för containrar i en GCP-anslutningsapp aktiveras inställningen "Azure Policy Extension for Azure Arc" som standard för Google Kubernetes Engine i det relevanta projektet. Om du inaktiverar inställningen för den inledande konfigurationen kan du aktivera den efteråt manuellt.

Om du har inaktiverat inställningarna "Azure Policy Extension for Azure Arc" under GCP-anslutningsappen kan du följa stegen nedan för att aktivera det i GCP-anslutningsappen.

Distribuera Azure Policy for Kubernetes i befintliga kluster

Du kan konfigurera Azure Policy for Kubernetes manuellt i befintliga Kubernetes-kluster via Rekommendationer sidan. När de har aktiverats blir härdningsrekommendationerna tillgängliga (vissa av rekommendationerna kräver en annan konfiguration för att fungera).

Kommentar

För AWS är det inte möjligt att göra registrering i stor skala med hjälp av anslutningsappen, men det kan installeras på alla befintliga kluster eller på specifika kluster med hjälp av rekommendationen att Azure Arc-aktiverade Kubernetes-kluster ska ha Azure-principtillägget för Kubernetes-tillägget installerat.

Så här distribuerar du Azure Policy for Kubernetestill angivna kluster:

  1. Från sidan med rekommendationer söker du efter relevant rekommendation:

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

      Dricks

      Rekommendationen ingår i olika säkerhetskontroller och det spelar ingen roll vilken du väljer i nästa steg.

  2. Från någon av säkerhetskontrollerna väljer du rekommendationen för att se de resurser som du kan installera tillägget på.

  3. Välj det relevanta klustret och välj Åtgärda.

    Screenshot that shows how to select the cluster to remediate.

Visa och konfigurera paketet med rekommendationer

Ungefär 30 minuter efter att Installationen av Azure Policy for Kubernetes har slutförts visar Defender för molnet klustrens hälsostatus för följande rekommendationer, var och en i relevant säkerhetskontroll enligt följande:

Kommentar

Om du installerar Azure Policy for Kubernetes för första gången visas dessa rekommendationer som nya tillägg i listan med rekommendationer.

Dricks

Vissa rekommendationer har parametrar som måste anpassas via Azure Policy för att kunna använda dem effektivt. Om du till exempel vill dra nytta av rekommendationen att Containeravbildningar endast ska distribueras från betrodda register måste du definiera dina betrodda register. Om du inte anger de parametrar som krävs för de rekommendationer som kräver konfiguration visas dina arbetsbelastningar som felaktiga.

Rekommendationsnamn Säkerhetskontroll Konfiguration krävs
Cpu- och minnesgränser för containrar ska tillämpas Skydda program mot DDoS-angrepp Ja
Containeravbildningar ska endast distribueras från betrodda register Åtgärda sårbarheter Ja
Minst privilegierade Linux-funktioner ska tillämpas för containrar Hantera åtkomst och behörigheter Ja
Containrar bör endast använda tillåtna AppArmor-profiler Åtgärda säkerhetskonfigurationer Ja
Tjänster bör endast lyssna på tillåtna portar Begränsa obehörig nätverksåtkomst Ja
Användningen av värdnätverk och portar bör begränsas Begränsa obehörig nätverksåtkomst Ja
Användning av poddars HostPath-volymmonteringar bör begränsas till en känd lista Hantera åtkomst och behörigheter Ja
Container med behörighetseskalering bör undvikas Hantera åtkomst och behörigheter Nej
Containrar som delar känsliga värdnamnområden bör undvikas Hantera åtkomst och behörigheter Nej
Oföränderligt (skrivskyddat) rotfilsystem ska tillämpas för containrar Hantera åtkomst och behörigheter Nej
Kubernetes-kluster bör endast vara tillgängliga via HTTPS Kryptera data under överföring Nej
Kubernetes-kluster bör inaktivera automatisk inmontering av API-autentiseringsuppgifter Hantera åtkomst och behörigheter Nej
Kubernetes-kluster bör inte använda standardnamnområdet Implementera bästa praxis för säkerhet Nej
Kubernetes-kluster bör inte bevilja CAPSYSADMIN-säkerhetsfunktioner Hantera åtkomst och behörigheter Nej
Privilegierade containrar bör undvikas Hantera åtkomst och behörigheter Nej
Du bör undvika att köra containrar som rotanvändare Hantera åtkomst och behörigheter Nej

För rekommendationer med parametrar som behöver anpassas måste du ange parametrarna:

Så här anger du parametrarna:

  1. Logga in på Azure-portalen.

  2. Gå till Microsoft Defender för molnet> Miljöinställningar.

  3. Välj relevant prenumeration.

  4. Välj Säkerhetsprincip på Defender för molnet meny.

  5. Välj relevant tilldelning. Standardtilldelningen är ASC default.

  6. Öppna fliken Parametrar och ändra värdena efter behov.

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

  7. Välj Granska + spara.

  8. Välj Spara.

Så här framtvingar du någon av rekommendationerna:

  1. Öppna sidan med rekommendationsinformation och välj Neka:

    Screenshot showing the Deny option for Azure Policy parameter.

    Fönstret för att ange omfånget öppnas.

  2. Ange omfånget och välj Ändra för att neka.

Så här ser du vilka rekommendationer som gäller för dina kluster:

  1. Öppna Defender för molnet tillgångsinventeringssida och ange filtret för resurstyp till Kubernetes-tjänster.

  2. Välj ett kluster för att undersöka och granska tillgängliga rekommendationer för det.

När du visar en rekommendation från arbetsbelastningsskyddsuppsättningen visas antalet berörda poddar ("Kubernetes-komponenter") tillsammans med klustret. Om du vill ha en lista över de specifika poddarna väljer du klustret och väljer sedan Vidta åtgärd.

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

Om du vill testa tillämpningen använder du de två Kubernetes-distributionerna nedan:

  • Den ena är för en felfri distribution, kompatibel med paketet med arbetsbelastningsskyddsrekommendationer.

  • Den andra är för en distribution som inte är felfri och inte är kompatibel med någon av rekommendationerna.

Distribuera exemplet .yaml-filer som de är eller använd dem som referens för att åtgärda din egen arbetsbelastning.

Felfri distributionsexempel .yaml-fil

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-fil med exempel på felaktig distribution

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ästa steg

I den här artikeln har du lärt dig hur du konfigurerar Kubernetes dataplanshärdning.

För relaterat material, se följande sidor: